-- 1:通過修改表結(jié)構(gòu)添加主鍵
/*
? create table 表名(
? ? ...
? );
? alter table <表名> add primary key(字段列表);
*/
use mydb1;
-- 添加單列主鍵
create table emp4(
? eid int,
? name varchar(20),
? deptId int,
? salary double
);
alter table emp4 add primary key(eid);
-- 添加多列主鍵
create table emp5(
? eid int,
? name varchar(20),
? deptId int,
? salary double
);
alter table emp5 add primary key(name, deptId);
-- 刪除主鍵
-- 1.刪除單列主鍵
alter table emp1 drop primary key;
-- 2.刪除多列主鍵
alter table emp5 drop primary key;
use mydb1;
-- 自增正約束
create table t_user1 (
? id int primary key auto_increment,
? name varchar(20)
);
insert into t_user1 values(NULL,'張三');
insert into t_user1(name) values('李四');
delete from t_user1;? -- delete刪除數(shù)據(jù)之后,自增長還是在最后一個(gè)值基礎(chǔ)上加1
insert into t_user1 values(NULL,'張三');
insert into t_user1(name) values('李四');
truncate t_user1; -- truncate刪除之后逞壁,自增長從1開始
insert into t_user1 values(NULL,'張三');
insert into t_user1(name) values('李四');
-- 指定自增長的初始值
-- 方式一:創(chuàng)建表時(shí)指定
create table t_user2 (
? id int primary key auto_increment,
? name varchar(20)
)auto_increment = 100;
insert into t_user2 values(NULL,'張三');
insert into t_user2 values(NULL,'張三');
delete from t_user2;
insert into t_user2 values(NULL,'張三');
insert into t_user2 values(NULL,'張三');
truncate t_user2; -- truncate刪除之后流济,自增長從1開始
insert into t_user2 values(NULL,'張三');
insert into t_user2 values(NULL,'張三');
-- 方式二:創(chuàng)建表之后指定
create table t_user3 (
? id int primary key auto_increment,
? name varchar(20)
);
alter table t_user3 auto_increment = 200;
insert into t_user3 values(NULL,'張三');
insert into t_user3 values(NULL,'張三');
-- 非空約束
/*
MySQL 非空約束(NOT? NULL)指字段的值不能為空。對于使用了非空約束的字段腌闯,如果用戶在添加數(shù)據(jù)時(shí)沒有指定值绳瘟,數(shù)據(jù)庫系統(tǒng)就會報(bào)錯(cuò)。
*/
-- 格式
/*
方式1:<字段名><數(shù)據(jù)類型> not null;
方式2:alter table 表名 modify 字段 類型 not null;
*/
use mydb1;
-- 1. 創(chuàng)建非空約束-方式1姿骏,創(chuàng)建表時(shí)指定
create table mydb1.t_user6 (
? id int ,
? name varchar(20)? not null,? -- 指定非空約束
? address varchar(20) not null? -- 指定非空約束
);
insert into t_user6(id) values(1001); -- 不可以
insert into t_user6(id,name,address) values(1001,NULL,NULL); -- 不可以
insert into t_user6(id,name,address) values(1001,'NULL','NULL'); -- 可以(字符串:NULL)
insert into t_user6(id,name,address) values(1001,'',''); -- 可以(空串)
-- 2.創(chuàng)建非空約束-方式2糖声,創(chuàng)建表之后指定
create table t_user7 (
? id int ,
? name varchar(20) ,? -- 指定非空約束
? address varchar(20)? -- 指定非空約束
);
alter table t_user7 modify name varchar(20) not null;
alter table t_user7 modify address varchar(20) not null;
desc t_user7;
-- 3.刪除非空約束
-- alter table 表名 modify 字段 類型
alter table t_user7 modify name varchar(20) ;
alter table t_user7 modify address varchar(20) ;
-- 唯一約束
/*
唯一約束(Unique Key)是指所有記錄中字段的值不能重復(fù)出現(xiàn)。例如分瘦,為 id 字段加上唯一性約束后蘸泻,每條記錄的 id 值都是唯一的,不能出現(xiàn)重復(fù)的情況嘲玫。
*/
-- 語法:
/*
方式1:<字段名> <數(shù)據(jù)類型> unique
方式2:alter table 表名 modify 字段 類型 not null;
*/
use mydb1;
-- 1. 添加唯一約束-方式1-創(chuàng)建表時(shí)指定
create table t_user8 (
id int ,
name varchar(20) ,
phone_number varchar(20) unique? -- 指定唯一約束
);
insert into t_user8 values(1001,'張三',138);
insert into t_user8 values(1002,'張三2',139);
insert into t_user8 values(1003,'張三3',NULL);
insert into t_user8 values(1004,'張三4',NULL);? -- 在MySQL中NULL和任何值都不相同 甚至和自己都不相同
-- 2. 添加唯一約束-方式1-創(chuàng)建表之后指定
-- 格式:alter table 表名 add constraint 約束名 unique(列);
create table t_user9 (
? id int ,
? name varchar(20) ,
? phone_number varchar(20) -- 指定唯一約束
);
alter table t_user9 add constraint unique_pn unique(phone_number);
insert into t_user9 values(1001,'張三',138);
insert into t_user9 values(1002,'張三2',138);
-- 3. 刪除唯一約束
-- 格式:alter table <表名> drop index <唯一約束名>;
alter table t_user9 drop index unique_pn;
-- 默認(rèn)約束
-- 1.創(chuàng)建默認(rèn)約束
/*
方式1: <字段名> <數(shù)據(jù)類型> default <默認(rèn)值>;
方式2: alter table 表名 modify 列名 類型 default 默認(rèn)值;
*/
use mydb1;
-- 方式1-創(chuàng)建表時(shí)指定
create table t_user10 (
? id int ,
? name varchar(20) ,
? address varchar(20) default '北京' -- 指定默認(rèn)約束
);
insert into t_user10(id,name,address) values(1001,'張三','上海');
insert into t_user10 values(1002,'李四',NULL);
-- 方式2-創(chuàng)建表之后指定
-- alter table 表名 modify 列名 類型 default 默認(rèn)值;
create table t_user11 (
? id int ,
? name varchar(20) ,
? address varchar(20)?
);
alter table t_user11 modify address varchar(20) default '深圳';
insert into t_user11(id,name) values(1001,'張三');
-- 2.刪除默認(rèn)約束
-- alter table <表名> change column <字段名> <類型> default null;
alter table t_user11 modify address varchar(20) default null;
insert into t_user11(id,name) values(1002,'李四');
-- 零填充約束(zerofill)
-- 1. 添加約束
create table t_user12 (
? id int zerofill? , -- 零填充約束
? name varchar(20)?
);
insert into t_user12 values(123, '張三');
insert into t_user12 values(1, '李四');
insert into t_user12 values(2, '王五');
-- 2.刪除約束
alter table t_user12 modify id int;
-- 總結(jié)
-- 1:通過修改表結(jié)構(gòu)添加主鍵約束
create table emp4(
? eid int primary key,
? name varchar(20),
? deptId int,
? salary double
);
-- 2:添加自增正約束
create table t_user1 (
? id int primary key auto_increment,
? name varchar(20)
);
-- 3:創(chuàng)建非空約束
create table mydb1.t_user6 (
? id int ,
? name varchar(20)? not null,? -- 指定非空約束
? address varchar(20) not null? -- 指定非空約束
);
-- 4:創(chuàng)建唯一約束
create table t_user8 (
id int ,
name varchar(20) ,
phone_number varchar(20) unique? -- 指定唯一約束
);
-- 5:創(chuàng)建默認(rèn)約束
create table t_user10 (
? id int ,
? name varchar(20) ,
? address varchar(20) default '北京' -- 指定默認(rèn)約束
);