primary key 主键
用法①
create table 表名(
字段1 类型 primary kry,--id是主键
字段2 类型 ,
..........
)
用法②
create table 表名(
字段1 类型,--id是主键
字段2 类型 ,
..........,
primary key(字段1)
)
1.主键列的值不可以重复 且不可以为null
2.一张表只能有一个主键
3.使用desc 表名 语句可以查看主外键情况
复合主键(字段1+字段2 做成一个复合主键)
create table 表名(
字段1 类型 ,--id是主键
字段2 类型 ,
字段3 类型 ,
primary key(字段1,字段2)--复合主键 要俩字段同时一样才会违反主键约束
)
not null 非空
定义了not null的列不可为空
unique 唯一
定义了该约束后 该列值不可以重复
细节:1.只指定unique 没指定not null 则unique字段可以有多个null
2.一张表可以有多个unique字段
3.not null + unique 效果等价于主键
foreign key references (关联字段)外键
先创建主表
create table 主表1(
字段1 类型0 primary key,
字段2 类型,
字段3 类型,
......
)
再建从表
create table 从表2(
字段4 类型 primary key,
字段5 类型0,
字段6 类型,
......,
foreign key(主表1)references 主表1(字段1)
)
用于定义主表和从表之间的关系:外键约束要定义在从表上,主表则必须具有主键约束
或是unique约束.当定义外键约束后,要求外键列数据必须在主表的主键列存在或是
为null
check
1.用于强制行数据必须满足的条件.假定在sal列上定义了check约束,并
要求sal列值在1000~2000之间如果不再1000~2000之间就会提示出错。
💫 oracle和sql server 均支持check ,但是mysql5.7目前还不支持check ,只做
语法校验,但不会生效。
语法:字段名 类型 check (check条件)
user表
id, name,sex(man,woman), sal(大于100小于900)
在mysql中实现check的功能,一般是在程序中控制,或者通过触发器完成。
create table 表名1(
字段1 类型,
字段2 类型 check(字段2 in ('11','22')) 字段2 只能是11 或者22
字段3 类型 check(字段3<100 and 字段3>0) 字段3只能在0~100之间
)
自增长identity(1,1)1开始 一次增长1【sqlserver的自增长】
自增长 auto_increment
自增长字段新增
1.字段直接填null
2.insert into 表名(字段2,字段3,字段4,...)values(值2,值3,值4,...) 字段1是自增长 不写
3.全字段都写上 自增长项的值写null 【好无聊啊这个写法😓】
自增长细节
1.一般来说自增长是和primary key 配合使用的
2.自增长也可以单独使用 [但是需要配合一个unique]
3.自增长修饰的字段为整数型的 (虽然小数也可以但是非常非常少这样使用)
4.自增长默认从1开始,你也可以通过如下命令修改alter table 表名 auto_increment = 新的开始值
5.如果添加数据时,给自增长的字段添加了值,则以添加时指定的值为准,并且下一个字段的自增长会
以该值为开始值【自增长时以当前字段所有值的最大值为开始值,如果给定的值比最大值小 则会自动
排序放到对应大小的位置】
建议:设置了自增长 就按照自增长的规则添加 不要自己定值