MySQL----主键(PRIMARYKEY)和自增(AUTOINCREMENT)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MySQL----主键(PRIMARYKEY)和⾃增(AUTOINCREMENT)UNSIGNED------⽆符号,没有负数,从0开始
ZEROFILL-------零填充,当数据的显⽰长度不够的时候可以使⽤前补0的效果填充⾄指定长度,字段会⾃动添加UNSIGNED
NOT NULL------⾮空约束,也就是插⼊值的时候这个字段必须要给值,值不能为空
DEFAULT------默认值,如果插⼊记录的时候没有给字段赋值,则使⽤默认值
PRIMARY KEY------主键,标识记录的唯⼀性,值不能重复,⼀个表只能有⼀个主键,⾃动禁⽌为空
AUTO_INCREMENT------⾃动增长,只能⽤于数值列,⽽且配合索引使⽤,默认起始值从1开始,每次增长1
UNIQUE KEY------唯⼀性,⼀个表中可以有多个字段是唯⼀索引,同样的值不能重复,但是NULL值除外
FOREIGN KEY------外键约束
-- 测试主键
CREATE TABLE test_primary_key(
id INT UNSIGNED PRIMARY KEY,
username VARCHAR(20)
);
INSERT test_primary_key(id,username) VALUES(1,'NAME1');
INSERT test_primary_key(id,username) VALUES(1,'name2');
INSERT test_primary_key(username) VALUES('name3');
CREATE TABLE test_primary_key1(
id INT UNSIGNED KEY,
username VARCHAR(20)
);
CREATE TABLE test_primary_key2(
id INT UNSIGNED,
username VARCHAR(20),
PRIMARY KEY(id)
);
-- CREATE TABLE test_primary_key3(
-- id INT UNSIGNED PRIMARY KEY,
-- courseId INT UNSIGNED PRIMARY KEY,
-- username VARCHAR(20),
-- email VARCHAR(50)
-- );
-- 复合主键
CREATE TABLE test_primary_key3(
id INT UNSIGNED,
courseId VARCHAR(20),
username VARCHAR(20),
email VARCHAR(50),
PRIMARY KEY(id,courseId) ---<<---相当于通过id 和 courseId 都可以定位到要查询的记录
);
-- 1-a
INSERT test_primary_key3(id,courseId,username,email)
VALUES(1,1,'xiaoming','8@');
INSERT test_primary_key3(id,courseId,username,email)
VALUES(2,1,'xiaohong','71946@');
INSERT test_primary_key3(id,courseId,username,email)
VALUES(3,1,'张三','3946@');
INSERT test_primary_key3(id,courseId,username,email)
VALUES(4,1,'李四','17@');
-- 测试AUTO_INCREMENT
CREATE TABLE test_auto_increment(
id INT UNSIGNED KEY AUTO_INCREMENT,
username VARCHAR(20)
);
-- id INT UNSIGNED KEY AUTO_INCREMENT 中有AUTO_INCREMENT时⼀定要有KEY, 否则会报错.
INSERT test_auto_increment(username) VALUES('A');
INSERT test_auto_increment(username) VALUES('B');
INSERT test_auto_increment(username) VALUES('C');
INSERT test_auto_increment(id,username) VALUES(NULL,'E');
INSERT test_auto_increment(id,username) VALUES(DEFAULT,'F');
INSERT test_auto_increment(id,username) VALUES('','M');--报错, 不能为'';
INSERT test_auto_increment(id,username) VALUES(15,'G');--此刻id从15开始编号
mysql>select*from test_primary_key3;
+----+----------+----------+-------------+
| id | courseId | username | email |
+----+----------+----------+-------------+
|1|1| xiaoming |8@ |
|2|1| ?? |3946@ |
|4|1|李四|17@ |
+----+----------+----------+-------------+
3 rows in set (0.00 sec)
mysql>CREATE TABLE test_auto_increment(
-> id INT UNSIGNED KEY AUTO_INCREMENT,
-> username VARCHAR(20)
-> );
Query OK, 0 rows affected (0.01 sec)
mysql>DESC test_auto_increment;
+----------+------------------+------+-----+---------+----------------+
| Field | Type |Null|Key|Default| Extra |
+----------+------------------+------+-----+---------+----------------+
| id |int(10) unsigned | NO | PRI |NULL| auto_increment | | username |varchar(20) | YES ||NULL||
+----------+------------------+------+-----+---------+----------------+
2 rows in set (0.01 sec)
INSERT test_auto_increment(username) VALUES('A');
INSERT test_auto_increment(username) VALUES('B');
INSERT test_auto_increment(username) VALUES('C');
INSERT test_auto_increment(id,username) VALUES(NULL,'E'); INSERT test_auto_increment(id,username) VALUES(DEFAULT,'F'); INSERT test_auto_increment(id,username) VALUES(15,'G'); mysql> SELECT * FROM test_auto_increment;
+----+----------+
| id | username |
+----+----------+
| 1 | A |
| 2 | B |
| 3 | C |
| 4 | E |
| 5 | F |
| 15 | G |
+----+----------+
6 rows in set (0.00 sec)。