创建表
默认值 default
create table t_student(no int,namecode int,name varchar(255),sex char(1) default 1, --赋默认值birthday date);
约束(Constratint)
| 非空约束 | not null | 字段不可为空。 |
|---|---|---|
| 唯一约束 | unique | 字段不可重复, 但可以为空。 |
| 主键约束(PK) | primary key | 字段既不能为空,也不可重复。 |
| 外键约束(FK) | foreign key | 外键可为空。 |
| 检查约束 | check | Oracle数据库有check约束,mysql不支持。 |
drop table if exists t_student;
create table t_student
(
no int,
namecode int not null, --非空约束
name varchar(255) unique --唯一性约束,列级唯一约束
);
多列添加唯一约束(表级唯一约束)
drop table if exists t_student;
create table t_student
(
no int,
namecode int,
name varchar(255),
unique(usercode, username) --多列唯一约束,表级唯一约束
);
主键约束
drop table if exists t_student;
create table t_student
(
no int primary key, --主键约束,列级主键约束
name varchar(255)
);
drop table if exists t_student;
create table t_student
(
no int not null,
name varchar(255),
primary key(no) --主键约束,表级主键约束
);
主键值自增 auto_increment
drop table if exists t_student;
create table t_student
(
no int primary key auto_increment, --字段自动维护一个自增数字,从1开始,以1递增
name varchar(255)
);
insert into t_student(namecode) values('zhangsan');
insert into t_student(namecode) values('lisi');
insert into t_student(namecode) values('wangwu');
外键约束
t_student中的classno字段引用t_class表中的cno字段,此时t_student表叫做子表,t_class叫做父表。
创建表的时候,先创建父表,再创建子表。
删除表的时候,先删除子表,再删除父表。
添加数据的时候,先添加父表,再添加子表。
删除数据的时候,先删除子表,再删除父表。
外键可以为NULL。
外键字段引用其他表的某个字段的时候,被引用的字段可以不为主键,但是必须有unique唯一约束。
drop table if exists t_student;
drop table if exists t_class;
create table t_class
(
cno int,
cname varchar(255),
primary key(cno)
);
create table t_student
(
sno int,
sname varchar(255),
classno int,
primery key(sno),
foreign key(classno) references t_class(cno)
);
修改表
增加表字段
alter table tablename add [cloumn] cloumn_definition [first | after col_name];
alter table [table name] add column [column] int;
alter table emp add birth date after ename; --在ename字段后面新增字段birth
删除表字段
alter table tablename drop [cloumn] col_name;
alter table [table name] drop column [column];
修改字段类型
alter table tablename modify [cloumn] cloumn_definition [first | after col_name];
alter table [table name] modify [column] varchar(20);
alter table emp modify age1 int first; --修改字段age1,将它放在最前面
修改字段名
alter table tablename change [cloumn] old_col_name cloumn_definition [first | after col_name];
alter table [table name] change [old_column] [new_column] int;
修改表名
alter table [table name];
