MySql的基本操作汇总

2021-05-13 00:00:00 数据 语法 添加 约束 数据类型

库操作
查询
1.SHOW DATABASE; ----查询所有数据库

2.SHOW CREATE DATABASE 数据库名称; ----查询某个数据库的创建模式

3.SHOW CREATE DATABASE xxx; ----查询xxx数据库的创建模式

创建
1.CREATE DATABASE 数据库名称; ----创建数据库
注:不可以创建一个已经存在的数据库

2.CREATE DATABASE IS NOT EXISTS 数据库名称; ----判断数据库是否存在,不存在就创建

3.CREATE DATABASE 数据库名称 CHARACTER SET 字符集名称; ----创建数据库并指定字符集,一般使用utf-8

修改
ALTER DATABASE 数据库名称 CHARACTER SET 字符集名称; ----修改数据库的字符集

删除
1.DROP DATABASE 数据库名称; ----删除数据库

2.DROP DATABASE IS EXISTS 数据库名称; ----先判断是否存在再删除

使用
SELETE DATABASE (); ----查询当前正在使用的数据库

USE 数据库名称; ----使用指定数据库

表结构
表的查询
1.SHOW TABLES; ----查询数据库中所有的表

2.DESC 表名; ----查看指定表的结构

3.SHOW TABLE STATUS FROM 库名 LIKE ‘表名’; ----查询表字符集(like没有特别情况下和"="号是等价的)

创建表
CREATE TABLE 表名(
列名1 数据类型1 约束,
列名2 数据类型2 约束,

列名n 数据类型n约束
);

int:整数类型
age int
double:小数类型
score double(5,2)
price double
date:日期,只包含年月日 yyyy-MM-dd
datetime:日期,包含年月日时分秒 yyyy-MM-dd HH:mm:ss
timestamp:时间戳类型 包含年月日时分秒 yyyy-MM-dd HH:mm:ss
如果将来不给这个字段赋值,或赋值为null,则默认使用当前的系统时间,来自动赋值
varchar:字符串
name varchar(20):姓名大20个字符
zhangsan 8个字符 张三 2个字符
CREATE TABLE 要创建的表名 LIKE 被复制的表名; ----复制表

修改表
1.ALTER TABLE 表名 RENAME TO 新的表名; ----修改表名

2.ALTER TABLE 表名 CHARACTER SET 字符集名称; ----修改表的字符集

**3.**ALTER TABLE 表名 ADD 列名 数据类型; ----添加新的一列

4.ALTER TABLE 表名 MODIFY 列名 新列名 新数据类型; ----修改新列名和数据类型

表中删除操作
1.DROP TABLE 表名; ----删除表

2.ALTER TABLE 表名 DROP 列名; ----删除列

表中添加数据-INSERT语句
1.INSERT INTO 表名(列名1,列名2,…) VALUES (值1,值2,…); ----向表中添
加数据

2.SELECT * FROM product; ----查看表中所有数据

3.INSERT INTO 表名 VALUES (值1,值2,值3,…); ----默认给全部列添加数据

4.INSERT INTO 表名 VALUES (值1,值2,值3,…),(值1,值2,值3,…),(值1,值2,值3,…); ----批量添加数据

注:

列名和值的数量以及数据类型要对应
除了数字类型,其他数据类型的数据都需要加引号(单引双引都可以,推荐单引)
表中修改数据-updata
UPDATE 表名 SET 列名1 = 值1,列名2 = 值2,… [where 条件];
注:

修改语句中必须加上条件,如果不加条件则修改所有数据
表中删除数据-delete
DELETE FROM 表名 [WHERE 条件];
注:

和修改数据是一样的
单表查询
查询语法:
select
字段列表
from
表名列表
where
条件列表
group by
分组字段
having
分组之后的条件
order by
排序
limit
分页限定

SELECT 列名1,列名2,… FROM 表名; ----多个字段查询

SELECT DISTINCT 列名1,列名2,… FROM 表名; ----去重查询,但只有所查询列都重复才会去重

SELECT 列名1 运算符(+ - * /) 列名2 FROM 表名; ----四则运算

SELECT 列名1,列名2,… AS 别名 FROM 表名; ----as用来起别名,简单易懂

条件查询

条件分类
符号 功能
> 大于
< 小于
>= 大于等于
<= 小于等于
= 等于
<> 或 != 不等于
BETWEEN … AND … 在某个范围之内(都包含)
IN(…) 多选一
LIKE 占位符 模糊查询 _单个任意字符 %多个任意字符
IS NULL 是NULL
IS NOT NULL 不是NULL
AND 或 && 并且
OR 或 || 或者
NOT 或 ! 非,不是
聚合函数

函数名称及其功能
函数名 功能
count(列名) 统计数量(一般选用不为null的列)
max(列名) 大值
min(列名) 小值
sum(列名) 求和
avg(列名) 平均值
聚合函数语法
-- 标准语法
SELECT 函数名(列名) FROM 表名 [WHERE 条件];

-- 计算product表中总记录条数
SELECT COUNT(*) FROM product;

-- 获取高价格
SELECT MAX(price) FROM product;
-- 获取高价格的商品名称
SELECT NAME,price FROM product WHERE price = (SELECT MAX(price) FROM product);

-- 获取低库存
SELECT MIN(stock) FROM product;
-- 获取低库存的商品名称
SELECT NAME,stock FROM product WHERE stock = (SELECT MIN(stock) FROM product);

-- 获取总库存数量
SELECT SUM(stock) FROM product;
-- 获取品牌为苹果的总库存数量
SELECT SUM(stock) FROM product WHERE brand='苹果';

-- 获取品牌为小米的平均商品价格
SELECT AVG(price) FROM product WHERE brand='小米';
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
排序查询
分类
关键字 功能
ORDER BY 列名1 排序方式1,列名2 排序方式2 对指定列排序,ASC升序(默认的) DESC降序
- 注:多个排序条件,当前边的条件值一样时,才会判断第二条件
1
排序语法
-- 标准语法
SELECT 列名 FROM 表名 [WHERE 条件] ORDER BY 列名1 排序方式1,列名2 排序方式2;

-- 按照库存升序排序
SELECT * FROM product ORDER BY stock ASC;
1
2
3
4
5
分组查询
-- 标准语法
SELECT 列名 FROM 表名 [WHERE 条件] GROUP BY 分组列名 [HAVING 分组后条件过滤] [ORDER BY 排序列名 排序方式];
1
2
分页查询
-- 标准语法
SELECT 列名 FROM 表名 [WHERE 条件] GROUP BY 分组列名 [HAVING 分组后条件过滤] [ORDER BY 排序列名 排序方式] LIMIT 开始索引,查询条数;
-- 公式:开始索引 = (当前页码-1) * 每页显示的条数
1
2
3
约束
1.约束的概念和分类
约束的概念
对表中的数据进行限定,保证数据的正确性、有效性、完整性!
约束的分类
约束 说明
PRIMARY KEY 主键约束
PRIMARY KEY AUTO_INCREMENT 主键、自动增长
UNIQUE 约束
NOT NULL 非空约束
FOREIGN KEY 外键约束
FOREIGN KEY ON UPDATE CASCADE 外键级联更新
FOREIGN KEY ON DELETE CASCADE 外键级联删除
2.主键约束
主键约束特点
主键约束包含:非空和两个功能
一张表只能有一个列作为主键
主键一般用于表中数据的标识
建表时添加主键约束
-- 标准语法
CREATE TABLE 表名(
列名 数据类型 PRIMARY KEY,
列名 数据类型,
...
);

-- 创建student表
CREATE TABLE student(
id INT PRIMARY KEY -- 给id添加主键约束
);

-- 添加数据
INSERT INTO student VALUES (1),(2);
-- 主键默认,添加重复数据,会报错
INSERT INTO student VALUES (2);
-- 主键默认非空,不能添加null的数据
INSERT INTO student VALUES (NULL);

-- 查询student表
SELECT * FROM student;
-- 查询student表详细
DESC student;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
删除主键
-- 标准语法
ALTER TABLE 表名 DROP PRIMARY KEY;

-- 删除主键
ALTER TABLE student DROP PRIMARY KEY;
1
2
3
4
5
建表后单独添加主键
-- 标准语法
ALTER TABLE 表名 MODIFY 列名 数据类型 PRIMARY KEY;

-- 添加主键
ALTER TABLE student MODIFY id INT PRIMARY KEY;
1
2
3
4
5
3.主键自动增长约束
建表时添加主键自增约束
-- 标准语法
CREATE TABLE 表名(
列名 数据类型 PRIMARY KEY AUTO_INCREMENT,
列名 数据类型,
...
);

-- 创建student2表
CREATE TABLE student2(
id INT PRIMARY KEY AUTO_INCREMENT -- 给id添加主键自增约束
);

-- 添加数据
INSERT INTO student2 VALUES (1),(2);
-- 添加null值,会自动增长
INSERT INTO student2 VALUES (NULL),(NULL);

-- 查询student2表
SELECT * FROM student2;
-- student2表详细
DESC student2;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
删除自动增长
-- 标准语法
ALTER TABLE 表名 MODIFY 列名 数据类型;

-- 删除自动增长
ALTER TABLE student2 MODIFY id INT;
1
2
3
4
5
建表后单独添加自动增长
-- 标准语法
ALTER TABLE 表名 MODIFY 列名 数据类型 AUTO_INCREMENT;

-- 添加自动增长
ALTER TABLE student2 MODIFY id INT AUTO_INCREMENT;
1
2
3
4
5
4.约束
建表时添加约束
-- 标准语法
CREATE TABLE 表名(
列名 数据类型 UNIQUE,
列名 数据类型,
...
);

-- 创建student3表
CREATE TABLE student3(
id INT PRIMARY KEY AUTO_INCREMENT,
tel VARCHAR(20) UNIQUE -- 给tel列添加约束
);

-- 添加数据
INSERT INTO student3 VALUES (NULL,'18888888888'),(NULL,'18666666666');
-- 添加重复数据,会报错
INSERT INTO student3 VALUES (NULL,'18666666666');

-- 查询student3数据表
SELECT * FROM student3;
-- student3表详细
DESC student3;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
删除约束
-- 标准语法
ALTER TABLE 表名 DROP INDEX 列名;

-- 删除约束
ALTER TABLE student3 DROP INDEX tel;
1
2
3
4
5
建表后单独添加约束
-- 标准语法
ALTER TABLE 表名 MODIFY 列名 数据类型 UNIQUE;

-- 添加约束
ALTER TABLE student3 MODIFY tel VARCHAR(20) UNIQUE;
1
2
3
4
5
5.非空约束
建表时添加非空约束
-- 标准语法
CREATE TABLE 表名(
列名 数据类型 NOT NULL,
列名 数据类型,
...
);

-- 创建student4表
CREATE TABLE student4(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(20) NOT NULL -- 给name添加非空约束
);

-- 添加数据
INSERT INTO student4 VALUES (NULL,'张三'),(NULL,'李四');
-- 添加null值,会报错
INSERT INTO student4 VALUES (NULL,NULL);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
删除非空约束
-- 标准语法
ALTER TABLE 表名 MODIFY 列名 数据类型;

-- 删除非空约束
ALTER TABLE student4 MODIFY NAME VARCHAR(20);
1
2
3
4
5
建表后单独添加非空约束
-- 标准语法
ALTER TABLE 表名 MODIFY 列名 数据类型 NOT NULL

-- 添加非空约束
ALTER TABLE student4 MODIFY NAME VARCHAR(20) NOT NULL;
1
2
3
4
5
外键约束
外键约束的格式(一般在创建表的后写这些)

CONSTRAINT 外键名 FOREIGN KEY (本表外键列名) REFERENCES 主表名(主表主键列名)
————————————————

原文链接:https://blog.csdn.net/Numberjava/article/details/116641280

相关文章