MySQL 数据库基本操作
数据库基本操作
- 数据库基本操作
- 一、SQL语句管理
- 二、常用的数据类型
- 三、基本操作
一、SQL语句管理
DDL 数据定义操作 创建 比如表 库 索引
DML 数据操纵 用来插入 删除修改 数据库中的数据
DQL 数据查询 查找符合条件的数据记录
DCL 数据控制 设置后缀更改数据库用户和角色权限
二、常用的数据类型
数据类型 | 含义 |
---|---|
int | 整型 |
float | 单精度浮点型 4字节32位 |
double | 双精度浮点型 8字节64位 |
char | 固定长度的字符类型 |
varchar | 可变长度的字符类型 |
text | 文本 |
image | 图片 |
decimal(5,2) | 5个有效长度数字,小数点后面有2位 |
三、基本操作
1. 查看当前服务器中的数据库
show databases;
2. 创建新的数据库
create database test1sql;
3. 在数据库中创建新的数据表
主键一般选择能代表唯一性的字段不允许取空值(NOLL),一个表只能有一个主键。
create table 表名 (primary key (主键名),字段1 数据类型, 字段2 数据类型);
# 查看存在的数据库
show databases;
# 使用这个数据库
use test1sql;
# 创建数据表
create table test1tab (id int NOT NULL,name char(5) NOT NULL,age int NOT NULL,salary double NOT NULL);
# 注:这条命令没加主键,加主键使用此条
create table test1tab (primary key (id),id int NOT NULL,name char(5) NOT NULL,age int NOT NULL,salary double NOT NULL);
# 查看存在的数据表
show tables;
# 查看指定的数据表的属性
desc test1tab;
4. 向数据表中插入数据记录
# 查看数据表中的属性
desc test1tab;
# 插入数据记录
insert into test1tab (id,name,age,salary) values(1,'员工1',23,18888);
insert into test1tab (id,name,age,salary) values(2,'员工2',24,19999);
insert into test1tab (id,name,age,salary) values(3,'员工3',24,20000);
# 查看表中所有的数据记录
select * from test1tab;
5. 查看表中所有数据记录
select * from test1tab;
6. 按字段查找数据表中的记录
select name,salary from test1tab;
7. 查找数据表中指定的记录
select * from test1tab where id=2;
8. 查找指定记录的指定字段
select name,salary from test1tab where id=2;
9. 按记录范围进行查找
# 查看表中前两行记录
select * from test1tab limit 2;
# 查看第1行之后的前两行
select * from test1tab limit 1,2;
10. 删除表
删除速度
drop> truncate > delete
安全性
delete 最好
(1)drop
drop table table_name;
TRUNCATE清空表后,没有返回被删除的条目:TRUNCATE 工作时是将表结构按原样重新建立,
因此在速度上TRUNCATE会比DELETE清空表快;使用TRUNCATE TABLE 清空表内数据后,
ID会从1开始重新记录
① 删除速度快
② 表和内容和结构删除
③ 不可以带 where
④ 不可以回滚(无法恢复)
⑤ 属于 DDL
实例:
drop table test1tab;
(2)truncate
truncate table table_name;
TRUNCATE清空表后,没有返回被删除的条目: TRUNCATE 工作时是将表结构按原样重新建立,因此在速度上TRUNCATE会比DELETE清空表快;使用TRUNCATE TABLE 清空表内数据后,ID会从1开始重新记录
① 删除速度快
② 表的内容删除
③ 不可以带 where
④ 不可以回滚(无法恢复)
⑤ 属于 DDL
实例:
truncate table test1tab;
(3)delete
delete from table_name;
DELETE清空表后,返回的结果内有删除的记录条目;
DELETE 工作时是一行一行的删除记录数据的;如果表中有自增长字段,使用DELETE FROM 删除
所有记录后,再次新添加的记录会从原来最大的记录ID后面继续自增写入记录。
① 删除速度慢,需要逐行删除
② 表结构在,表内容要看 where 执行的情况
③ 可以带 where
④ 可以回滚(可恢复)
⑤ 属于 DML
应用场景
① 不在需要一张表的时候 用 drop
② 想删除部分数据行的时候,用delete并且加上where字句
③ 保留表而删除所有数据的时候用 truncate
实例:
delete from test1tab;
11. 修改 更新数据表中的数据记录
格式:
update 表名 set 字段1=字段值1 where 条件表达式;
实例:
将 id为3的age更新为25
update test1tab set age=25 where id=3;
12. 在数据表中删除指定的数据记录
格式:
delete from 表名 where 表达式;
实例:
将 id为3的数据记录删除
delete from test1tab where id=3;
13. 修改表名
格式:
alter table 旧表名 rename 新表名;
实例:
将表名 test1tab 改为 testtab1
alter table test1tab rename testtab1;
14. 扩展表结构
增加字段
格式:
alter table 表名 add 新增字段 数据类型 属性;
实例:
向 testtab 表中增加字段 phone,数据类型为 char(11)
alter table testtab1 add phone char(11) not null;
15. 修改表中字段添加唯一键
格式:
unique key 是添加唯一键
alter table 表名 change 旧列名 新列名 数据类型 unique key;
实例:
将testtab1中的age字段改为ages,并将其设置为唯一键
alter table testtab1 change age ages int(3) unique key;
16. 删除表中字段
格式:
alter table 表名 drop 字段名;
实例:
将testtab1表中的phone字段删除
alter table testtab1 drop phone;
17. 检查表是否存在
if not exists 是检查表是否存在
create table if not exists testtab (值1 数据类型,值2 数据类型);
表示检测要创建的表是否已存在,如果不存在就继续创建
18. int数据类型自动填充
int(4) zerofill
表示若数值不满4位数,则前面用"0"填充,例0001
20. 自增字段
int(4) auto_increment
21. 复制表结构
create table testtab2 like testtab1;
22. 复制表中记录
23. 克隆表
表结构和表记录都复制
create table testtab3 (select * from testtab1);
24. 创建临时表
临时表创建成功之后,使用SHOWTABLES命令是看不到创建的临时表的,临时表会在连接退出
后被销毁。
如果在退出连接之前,也可以可执行增删改查等操作,比如使用DROP TABLE语句手动直接删除
临时表。
可做测试环境使用 比如删除大量数据的时候,可以创建临时表 做一个复杂删除
PS:无法创建外键
create temporary table test1tab (id int(4) zerofill primary key auto_increment, name varchar(10) not null, hobby varchar(50));
退出 MySQL 临时表消失
25. 6种常见约束
约束 | 名称 |
---|---|
foreign key | 外键 |
not null | 非空约束 |
unique [key|index] | 唯一约束(键/索引) |
default | 默认值约束 |
auto_increment | 自增约束 |