SQL(Structed Query Language 结构化查询语言)是一种用于管理关系型数据库的标准化编程语言。它包括数据查询、数据插入、数据更新、数据删除以及数据库结构的创建和修改等功能。
SQL语言的核心功能可以分为四个部分,即DDL( Data Definition Language 数据定义语言)、DML(Data Manipulation Language 数据操纵语言)、DQL(Data Query Language 数据查询语言)以及DCL(Data Control Language 数据控制语言)。
亦有说法称DQL(Data Query Language 数据查询语言)中的SELECT系列查询语句属于DML(Data Manipulation Language 数据操纵语言)。
且如果没有成为DBA(DATABASE ADMINISTRATOR 数据管理员)的想法的话,DCL(Data Control Language 数据控制语言)了解一下即可。
因此想要实现数据库中的CRUD(CREATE/READ/UPDATE/DELETE 增查改删)功能的话只需要学习DDL( Data Definition Language 数据定义语言)和DML(Data Manipulation Language 数据操纵语言)即可
DDL( Data Definition Language 数据定义语言):
数据库:
--使用某个数据库
USE 数据库名;--查询当前使用的数据库名称
SELECT DATABASE();--查看当前数据库服务器上面所有已创建的数据库
SHOW DATABASES;--创建数据库 [IF NOT EXISTS]部分为检测要创建的数据库是否存在,不存在则会创建,加上这个部分即使要创建的数据库存在也不会报错,字符集一般使用"UTF8MB4"
CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集] [COLLATE 排序规则];
表:
--查看当前数据库内所有已创建的表
SHOW TABLES;--查询表的结构
DESC 表名;--查询指定表的建表语句
SHOW CREATE TABLE 表名;--以设置的形式创建表,注释可省略
CREATE TABLE 表名( 列名1 列类型1 [COMMEN 段注释], ... , 列名n 列类型n [COMMEN 段注释] ) [COMMEN 表注释];
增
--向表中增加数据
ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMEN 注释] [约束];
改
--修改表中对应字段的数据类型
ALTER TABLE 表名 MODIFY 字段名 新类型(长度);--修改表中对应字段的字段名和类型
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [COMMEN 注释] [约束];--修改表的名字
ALTER TABLE 表名 RENAME TO 新表名;
删
--删除表中指定的字段名
ALTER TABLE 表名 DROP 字段名;--删除指定的表(如果存在)
DROP TABLE [IF EXISTS]表名;--删除表并重新创建->格式化表的数据
TRUNCATE TABLE 表名;
在创建表的时候,列的类型有很多,主要分为数值类型,字符串类型和日期类型
常见的数值类型:
- INT/INTEGER --整数类型
- FLOAT,DOUBLE --单双精度浮点类型
- CHAR --不可变长度字符串
- VARCHAR --可变长度字符串
- DATE --格式为YYYY-MM-DD
- TIME --格式为HH:MM:SS
DML(Data Manipulation Language 数据操纵语言):
插入:
--不指定插入时列名可省略 VALUES后可一次批量插入多组数据,用','分隔
INSERT INTO 表名[(列名1, ... ,列名n)] VALUES (值1, ... ,值n)[,(值1, ... ,值n)];更新:
--(在WHERE条件下)将对应列的值更新为新的值)
UPDATE 表名 SET 列1=值1[, ... ,列n=值n] [WHERE 条件];删除:
--(在WHERE条件下)删除对应表中的数据
DELECT FROM 表名 [WHERE 条件];
DQL(Data Query Language 数据查询语言):
编写顺序总览:
SELECT 字段列表(聚合函数) [AS 别名(AS可省略)] / *
FROM 表名
[WHERE 条件]
[GROUP BY 分组字段列表 [HAVING 分组后条件列表] ]
[ORDER BY 排列字段列表]
[LIMIT 分页参数];
基本查询:
--查询表中指定列的值或使用*查询所有值
SELECT 字段列表 [AS 别名(AS可省略)] / * FROM 表名;
条件查询:
--(在WHERE条件下)查询表中指定列的值或使用*查询所有值
SELECT 字段列表 [AS 别名(AS可省略)] / * FROM 表名 [WHERE 条件];
条件总览:
- > --大于
- >= --大于等于
- < --小于
- <= --小于等于
- !=或<> --不等于
- BETWEEN ... AND ... --在BETWEEN和AND的范围之内(包含),BETWEEN后必须是最小值,AND后必须是最大值,不能颠倒顺序
- IN (列表) --在列表中的值多选一
- LIKE 占位符 --模糊匹配('_'匹配单个字符,'%'匹配多个字符)
- (NOT) IS NULL --值为空(非空)
- AND或&& --与,并且
- OR或|| --或
- NOT或! --非
聚合查询:
SELECT 聚合函数(字段列表) FROM 表名;
常见的聚合函数:
- COUNT(列名/*) --统计记录行数,*统计所有行
- SUM(列名) --计算列数值的总和
- AVG(列名) --计算列数值的平均值
- MAX(列名) --取列的最大值
- MIN(列名) --取列的最小值
NULL值不参与聚合函数的计算
分组查询:
--分组后一般查询的为聚合函数和分组字段,查询其他的无意义,执行顺序:WHERE>聚合函数>HAVING
SELECT 字段列表(聚合函数) FROM 表名 [WHERE 条件] GROUP BY 分组字段列表 [HAVING 分组过滤条件];
排列查询:
--排列方式:ASC->升序(默认) ,DESC->降序
SELECT 字段列表 FROM 表名 ORDER BY 字段1 排列方式1[,字段2 排列方式2, ...];
分页查询:
--起始索引=(查询页码-1)*每页显示数,如查询第一页的数据,起始索引可省略
SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询数量;如:
查询前十个数据
SELECT 字段列表 FROM 表名 LIMIT 10;
去除重复记录:
--去除结果集中的重复行
SELECT DISTINCT 字段列表 FROM 表名;
DCL(Data Control Language 数据控制语言):
管理用户:
--查询用户
USE mysql; SELECT * FROM user;--创建用户
CREATE USER '用户名'@'主机名' IDENTIFED BY '密码';--修改用户密码
ALTER USER '用户名'@'主机名' IDENTIFED WITH mysql_native_password BY '新密码';--删除用户
DROP USER '用户名'@'主机名';主机名可以使用'%'通配
权限控制:
--查询权限
SHOW GRANTS FOR '用户名'@'主机名';--授予权限
GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';--撤销权限
REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';多个权限之间用逗号分隔,授予时,数据库名和表名可以用*进行通配,表示所有
常用的权限:
- ALL,ALL PRIVILEGES --所有权限
- SELECT --查询数据
- INSERT --插入数据
- UPDATE --修改数据
- DELETE --删除数据
- ALTER --修改表
- DROP --删除数据库/表/视图
- CREATE --创建数据库/表

45万+





