MySQL学习8:操作数据表(二)
2016-05-09 14:02
716 查看
接着上一篇博客,这一次我们初步了解一些MySQL数据库中的约束。
自动编号的字段,必须与主键组合使用。默认情况下,起始值为1,每次的增量为1。
例子:
CREATE TABLE tb3(
id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(30) NOT NULL
);
INSERT tb3(username) VALUES('Tom');
INSERT tb3(username) VALUES('Rose');
INSERT tb3(username) VALUES('John');
INSERT tb3(username) VALUES('James');
SHOW COUMNS FROM tb3;
SELECT * FROM tb3;
结果中显示,我们定义的自动编号字段id是按照插入的记录的多少来进行从1开始增1自动编号的。
主键约束要求:每张数据表只能存在一个主键;主键保证记录的唯一性;主键自动为NOT NULL。
AUTO_INCREMENT字段必须定义为主键,而主键不一定与AUTO_INCREMENT一起使用。
AUTO_INCREMENT字段我们不用赋值,但是主键字段可以允许自行赋值,但是不允许存在两个相同的值。
例子:
CREATE TABLE tb4(
id SMALLINT UNSIGNED PRIMARY KEY,
username VARCHAR(30) NOT NULL
);
INSERT tb4 VALUES(4,'Tom');
INSERT tb4 VALUES(22,'Rose');
SHOW COUMNS FROM tb4;
SELECT * FROM tb4;
再来测试是否可以允许插入有两个相同id字段的值的记录呢?
INSERT tb4 VALUES(22,'John');
唯一约束要求:唯一约束可以保证记录的唯一性;唯一约束的字段可以为空值(NULL);每张数据表可以存在多个
唯一约束。
例子:
CREATE TABLE tb5(
id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(30) NOT NULL UNIQUE KEY,
age TINYINT UNSIGNED
);
SHOW COLUMNS FROM tb5;
INSERT tb5(username,age) VALUES('Tom',22);
我们再次插入相同的记录:
INSERT tb5(username,age) VALUES('Tom',22);
当插入记录时,如果没有明确为字段赋值,则自动赋值为默认值。
例子(下面的1表示男,2表示女,3表示未知):
CREATE TABLE tb6(
id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(30) NOT NULL UNIQUE KEY,
sex ENUM('1','2','3') DEFAULT '3'
);
SHOW COLUMNS FROM tb6;
INSERT tb6(username) VALUES('Tom');
SELECT * FROM tb6;
例子:
CREATE TABLE tb7(
id SMALLINT UNSIGNED AUTO_INCREMENT UNIQUE KEY,
username VARCHAR(30) NOT NULL
);
SHOW COLUMNS FROM tb7;
验证了一下,确实存在。
接下来,会详细的介绍MySQL数据库的约束和操作数据表的知识。
六自动编号
AUTO_INCREMENT自动编号的字段,必须与主键组合使用。默认情况下,起始值为1,每次的增量为1。
例子:
CREATE TABLE tb3(
id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(30) NOT NULL
);
INSERT tb3(username) VALUES('Tom');
INSERT tb3(username) VALUES('Rose');
INSERT tb3(username) VALUES('John');
INSERT tb3(username) VALUES('James');
SHOW COUMNS FROM tb3;
SELECT * FROM tb3;
结果中显示,我们定义的自动编号字段id是按照插入的记录的多少来进行从1开始增1自动编号的。
七初涉主键约束
PRIMARY KEY主键约束要求:每张数据表只能存在一个主键;主键保证记录的唯一性;主键自动为NOT NULL。
AUTO_INCREMENT字段必须定义为主键,而主键不一定与AUTO_INCREMENT一起使用。
AUTO_INCREMENT字段我们不用赋值,但是主键字段可以允许自行赋值,但是不允许存在两个相同的值。
例子:
CREATE TABLE tb4(
id SMALLINT UNSIGNED PRIMARY KEY,
username VARCHAR(30) NOT NULL
);
INSERT tb4 VALUES(4,'Tom');
INSERT tb4 VALUES(22,'Rose');
SHOW COUMNS FROM tb4;
SELECT * FROM tb4;
再来测试是否可以允许插入有两个相同id字段的值的记录呢?
INSERT tb4 VALUES(22,'John');
八初涉唯一主键
UNIQUE KEY唯一约束要求:唯一约束可以保证记录的唯一性;唯一约束的字段可以为空值(NULL);每张数据表可以存在多个
唯一约束。
例子:
CREATE TABLE tb5(
id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(30) NOT NULL UNIQUE KEY,
age TINYINT UNSIGNED
);
SHOW COLUMNS FROM tb5;
INSERT tb5(username,age) VALUES('Tom',22);
我们再次插入相同的记录:
INSERT tb5(username,age) VALUES('Tom',22);
九初涉默认约束
DEFAULT当插入记录时,如果没有明确为字段赋值,则自动赋值为默认值。
例子(下面的1表示男,2表示女,3表示未知):
CREATE TABLE tb6(
id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(30) NOT NULL UNIQUE KEY,
sex ENUM('1','2','3') DEFAULT '3'
);
SHOW COLUMNS FROM tb6;
INSERT tb6(username) VALUES('Tom');
SELECT * FROM tb6;
十扩展
如果AUTO_INCREMENT和UNIQUE KEY放在一起使用就会变成了PRIMARY KEY,这是不是存在呢?例子:
CREATE TABLE tb7(
id SMALLINT UNSIGNED AUTO_INCREMENT UNIQUE KEY,
username VARCHAR(30) NOT NULL
);
SHOW COLUMNS FROM tb7;
验证了一下,确实存在。
接下来,会详细的介绍MySQL数据库的约束和操作数据表的知识。
相关文章推荐
- mysql 主从设置
- 深入浅析mysql引擎
- mysql char、varchar
- Can't connect to MySQL server on 'xxxx' (61)
- mysql常用的语句
- MySql数据库查询多级部门及其下的所有用户信息
- mysql 将时间戳直接转换成日期时间
- mysql主从配置
- mysql函数
- mysql 事件功能的开启
- MySQL最新版5.7.12安装教程(windows)
- MySql存储日期为long型,判断时间大小
- mysql-关于Unix时间戳(unix_timestamp)
- Mysql:Forcing close of thread 756 user: 'root' 的解决
- mysql笔记
- Mysql细节
- mysql 杂记
- 修改mysql的默认字符集
- Mac 安装mysql
- MySQL存储引擎中的MyISAM和InnoDB区别详解