最近面试纷纷扰扰觉得自己数据库太差了,重新复习一遍
文章目录
1.创建表(简单略过)
create database aa;
use aa;
create table tb_employee1
(
id int(11),
name varchar(25),
deptld INT(11),
salary float
);
show tables;
2.主键约束
唯一且不能为空
1.单字段主键
1)定义列的同时指定主键
字段名 数据类型 PRIMARY KEY[默认值]
2)定义完所有列之后指定主键
[CONSTRAINT<约束名>]PRIMARY KEY[字段名]
2.多字段主键
PRIMARY KEY[字段1,字段2,…]
use aa;
create table tb_employee2
(
id int(11) primary key,
name varchar(25),
deptld int(11),
salary float
);
desc tb_employee2;
# 两种设置主键的方法相同
create table tb_employee3
(
id int(11),
name varchar(25),
deptld int(11),
salary float,
primary key(id)
);
desc tb_employee3;
3.外键约束
外键:一个表的外键可以是空值,若不为空,则每一个外键值必须等于另一个表中主键的某个值,并且类型必须一致:
CONSTRAINT<外键名> FOREIGN KEY 字段名1[字段名2,…] REFERENCES<主表名>主键列1[主键列2,…]
# 先创建部门表
create table tb_dept1
(
id int(11)primary key,
name varchar(22)not null,
location varchar(50)
);
# 再创建数据表
create table tb_employee5
(
id int(11)primary key,
name varchar(25),
deptld int(11),
salary float,
constraint fk_emp_dept1 foreign key(deptld)references tb_dept1(id)
);
desc tb_employee5;
desc tb_dept1;
4.非空约束
字段名 数据类型 not null
5.唯一性约束
1)字段名 数据类型 unique
2)定义完所有列之后指定:constraint <约束名>unique(<字段名>)
6.默认约束
字段名 数据类型 DEFAULT 默认值
7.属性值自增
字段名 数据类型 AUTO_INCREMENT
设置id是自增的,如下表只设置了name和salary
create table tb_employee6
(
id int(11)primary key auto_increment,
name varchar(25) not null,
deptld int(11),
salary float
);
insert into tb_employee6(name,salary) values('lucy',1000),('lura',1200),('kevin',1500);
select * from tb_employee6;
8.查看
1.查看基本结构
desc 表名;
desc tb_employee1;
2.查勘表的详细结构
show create table 表名
9.修改表名
alter table <旧表名> rename <新表名>;
show tables;
alter table tb_dept1 rename tb_deptment3;
show tables;
10.修改字段数据类型
alter table <表名> modify <字段名><数据类型>;
desc tb_deptment3;
alter table tb_deptment3 modify name varchar(30);
desc tb_deptment3;
11.修改字段名
alter table<表名> change<旧字段名><新字段名><新数据类型>
change也可以只修改数据类型,将<旧字段名><新字段名>设为相同,只改变数据类型。当数据库已有数据时,不要轻易修改数据类型。
alter table tb_deptment3 change location loc varchar(50);
desc tb_deptment3;
12.添加字段
alter table <表名> add <新字段名><数据类型>[first|after 已经存在的字段名]
first 将新添加的字段设为表的第一个字段;
after 将新添加的字段添加到指定的‘已存在字段’后面,
如果都没有默认添加到最后
# 1.添加无完整性约束条件的字段
alter table tb_deptment3 add managerld int(10);
desc tb_deptment3;
# 2.添加有完整性约束的字段alter
alter table tb_deptment3 add column1 varchar(12) not null;
desc tb_deptment3;
# 3.在表的第一列添加一个字段
alter table tb_deptment3 add column2 int(11) first;
desc tb_deptment3;
# 4.在表的指定列之后添加字段
alter table tb_deptment3 add column3 int(11) after name;
desc tb_deptment3;
13.删除字段
# 删除字段
alter table tb_deptment3 drop column2;
desc tb_deptment3;
14.修改字段排序
alter table <表名> modify <要修改的字段1><字段1的数据类型> first after<字段2>;
1.修改字段为表的第一个字段
# 将column1 放在第一列
alter table tb_deptment3 modify column1 varchar(12) first;
desc tb_deptment3;
2.修改字段放在指定列后
# 将column1 放在loc后
alter table tb_deptment3 modify column1 varchar(12) after loc;
desc tb_deptment3;
15.删除表的外键约束
alter table <表名> drop foreign key <外键名约束>
create table tb_employee10
(
id int(11) primary key,
name varchar(25),
deptld int(11),
saraly float,
constraint fk_emp_dept foreign key (deptld) references tb_deptment3(id)
);
show create table tb_employee10;
alter table tb_employee10 drop foreign key fk_emp_dept;
show create table tb_employee10;
16.删除数据表
1.删除没有被关联的表
drop table [if exist] 表1,表2,…,表n
可以同时删除多个表,如果写上if exist 用于删除前判断表是否存在,如果不存在sql语句可以继续执行,但是会发生警告,如果不加if exist 表如果不存在 则会报错。
2.删除被其他表关联的主表
如果直接删除父表,结果会显示失败。需先将关联的表的外键约束取消,然后就可以删除父表。
# 1。创建两个表
create table tb_dept2
(
id int(11) primary key,
name varchar(22),
location varchar(50)
);
create table tb_emp
(
id int(11)primary key,
name varchar(25),
deptld int(11),
salary float,
constraint fk_emp_dept foreign key (deptld)references tb_dept2(id)
);
show create table tb_emp;
先直接删除主表,报错
drop table tb_dept2;
alter table tb_emp drop foreign key fk_emp_dept;
drop table tb_dept2;
show tables;