我们给字段设置默认值的做法,就是默认约束。验证如下:
(1)创建一个表
- CREATE TABLE demo.importhead
- (
- listnumber INT,
- --我们在字段importype定义为INT类型的后面,加了默认值1。
- importtype INT DEFAULT 1,
- quantity DECIMAL(10,3),
- recordingdate DATETIME
- );
(2) 插入数据,不给默认字段添加
- INSERT INTO demo.importhead
- (
- listnumber,
- -- 这里我们没有插入字段importtype的值
- quantity,
- recordingdate
- )
- VALUES
- (
- 3456,
- 10.23,
- '2020-12-10'
- );
(3)查询数据
-
- SELECT * FROM demo.importhead
结果:字段 importtype 的值已经是 1 ,我们实现了将字段的默认值定义为 1 的目的。
主键约束是在表中定义一个主键来唯一确定表中每一行数据的标识符。验证如下:
(1)创建一个表
- CREATE TABLE demo.goodsmaster
- (
- barcode TEXT,
- goodsname TEXT,
- price DOUBLE,
- itemnumber INT PRIMARY KEY AUTO_INCREMENT
- );
(2)插入数据
- INSERT INTO demo.goodsmaster( barcode, goodsname, price)VALUES ( '0001', '书', 0.47);
- INSERT INTO demo.goodsmaster( barcode, goodsname, price)VALUES ( '0002', '笔', 0.44);
- INSERT INTO demo.goodsmaster( barcode, goodsname, price)VALUES ( '0003', '笔', 0.19);
(3) 查询表结构和数据
- DESCRIBE demo.goodsmaster;
- SELECT * from demo.goodsmaster;
(4)结论:如果某字段设置为主键且自动增加,那这个字段的值唯一,有新数据插入后该字段的值递增。
待补充
非空约束表示字段值不能为空。验证如下:
(1)创建表
- CREATE TABLE demo.test3
- (
- apple INT NOT NULL,
- price DECIMAL(10,3)
- );
(2)插入数据
INSERT INTO demo.test3( apple, price) VALUES ( 1, 3.19);
(3)查看表结构和数据
- DESCRIBE demo.test3;
- SELECT * FROM demo.test3;
(4)再次插入数据,apple字段为空
(5)结论:指明某个字段非空,那么添加数据的时候,这个字段必须有值,否则系统就会提示错误。
唯一性约束表示这个字段的值不能重复,否则系统会提示错误。跟主键约束相比,唯一性约束要更加弱一些。验证如下:
(1)创建表
- CREATE TABLE test4
- (
- id INT(11) PRIMARY KEY,
- name VARCHAR(22) UNIQUE,
- location VARCHAR(50)
- );
(2)插入数据
INSERT INTO demo.test4( id, name,location) VALUES (3,'weibo','charchar');
(3)查看表结构和数据
- desc test4;
- SELECT * FROM demo.test4;
(4) 总结:在一个表中,我们可以指定多个字段满足唯一性约束,而主键约束则只能有一个。满足主键约束的字段,自动满足非空约束,但是满足唯一性约束的字段,则可以是空值。