主键
use db_imist;
CREATE TABLE test_prinary_key(
id INT UNSIGNED PRIMARY KEY,
username VARCHAR(20)
);
desc test_prinary_key;
INSERT test_prinary_key(id,username) VALUES(1,'imist');
INSERT test_prinary_key(username) VALUES('tom');
INSERT test_prinary_key(id,username) VALUES(1,'tom');
CREATE TABLE test_prinary_key2(
id INT UNSIGNED PRIMARY KEY,
courceId INT UNSIGNED PRIMARY KEY,
username VARCHAR(20)
);
CREATE TABLE test_prinary_key3(
id INT UNSIGNED,
courceId VARCHAR(20),
username VARCHAR(20),
email VARCHAR(50),
PRIMARY KEY (id,courceId)
);
INSERT test_prinary_key3(id, courceId, username, email) VALUES(1,'a','imist','az460024285@qq.com') ;
INSERT test_prinary_key3(id, courceId, username, email) VALUES(1,'b','imist','az460024285@qq.com') ;
INSERT test_prinary_key3(id, courceId, username, email) VALUES(2,'a','imist','az460024285@qq.com') ;
INSERT test_prinary_key3(id, courceId, username, email) VALUES(1,'a','imist','az460024285@qq.com') ;
select * FROM test_prinary_key3;
CREATE TABLE test_auto_increment(
id INT UNSIGNED AUTO_INCREMENT,
username VARCHAR(20)
);
CREATE TABLE test_auto_increment(
id INT UNSIGNED KEY AUTO_INCREMENT,
username VARCHAR(20)
);
DESC test_auto_increment;
INSERT test_auto_increment(username) VALUES ('iMist');
INSERT test_auto_increment(username) VALUES ('Tom');
INSERT test_auto_increment(username) VALUES ('Qiang');
INSERT test_auto_increment(username) VALUES ('Gang');
SHOW CREATE TABLE test_auto_increment;
INSERT test_auto_increment(id,username) VALUES (100,'小雾');
INSERT test_auto_increment(username) VALUES ('小赖');
INSERT test_auto_increment(id,username) VALUES (NULL ,'小人');
INSERT test_auto_increment(id,username) VALUES (DEFAULT ,'小可');
INSERT test_auto_increment(id,username) VALUES ('' ,'小可');
SHOW CREATE TABLE test_auto_increment;
SELECT * FROM test_auto_increment;
CREATE TABLE test_not_null(
a VARCHAR(20),
b VARCHAR(20) NOT NULL
);
desc test_not_null;
Show CREATE TABLE test_not_null;
INSERT test_not_null(a,b) VALUES ('','');
INSERT test_not_null(a,b) VALUES (null ,null );
INSERT test_not_null(a,b) VALUES (null ,'' );
INSERT test_not_null(a,b) VALUES (null ,'abc' );
INSERT test_not_null(a) VALUES ('abc');
SELECT * FROM test_not_null;
CREATE TABLE test_default(
id INT UNSIGNED AUTO_INCREMENT KEY ,
username VARCHAR(20) NOT NULL ,
age TINYINT UNSIGNED DEFAULT 18,
email VARCHAR(50) NOT NULL DEFAULT '462541258@qq.com'
);
DESC test_default;
INSERT test_default (username) VALUES('iMist');
INSERT test_default (username, age, email) VALUES ('Tom',20,'4600202585@qq.com');
INSERT test_default (username, age, email) VALUES ('jony',null ,'4600202585@qq.com');
INSERT test_default (username, age, email) VALUES ('jony',20 ,null );
INSERT test_default (username, age, email) VALUES ('jony',20 ,DEFAULT );
INSERT test_default (username, age, email) VALUES ('jony',20 ,'' );
INSERT test_default (username, age, email) VALUES (DEFAULT ,20 ,'4600202585@qq.com' );
SELECT * FROM test_default;
CREATE TABLE test_default1(
id INT UNSIGNED AUTO_INCREMENT KEY ,
sex ENUM('a','b','c') NOT NULL DEFAULT 'a'
);
desc test_default1;
INSERT test_default1(sex) VALUES (null );
INSERT test_default1(sex) VALUES ('');
INSERT test_default1(sex) VALUES (DEFAULT );
INSERT test_default1(id) VALUES (3);
SELECT * FROM test_default1;
唯一约束
use db_imist;
CREATE TABLE test_unique(
id INT UNSIGNED AUTO_INCREMENT KEY ,
username VARCHAR(20) NOT NULL UNIQUE KEY ,
email VARCHAR(50) UNIQUE ,
card CHAR(18) UNIQUE
);
INSERT test_unique (username, email, card) VALUES ('A','A@qq.com','1');
INSERT test_unique (username, email, card) VALUES ('A','462258485@qq.com','2');
INSERT test_unique (username, email, card) VALUES ('B',NULL ,NULL );
INSERT test_unique (username, email, card) VALUES ('C',NULL ,NULL );
SELECT * FROM test_unique;
DROP TABLE IF EXISTS table_user ;
CREATE TABLE IF NOT EXISTS `table_user`(
`id` INT UNSIGNED AUTO_INCREMENT KEY COMMENT '用户编号',
`username` VARCHAR(20) NOT NULL UNIQUE COMMENT '用户名',
`password` CHAR(32) NOT NULL COMMENT '密码',
`email` VARCHAR(50) NOT NULL COMMENT '邮箱',
`age` TINYINT UNSIGNED NOT NULL DEFAULT 18 COMMENT '年龄',
`sex` ENUM('男','女','保密') NOT NULL DEFAULT '保密' COMMENT '性别',
`tel` CHAR(11) NOT NULL UNIQUE COMMENT '电话',
`addr` VARCHAR(50) NOT NULL DEFAULT '北京' COMMENT '地址',
`card` CHAR(18) NOT NULL UNIQUE COMMENT '身份证号',
`marry` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '0 代表未结婚,1代表已结婚',
`salary` FLOAT(8,2) NOT NULL DEFAULT 0 COMMENT '薪水'
)ENGINE = INNODB DEFAULT CHARSET = UTF8;
DESC `table_user`;
SHOW CREATE TABLE `table_user`;
总结:
- 唯一约束的KET关键字可以省略,NULL值是可以重复的
数据库名
,表名
,字段名
等用户自定义名称用``包裹,可以防止关键词冲突- COMMENT ‘字段备注或者注释’