表
- name:字段名
- type:类型
- default:默认值
- comment :设置注释
- 约束:
- 主键约束(不重复且不为null):primary key
- 1.创建一个表
- 2.插入数据
- 3.主键约束字段插入重复数据
- 4.主键约束字段插入null
- 外键约束
- unique
- not null
- check
- 注意
创建表的语句
create table name (
name type default 约束 comment ,
name type default 约束 comment ,
…
…
…
)
name:字段名
- 一般情况下,如果有多个单词构成,用下划线间隔
type:类型
- int :整数类型
- double(5,2) :长度为5位保留2位小数
- char :长度不变 UUID 手机号 身份证号
- varchar :长度不确定 姓名
- blob :电影,图片
- clob :小说
default:默认值
- 添加数据的时候如果不指定值,则使用默认值
comment :设置注释
- 为字段设置相关的注释,用于解释说明字段作用
约束:
- 主键:不重复且不为null
- unique:不重复,但可以多个null
- not null
- 外键:foreign key(name) references table_name(name)——保证数据完整性,不会产生无用的垃圾数据
- check:MySQL数据不支持
主键约束(不重复且不为null):primary key
1.创建一个表
创建一个test表表中字段id,设置为主键约束
#创建一个test表
create table test(
# 字段id设置为主键约束
id int(11) primary key,
user_name varchar(12) unique,
password varchar(15) not null
)
2.插入数据
向test表中的插入三条数据,id不为null且不重复
#向test表中插入三条数据
insert into test (id,user_name,password) values (1,'admin','123')
insert into test (id,user_name,password) values (2,'zhangsan','abc')
insert into test (id,user_name,password) values (3,'lisi','123456')
插入成功
3.主键约束字段插入重复数据
向表中插入重复的id
#表中已经存在一个id=2的数据
insert into test (id,user_name,password) values (2,'wangwu','111')
报错
insert into test (id,user_name,password) values (2,'wangwu','111')
> 1062 - Duplicate entry '2' for key 'PRIMARY'
> 时间: 0.001s
数据库中并没有成功插入数据
4.主键约束字段插入null
# 向表中插入id=null的数据
insert into test (id,user_name,password) values (null,'zhaoliu','2222')
报错
insert into test (id,user_name,password) values (null,'zhaoliu','2222')
> 1048 - Column 'id' cannot be null
> 时间: 0.001s
数据库中没有成功插入数据
外键约束
- foreign key(name) references table_name(name)——保证数据完整性,不会产生无用的垃圾数据
unique
不重复,但可以多个null
使用前面创建的test表
- 由于user_name的约束位unique,所以如果这里如果插入的数据的user_name相同,则只能插入第一条数据。
insert into test (id,user_name,password) values (4444,'admin','admin')
报错
insert into test (id,user_name,password) values (4444,'admin','admin')
> 1062 - Duplicate entry 'admin' for key 'user_name'
> 时间: 0.022s
- 这里可以插入多个user_name为null的数据
insert into test (id,user_name,password) values (555,null,'123456')
insert into test (id,user_name,password) values (666,null,'123456')
insert into test (id,user_name,password) values (777,null,'123456')
结果
not null
数据不能为null
使用前面创建的test表
- 插入数据
insert into test (id,user_name,password) values (999,'Jim',null)
报错
insert into test (id,user_name,password) values (999,'Jim',null)
> 1048 - Column 'password' cannot be null
> 时间: 0.001s
check
- MySQL数据不支持
注意
这里需要注意 关键字:null , 字符串:‘null’, 空字符串:’’, 空格字符串:’ '他们之间的区别