mysql8的基础之SQL语句
mysql 19

SQL语句

DDL-数据定义语言

数据库操作

查询

查询所有数据库

SHOW DATABASES;

查询当前所在数据库

SELECT DATABASE();

创建

CREATE DATABASE [IF NO EXISTS] 数据库名 [DEFAULT CHARSET 字符集] [排序规则];

删除

DROP DATABASE [IF EXISTS] 数据库名;

使用

USE 数据库名;

表操作

查询

查询当前数据库所有表

SHOW TABLES;

查询表结构

DESC 表名;

查询指定表的建表语句

SHOW CREATE TABLE 表名;

创建

修改

添加字段

ALTER TABLE 表名 ADD 字段名 类型 [COMMENT 注释][约束];

修改字段的数据类型

ALTER TABLE 表名 MODIFY 字段名 新类型;

修改字段名和字段类型

ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型 [COMMENT 注释][约束];

删除字段

ALTER TABLE 表名 DROP 字段名;

修改表名

ALTER TABLE 表名 RENAME TO 新表名;

删除

删除表

DROP TABLE [IF EXISTS] 表名;

删除表,并重新创建该表

TRUNCATE TABLE 表名;

DML-数据操作语言

添加数据

给指定字段添加数据

INSERT INTO 表名(字段名1,字段名2) VALUES(值1,值2);

给全部字段添加数据

INSERT INTO 表名 VALUES(值1,值2,,,);

批量添加数据

INSERT INTO 表名(字段名1,字段名2) VALUES(值1,值2),(值1,值2);

INSERT INTO 表名 VALUES(值1,值2,,,),(值1,值2,,,);

删除数据

DELETE FROM 表名 [WHERE 条件]

修改数据

UPDATE 表名 SET 字段名1 = 值1,字段名2 = 值2 [WHERE 条件];

DQL-数据查询语言

基础查询

查询多个字段

SELECT 字段1,字段2,字段3 ... FROM 表名;

SELECT * FROM 表名

设置别名

SELECT 字段1 [AS 别名1],字段2 [AS 别名2] FROM 表名;

去除重复记录

SELECT DISTINCT 字段1,字段2,字段3 ... FROM 表名;

SELECT DISTINCT * FROM 表名;

SELECT DISTINCT 字段1 [AS 别名1],字段2 [AS 别名2] FROM 表名;

条件查询

语法

SELECT 字段列表 FROM 表名 WHERE 条件列表;

条件

例子
假设在emp表中
1. 查询年龄大于20
SELECT * FROM emp WHERE age > 20;
2. 查询没有身份号码的员工信息
SELECT * FROM emp WHERE idcard IS NULL;
3. 查询有身份号码的员工信息
SELECT * FROM emp WHERE idcard IS NOT NULL;
4. 查询年龄不等于88
SELECT * FROM emp WHERE age != 88;
SELECT * FROM emp WHERE age <> 88;
5. 查询年龄在15-20之间
SELECT * FROM emp WHERE age > 15 AND age < 20;
SELECT * FROM emp WHERE age > 15 && age <20;
SELECT * FROM emp WHERE age BETWEEN 15 AND 20;
6. 查询性别男且年龄小于25
SELECT * FROM emp WHERE gender = '男' AND age < 25;
7. 查询年龄为16、13、20
SELECT * FROM emp WHERE age = 16 OR age = 13 OR age = 20;
SELECT * FROM emp WHERE age IN(16,13,20);
8. 查询名字2个字
SELECT * FROM emp WHERE name LIKE '__';
9. 查询名字3个字
SELECT * FROM emp WHERE name LIKE '___';
10. 查询名字 张 开头,其他随便
SELECT * FROM emp WHERE name LIKE '张%';
11. 查询名字 张 结尾,其他随便
SELECT * FROM emp WHERE name LIKE '%张';

聚合函数

介绍

将一列数据作为一个整体,进行纵向计算。

常见聚合函数

语法

SELECT 聚合函数(字段列表) FROM 表名;

例子
假设在emp表中
1. 统计emp的员工数量
SELECT COUNT(*) FROM emp;
2. 统计员工的平均年龄
SELECT AVG(age) FROM emp;
3. 统计员工的最小年龄
SELECT MIN(age) FROM emp;
4. 统计员工的年龄之和
SELECT SUM(age) FROM emp;
注意

null值不参与聚合函数的计算。

分组查询

语法

SELECT 字段列表 FROM 表名 [ WHERE 条件] GROUP BY 分组字段名 [ HAVING 分组后条件] ;

WHERE与HAVING区别

例子
1. 根据性别分组,统计男性员工与女性员工的数量
SELECT gender,COUNT(gender) FROM emp GROUP BY gender;
==
SELECT gender,COUNT(*) FROM emp GROUP BY gender;
2. 根据性别分组,统计男性员工与女性员工的平均年龄
SELECT gender,AVG(age) AS '平均年龄' FROM emp GROUP BY gender;
3. 查询年龄小于45的员工,并根据部门分组,获取员工数量大于3的部门
SELECT department,COUNT(*) FROM emp WHERE age < 45 GROUP BY department HAVING COUNT(*) > 3;
注意

排序查询

语法

SELECT 字段列表 FROM 表名 ORDER BY 字段名1 排序方式1,字段名2 排序方式2;

排序方式

ASC : 升序(默认)

DESC : 降序

例子
1. 根据年龄对员工进行升序排序
SELECT * FROM emp ORDER BY age ASC;
SELECT * FROM emp ORDER BY age;
2. 根据年龄对员工进行升序排序,年龄相同,再按照时间进行降序排序
SELECT * FROM emp ORDER BY age ASC,hire_date DESC;
注意

如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序。

分页查询

语法

SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询记录数;

例子
1. 查询第1页员工数据,每页显示5条数据(1~5)
SELECT * FROM emp LIMIT 0,5;
=
SELECT * FROM emp LIMIT 5;
2. 查询第2页员工数据,每页显示5条数据(6~10)
SELECT * FROM emp LIMIT 5,5;
3. 查询第3页员工数据,每页显示5条数据(11~15)
SELECT * FROM emp LIMIT 10,5;
注意

DQL 顺序

编写顺序

执行顺序

DCL-数据控制语言

管理用户

查询用户

USE mysql;

SELECT * FROM user;

创建用户

CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';

修改用户密码

ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '新密码';

删除用户

DROP USER '用户名'@'主机名';

权限控制

权限列表

查询权限

SHOW GRANTS FOR '用户名'@'主机名';

授予权限

GRANT 权限列表 ON 数据库.表名 TO '用户名'@'主机名';

撤销权限

REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';

注意
  1. 多个权限之间,用.分隔。

  2. 授权时,数据库名和表名可以使用*进行通配代表所有。

mysql8的基础之SQL语句
https://blog.883051.xyz/archives/mysqlde-ji-ben-yong-fa
作者
玉溪
发布于
更新于
许可