MySQL 数据库与表操作
# 一、 数据库操作
# 1. 创建数据库
# 语法格式
CREATE DATABASE [IF NOT EXISTS] <数据库名> [[DEFAULT] CHARACTER SET <字符集名>] [[DEFAULT] COLLATE <校对规则名>];
1
# 知识点
[ ] 的内容可以不填,有默认值
MySQL 的字符集(CHARACTER)和校对规则(COLLATION)是两个不同的概念
字符集:是用来定义 MySQL 存储字符串的方式
校对规则:定义了比较字符串的方式
# 实例:
# 简单创建一个数据库
create database yytest;
# 添加条件判断,创建一个数据库
create database if not exists yytests;
# 指定数据库数据集,创建一个数据库
create database if not exists yytestss character set utf8;
# 指定字符串校验规则,创建一个数据库
create database if not exists yytestsss character set utf8 collate utf8_general_ci;
# 查看数据库创建的语句是什么
show create database yytestsss;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
# 2. 数据库查询
# 语法:
SHOW DATABASES [LIKE '数据库名'];
1
# 知识点
[ like ' ' ] 是可选项,用于匹配指定的数据库名称
[ like ' ' ] 可以模糊匹配,也可以精确匹配
数据库名由单引号 ' ' 包围,在navicat中可以双引号
# 实例:
# 查询所有数据库
show DATABASES;
# 模糊匹配
show databases like '%yytest%';
# 精确匹配
show databases like 'yytests';
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 3. 修改数据库
# 语法 :
ALTER DATABASE [数据库名] {[ DEFAULT ] CHARACTER SET <字符集名> | [ DEFAULT ] COLLATE <校对规则名>}
1
# 知识点
不一定要写数据库名,但需要当前有在使用的数据库
只能支持修改字符集和字符校验规则,如果要修改数据库名可以直接通过工具重命名数据库,Mysql暂时不支持语句修改
修改数据库不常用,了解即可
# 实例:
# 修改默认数据库的字符集
use yytest;
alter database character set utf8;
# 修改指定数据库字符集和校验规则
alter database yytest character set utf8 collate utf8_general_ci;
1
2
3
4
5
6
2
3
4
5
6
# 4. 删除数据库
# 语法:
DROP DATABASE [ IF EXISTS ] <数据库名>
1
# 知识点
- 如果删除不存在的数据库,则会报 1008 - Can't drop database 'yytest'; database doesn't exist
- 所以建议,删除数据库一定要加上 if exists
# 实例:
# 简单删除数据库语句
drop database yytest;
# 如果存在才删除
drop database if exists yytests;
1
2
3
4
5
2
3
4
5
# 5. 数据库选择
# 语法:
# 选择数据库
use yytestss;
1
2
2
# 知识点
- 作用:用来完成一个数据库到另一个数据库的跳转【切换当前操作的数据库】
- 当用 CREATE DATABASE 语句创建数据库之后,该数据库不会自动成为当前数据库,需要用 USE 来指定使用当前数据库
# 6. 综合实例:
# ====创建数据库====
# 简单创建一个数据库
create database yytest;
# 添加条件判断,创建一个数据库
create database if not exists yytests;
# 指定数据库数据集,创建一个数据库
create database if not exists yytestss character set utf8;
# 指定字符串默认校验规则,创建一个数据库
create database if not exists yytestsss character set utf8 collate utf8_general_ci;
# 查看数据库创建的语句是什么
show create database yytestsss;
# ====查询数据库====
# 查询所有数据库
show DATABASES;
# 模糊匹配
show databases like '%yytest%';
# 精确匹配
show databases like 'yytests';
# ====修改数据库====
# 修改默认数据库的字符集
use yytest;
alter database character set utf8;
# 修改指定数据库字符集和校验规则
alter database yytest character set utf8 collate utf8_general_ci;
# ====删除数据库====
# 简单删除数据库语句
drop database yytestsss;
# 如果存在才删除
drop database if exists yytestss;
drop database if exists yytests;
# 选择数据库
use yytest;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# 二、 表操作
# 1. 创建数据表
# 语法格式
CREATE TABLE <表名> ( [表定义选项] )[表选项][分区选项];
1
# 知识点
- 表名:两种写法,可以直接写数据表的名字 tbl_name ,也可以 db_name.tbl_name ,先指定数据库再指定数据表名;后者写法是为了:无论是否在当前数据库,也能通过这种方式在指定数据库下创建表
- **表定义选项:**一般都是 列名、列定义、默认值、约束、索引组成
# 实际栗子
# 创建数据表
CREATE TABLE yytest (
id INT ( 10 ) NOT NULL UNIQUE PRIMARY KEY,
uname VARCHAR ( 20 ) NOT NULL,
sex VARCHAR ( 4 ),
birth YEAR,
department VARCHAR ( 20 ),
address VARCHAR ( 50 ),
yypolo VARCHAR ( 20 )
);
# 指定数据库,创建数据表
CREATE TABLE yytest.polotest (
id INT ( 10 ) NOT NULL UNIQUE PRIMARY KEY AUTO_INCREMENT,
stu_id INT ( 10 ) NOT NULL,
c_name VARCHAR ( 20 ),
istester VARCHAR ( 50 ),
grade INT ( 10 )
);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 2. 查看表结构
desc yytest.yytest;
1
# 执行结果
# 知识点
Null:表示该字段是否可以存储 NULL 值
Key:表示该字段是否已编制索引。PRI 表示主键,UNI 表示UNIQUE 索引,MUL 表示某个给定值允许出现多次
Default:表示该字段是否有默认值,如果有,值是多少
Extra:表示该字段的附加信息,如 AUTO_INCREMENT 等
# 3. 查看数据表的创建语句
show create table yytest;
1
# 执行结果
# 知识点
不仅可以查看创建表时的详细语句,而且可以查看存储引擎和字符编码
# 4. 复制数据表
# 仅复制表结构
create table yytest2 like yytest;
# 复制表结构和数据
create table yytest3 as select * from yytest;
# 仅复制表的指定字段结构
create table yytest4 as select id,uname,sex from yytest where 1<>1;
# 复制表的指定字段结构和数据
create table yytest5 as select id,uname,sex from yytest;
# 查看表创建语句:没有包含主键和自增
show create table yytest5;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
# 知识点
- 仅复制全部字段的结构直接加 like
- 复制表不包含主键、索引、自增等
# 5. 修改数据表
# 语法格式
ALTER TABLE <表名> [修改操作];
1
# 知识点
常用的修改表的操作
修改表名
修改字段数据类型或字段名
增加和删除字段
修改字段的排列位置
add、drop、change、modify、rename
# 6. 修改表名
# 语法格式
ALTER TABLE <旧表名> RENAME [TO] <新表名>;
1
# 注意
- [TO] 加不加都行,不影响结果
- 修改表名不影响表结构
# 实际栗子
alter table yytest2 rename to yytest22;
alter table yytest22 rename yytest22;
1
2
2
# 7. 修改字段排列顺序
# 语法格式
ALTER TABLE <表名> MODIFY <字段名> <数据类型> [FIRST|AFTER 已存在的字段名];
1
# 实际栗子
# 放在首位
alter table yytest22 modify sex int(2) first;
# 放在birth字段后面
alter table yytest22 modify sex int(2) after birth;
1
2
3
4
5
2
3
4
5
# 8. 修改字段数据类型
# 语法格式
ALTER TABLE <表名> MODIFY <字段名> <数据类型>;
1
# 实际栗子
# 修改字段数据类型
alter table yytest22 modify sex int(2);
1
2
2
# 9. 修改字段名字
# 语法格式
ALTER TABLE <表名> CHANGE <旧字段> <新字段> <数据类型>;
1
# 实际栗子
# 修改字段名
alter table yytest22 change sex sexs int(2);
# 修改字段数据类型和字段名
alter table yytest22 change sexs sex varchar(4);
1
2
3
4
5
2
3
4
5
# 知识点
change不仅可以改字段名,也可以改字段数据类型
# 10. 添加字段
# 语法格式
ALTER TABLE <表名> ADD <字段名> <数据类型> [约束条件] [FIRST|AFTER 已存在的字段名];
1
# 实际栗子
# 添加字段
alter table yytest22 add phone varchar(11);
# 添加字段到首位
alter table yytest22 add phone varchar(11) not null default 2 first;
# 添加字段到某个字段后面
alter table yytest22 add phone varchar(11) after sex;
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 12. 删除字段
# 语法格式
ALTER TABLE <表名> DROP <字段名>;
1
# 实际栗子
# 删除字段
alter table yytest22 drop phone;
1
2
2
# 13. 删除数据表
# 语法格式
DROP TABLE [IF EXISTS] 表名1 [ ,表名2, 表名3 ...]
1
可以看到跟删除库差不多
# 实际栗子
# 删除表如果存在
drop table if exists yytest,polotest
1
2
2
谨慎操作吧!!数据会清空哦!!
编辑 (opens new window)
上次更新: 2022/03/23, 18:33:10