SQL
DDL部分
数据库操作
查询
1、查询所有数据库
show databases;
2、查询当前数据库
select database();
创建
create database [IF NOT EXISTS] 数据库名 [default charset 字符集] [collate 排序规则];
删除
DROP DATABASE [IF EXITS] 数据库;
表操作
- 查询当前数据库所有表
show tables;
- 查询表结构
desc 表名;
- 查询指定表的建表语句
show create table 表名;
- 创建表
create table 表名 (
字段1 字段1类型 [COMMENT 字段1注释]
...
)[COMMENT 表注释];
数据类型
- 数值类型
- 字符串类型
- 日期类型
表字段修改与删除
- 添加字段
ALTER TABLE 表名 ADD 字段名 类型[长度] [COMMENT 注释] [约束];
- 修改数据类型
(1)ALTER TABLE 表名 MODIFY 字段名 新数据类型[长度];
(2)ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [COMMENT 注释] [约束];
- 删除字段
ALTER TABLE 表名 drop 字段名;
- 修改表名
ALTER TABLE 表名 rename to 新表名;
- 删除表
(1)drop table 表名;
(2)truncate table 表名; // 删除指定表,并重新创建
DML
DML是数据操纵语言,用来对数据库中表的数据记录进行增删改操作。
添加数据
INSERT INTO 表名(字段1, 字段2,...)VALUES(值1,值2,...)
修改数据
UPDATE 表名 SET 字段名1=值1,字段名2=值2,...[WHERE 条件];
删除数据
DELETE FROM 表名 [WHERE 条件];
注:delete语句的条件可以有,可以没有,如果没有,则会删除整张表的所有数据。
DQL
基础查询
1.查询多个字段
SELECT 字段1,字段2,字段3,...FROM 表名;
2.设置别名
SELECT 字段1[AS 别名1],... FROM 表名;
3.去除重复记录
SELECT DSTINCT 字段列表 FROM 表名;
条件查询
- 语法
SELECT 字段列表 FROM 表名 WHERE 条件列表;
2.条件
分组查询
- 聚合函数
聚合函数的作用对象是一列数据。
常见的聚合函数有
注:所有的聚合函数都不计算null值
- 分组查询的语法
SELECT 字段名 FROM 表名 WHERE 条件 GROUP BY 分组字段名 HAVING 分组后过滤条件
where与having区别:
(1)执行时机不同:where的条件是分组之前进行过滤,不参与分组;而having是分组之后对结果进行过滤。
(2)判断条件不同:where不能对聚合函数进行判断,而having可以。
注:
(1)执行顺序where > 聚合函数 > having
(2)分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。
分页查询
- 语法
SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询记录数;
注意:
- 起始索引从0开始,起始索引=(查询页码 - 1) * 每页显示记录数
- 如果查询的是第一页数据,起始索引可以省略,直接简写为limit 10.
MySQL数据库DCL
管理用户
- 查询用户
USE mysql;
select * from user;
- 创建用户
create user '用户名'@'主机名' identified by '密码';
- 修改用户密码
alter user '用户名'@'主机名' identified with mysql_native_password by '新密码';
- 删除用户
drop user '用户名'@'主机名';
函数
数值函数
日期函数
流程函数
约束
- 概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。
- 目的:保证数据库中数据的正确性、有效性和完整性。
- 分类:
多表查询
事务
事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交和撤销操作请求,即这些操作要么同时成功,要么同时失败。
注:默认MySQL的事务是自动提交的,业就是说,当执行一条DML语句时,MySQL会立即隐式的提交事务。