首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

通过sql命令主外约束以及其他约束

emp_sex nchar(1), 11 dept_id int constraint fk_dept_id_b foreign key references dept(dept_id) --外约束...创建的命令后面是小括号(),而不是{}, 2. 注释用-- 3....主键外可以命名,不然就是默认的名字 7....写完后,鼠标左键选中整个代码,分析、执行,最后生成 什么是约束constraint: 对一个中的属性操作的限制 分类: 主键约束:不允许重复元素,避免数据的冗余 外约束:通过外约束,从语法上保证了本事物所关联的其他事物一定是存在的...事物和事物之间的关系是通过外来体现的 check约束:保证事物属性的取值在合法的范围之内 1 create table student 2 ( 3 stu_id int primary key

95220

oracle主键、外基本语法

主键:唯一标识,不能为空,加快查询速度,自动创建索引 外:约束内的数据的更新,从定义外时可以发现 外是和主键联系,数据类型要统一,长度(存储大小)要统一。...这样在更新数据的时候会保持一致性 -创建表格语法: create table 名( 字段名1 字段类型(长度) 是否为空, 字段名2 字段类型 是否为空...); -增加主键 alter table 名 add constraint 主键名 primary key (字段名1); -增加外: alter table 名...add constraint 外键名 foreign key (字段名1) references 关联 (字段名2); 在建立表格时就指定主键和外 create table...varchar2(8) not null, constraint PK_T_STU primary key (STU_ID) ); 主键和外一起建立

3.1K50
您找到你想要的搜索结果了吗?
是的
没有找到

【数据库】MySQL进阶一、主外讲解

MySQL进阶主外讲解 1.什么是外: 主键:是唯一标识一条记录,不能有重复的,不允许为空,用来保证数据完整性 外:是另一的主键, 外可以有重复的, 可以是空值,用来和其他建立联系用的...所以说,如果谈到了外,一定是至少涉及到两张。例如下面这两张: ? 上面有两张:部门(dept)、员工(emp)。...所以说,外一定是在从中创建,从而找到与主表之间的联系;从负责维护二者之间的关系。 2.外的使用需要满足下列的条件:(这里涉及到了InnoDB的概念) 1....两张必须都是InnoDB,并且它们没有临时。 注:InnoDB是数据库的引擎。MySQL常见引擎有两种:InnoDB和MyISAM,后者不支持外。 2....MyISAM:不支持外约束。不支持事务。对数据大批量导入时,它会边插入数据边索引,所以为了提高执行效率,应该先禁用索引,在完全导入后再开启索引。 InnoDB:支持外约束,支持事务。

2K70

在PowerDesigner中设计物理模型1——主外

Name是模型上显示的名称,Code是生成的实际的名,后面的3个复选框P代办主键、F代表外,M代表不能为空。...另外需要注意的是,在建立主键时,系统会在主键上建立索引,索引分为聚集索引和非聚集索引,在“属性”窗口的General选项卡中可以设置该主键上建立的索引是聚集索引还是非聚集索引,如图所示: 外 如果是由概念模型或者逻辑模型生成物理模型...,那么外是通过Relationship生成的,也可以通过工具栏中的Reference来实现两之间的外关系。...假如一个课程只会在一个固定的教室上课,而一个教室会安排多个课程在不同的时间上课,所以教室和课程是一对多的关系,那么课程中就需要添加RoomID列以形成外列,具体操作方法就是在工具栏中单击“Reference...”按钮,然后在设计面板中,课程上按下鼠标左键,并拖拽到教师表中放开鼠标,这时如果课程中没有RoomID列,系统会自动创建RoomID列并创建该列上的外引用,如果已经存在RoomID列,则只添加外引用

2K10

粗聊Mysql——你会么?

本文中说到的“”,并非单纯的一个库,或是一张,而是你建好的库和在项目的运营中,是否能应付各种事件,下面我说说几个我在项目中遇到的问题以及处理的方法,算是一个小小的心得,给大家分享下。...比如现在有2张,一张新闻栏目,一张新闻,现在两张需要进行关联,我想大多数人的做法肯定是在新闻表里一个新闻栏目id,然后把新闻栏目表里的主键ID(自增)写到这个字段里,通过这样进行两关联。   ...所以我建议两之间关联不用主键,而是单独一个编号的字段,我们这里可以用mysql的uuid()函数做为编号,相关文献可以参考《UUID做主键好还是不好》,只所以一张要2个主键,一个物理主键(自增id...至于性能,我本地测了下基本上没差异,网上也有人做了10W条数据的测试——《实测MYSQL UUID性能》。...所以我建议,既然定义为varchar,就代表不会涉及到计算,何不干脆定义一个通用的长度,比如varchar(50),如果真要限制长度,用程序去判断,不要让数据库来限制,不然用户输了一长串,结果mysql

5.2K10

Mysql实例 设计

二.设计表格 公司 公司名称 公司编号(自增主键) 电话号码 A 1001 xx B 1002 xx 广告 广告编号 有该广告的公司的编号(自增主键) 广告收费/点击一次 1 1001 2 2 1001...3 3 1002 2 点击 广告编号 该广告发送给浏览者的日期 1 101101 2 101102 1 101323 3 111232 三.查询 查都有哪些公司 直接查询公司的 公司名称 字段...select 公司名称 from 公司; 结果为A,B公司投放了广告 查A公司都放了哪些广告 先到公司,将公司名称=A的编号提取出来,然后将公司编号作为条件去广告表里找广告编号。...between 100000 and 199999; 最后做个计算即可 四.分析 结构设置 目前有3张,基本满足业务需求,但未来查询更多,需要重新设计主键位置,结构。...当数据庞大,首当其冲的是点击,可能一天有几万次记录写入,这张将变得庞大,可以考虑将根据月份进行拆分。

1.3K20

mysql常见的选项和约束

约束主要是防止非法数据进入中,保证数据的正确性和一致性,统称为数据完整性 约束也可以防止一个被删除 MySQL的约束保存在information_schema.table_constraints中...参照完整性约束,保证一个或两个之间的参照完整性,外是构建于一个的两个字段或者是两个的两个字段之间的参照关系 注意: 具有外约束的列的值不能随便给,必须满足外所引用的主键的取值 一张中可以定义多个外...外列默认可以给null值 父子表 外所在的叫做子表,从所引用的主键所在的叫做父,主表 constraint emp_deptid_fk foreign_key(deptid) references...dept(deptid) 外的删除规则 当删除父中的行时,如果子表中有依赖被删除的父行的子行存在,那么就不允许删除,并抛出异常(默认对外使用on delete restrict或on delete...Oracle中国可以使用check约束,有相应作用 mysql> create table test_ck( -> id int check(id>0) -> ); mysql

11910

mysql(入门基础了解部分,数据库的基本概念)

MySQL支持大型数据库,支持5000万条记录的数据仓库,32位系统文件最大可支持4GB,64位系统支持最大的文件为8TB。MySQL使用标准的SQL数据语言形式。...基础信息(常用信息):学号、姓名、手机号码、班级、系别档案信息(不常用信息):学号、身份证号码、家庭住址、籍贯、紧急联系人、...两种原则:外唯一:主表的主键和从的外(唯一),形成主外关系...,外唯一。...外是主键:主表的主键和从的主键,形成主外关系。  一对多关系(one-to-many) 常见实例场景:客户和订单,分类和商品,部门和员工。 举例:员工:编号、姓名、......、所属部门部门:编号、名称、简介 一对多原则:在从(多方)创建一个字段,字段作为外键指向主表(一方)的主键 多对多(many-to-many) 要表示多对多关系,必须创建第三个,该通常称为联接

84230

MySQL数据类型的选择

如果查询中包含可为 NULL 的列,对 MySQL 来说更难优化,因为可为 NULL 的列使得索引、索引统计和值比较都更复杂。特别是计划在列上索引,就应该尽量避免设计成可为 NULL 的列。...MySQL 可以为整数类型指定宽度,例如 int(11),对大多数应用这是没有意义的:它不会限制值的合法范围,只是规定了 MySQL 的一些交互工具(例如 MySQL 命令行客户端)用来显示字符的个数。...MySQL 浮点型和定点型可以用类型名称后加(M,D)来表示,M 表示该值的总共长度,D 表示小数点后面的长度。...与其它类型不同,MySQL 把每个 blob 和 text 值当作一个独立的对象处理。...枚举(enum)类型 MySQL 在内部会将每个值在列表中的位置保存为整数,并且在的 .frm 文件中保存 “数字-字符串” 映射关系的 “查找”。

5.2K10

MySQL查询操作实例

在安装完数据库后,不管是Windows 还是Linux平台,  MySQL的sql命令都大同小异,相关命令都是相同的,每个命令结束后 都以  ;  结尾,注意在Windows平台中表名是不区分大小写的,...为了一致所有的数据库名,名,列名都采用小写。为了方便简单使用了sqllog客户端工具学习。   ...在安装完数据库后会出现的几个系统数据库:   Mysql 库: 该数据库存储了系统的用户权限信息   In_formation_schema库: 该数据库存储了一些数据库对象信息。...查看该数据库下的 SHOW TABLES;   3.删除数据库 DROP DATABASE test1;   4.创建   基本语法是CREATE TABLE  tableanme (column_name...DROP TABLE emp;   6.修改 --  修改类型, 将empename字段从varchar(10)改为varchar(20) ALTER TABLE emp MODIFY ename

4.5K10

MySQL库、、增删改查语句Demo

本页目录 库语句 库 修改库字符集 指定库排序规则 当前库状态的表语句 删除库 Navicat编辑数据库时执行的SQL 表语句 添加字段 修改 修改字段 修改表字符集、排序规则 截断 删除...添加索引 一直都是用MySQL可视化工具,几乎没碰过库、等语句了。...库语句 库 -- 数据库配置文件default-character-set是utf8_mb3,则会导致创建的是utf8mb3。...我们无法人为控制,只能库完毕后执行修改库字符集或者库前修改MySQL配置 CREATE DATABASE IF NOT EXISTS `school` DEFAULT CHARACTER SET...直接执行就行,没有参数 SELECT @@character_set_database, @@collation_database 表语句 添加字段 修改 修改字段 修改表字符集、排序规则 截断

5.1K40

数据库_mysql多表操作

1.1 之间的关系 l 一对多关系: n 常见实例:客户和订单,分类和商品,部门和员工. n 一对多原则:在从(多方)创建一个字段,字段作为外键指向主表(一方)的主键. ?...l 多对多关系: n 常见实例:学生和课程、用户和角色 n 多对多关系原则:需要创建第三张,中间中至少两个字段,这两个字段分别作为外键指向各自一方的主键. ?...l 一对一关系:(了解) n 在实际的开发中应用不多.因为一对一可以创建成一张. n 两种原则: u 外唯一:主表的主键和从的外(唯一),形成主外关系,外唯一unique。...u 外是主键:主表的主键和从的主键,形成主外关系。...我们通过主表的主键和从的外来描述主外关系,呈现就是一对多关系。 外特点: u 从的值是对主表主键的引用。 u 从类型,必须与主表主键类型一致。

2.2K80

MySQL

说明 engine=innodb 设置存储引擎 charset=utf8 设置的编码 案例: create table if not exists student( studentno...有外是子表,没有外是主表,一般情况下主表的数据信息会相对于少于子表(这不是绝对的)。主要还是看有没有关联字段(外)。 设置主外关系是在子表上进行设置....主外关系的名称,一般都是全大写,以FK为前缀,多个单词之间用下划线(_)分隔。 设置完主外关系之后,子表中添加数据时的外字段中的数据在主表中必须存在,如果不存在将会引发异常。...primary key student(studentno) 外(两之间逻辑关联,降低数据冗余): 外的创建两种方式: 1) 第一种时没有指定,后期进行添加 语法: alter table...alter table student add constraint FK_GRADE_ID1 foreign key (gradeid) references grade(gradeid) 2) 第二种在建的时候指定主外关系

16220

MySQL数据库、优化、算法、分区分库分总结

一、主键设置 主键为什么不推荐有业务含义? 1、因为任何有业务含义的列都有改变的可能性,主键一旦带上了业务含义,那么主键就有可能发生变更。...什么情况下应不或少索引?...1、表记录太少 2、经常插入、删除、修改的 3、数据重复且分布平均的表字段,假如一个有10万行记录,有一个字段A只有T和F两种值,且每个值的分布概率大约为50%,那么对这种A字段索引一般不会提高数据库的查询速度...对一个包含外的InnoDB转为MYISAM会失败; InnoDB是聚集索引,数据文件是和索引绑在一起的,必须要有主键,通过主键索引效率很高。...分区中无法使用外约束 MySQL的分区适用于一个的所有数据和索引,不能只对表数据分区而不对索引分区,也不能只对索引分区而不对表分区,也不能只对表的一部分数据分区。

5.3K31
领券