mysql复习:数据表的基本操作

最近面试纷纷扰扰觉得自己数据库太差了,重新复习一遍

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;

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值