SQL的语法


SQL通用语法

  1. SQL语句可以单行或多行书写,以分号(“;”)结尾。
  2. SQL语句可以使用空格或缩进增强可读性。
  3. MySQL数据库的SQL语句不区分大小写(建议关键字大写)。
  4. 注释
    单行注释:
-- 内容
# 内容(MySQL特有)

多行注释:

/* 内容 */

SQL语句分类

分类

全称

说明

DDL

Data Definition Language

数据定义语言,用于定于数据库对象(数据库、表、字段)

DML

Data Manipulation Language

数据操作语言,用来对数据库表中数据进行增加、删除、修改

DQL

Data Query Language

数据查询语言,用于查询数据库表中的记录

DCL

Data Control Language

数据控制语言,用于创建数据库、操控数据库的访问权限

数据定义语言


数据库操作 —— 数据定义(DDL)

  1. 查询:
    查询所有数据库:
show databases;

查询当前数据库:

select database();
  1. 创建:
create database [if not exists] 数据库名称 [default charset 字符集] [collate 排序规则];

(PS:方括号("[]")内的为可选项;字符集推荐使用utf8mb4;)

(意义:[if not exists]意义为若数据库内已存在该名称的数据库则不执行;)

  1. 删除:
drop database [if exists] 数据库名称;

(PS:方括号("[]")内的为可选项;)

(意义:[if exists]意义为若数据库存在则执行删除;)

  1. 使用:
use 数据库名称;

数据库操作 —— 数据定义(DDL)- 查询

  1. 查询当前数据库所以的表:
show table;
  1. 查询表结构:
desc 表名;
  1. 查询指定表的建表语句:
show create table 表名;

数数据库操作 —— 数据定义(DDL)- 创建

<数据库操作(DDL)- 创建 - 数据库:tb_user>

create table 表名(
    字段1 字段1的类型 [comment 字段1注释],
    字段2 字段2的类型 [comment 字段2注释],
    字段3 字段3的类型 [comment 字段3注释]
) [comment 表注释]

(PS:方括号("[]")内的为可选项;)

数据库操作 —— 数据定义(DDL)- 数据类型

<数据库操作(DDL)- 数据类型 - 案例:08案例.txt>

MySQL主要数据库类型:

  1. 数值类型:

(PS:DOUBLE需要设置精度、标度;)

(意义:精度意义为数值总长度;标度意义为小数点位数;)

(案例:[字段名 TINYINT UNSIGNED] 意义为当前使用的TINYINT数据类型使用的是无符号的;)

  1. 字符串类型:

(PS:带BLOB的为二进制存储数据类型;CHAR类型若存储没有达到设定的长度则会用空格填充;VARCHARA类型为所占用的长度则为所占用的空间;)

(案例:[char(10)] 意义为最大长度为10的字符;)

  1. 日期时间类型:

数据库操作 —— 数据定义(DDL)- 修改

  1. 添加字段:
alter table 表名 add 字段名 类型(长度) [comment 注释] [约束]

(PS:方括号("[]")内的为可选项;)

  1. 修改数据类型:
alter table 表名 modify 字段名 新数据类型(长度);
  1. 修改字段名和字段类型:
alter table 表名 change 旧字段名 新字段名 类型(长度) [comment 注释] [约束];

(PS:方括号("[]")内的为可选项;)

  1. 删除字段:
alter table 表名 drop 字段名;
  1. 修改表名:
alter table 表名 rename to 新表名;

数据库操作 —— 数据定义(DDL)- 删除

  1. 删除表:
drop table [if exists] 表名;

(PS:方括号("[]")内的为可选项;)

(意义:[if exists]意义为若数据库存在则执行删除;)

  1. 删除指定表,并重新创建该表:
truncate table 表名;

数据操作语言


数据库操作 —— 数据操作(DML)- 添加数据

  1. 给指定字段添加数据:
insert into 表名(字段1,字段2,字段3) values(值1,值2,值3);
  1. 给全部字段添加数据:
insert into 表名 values(值1,值2,值3);
  1. 批量给指定字段添加数据:
insert into 表名(字段1,字段2) values(值1,值2),(值1,值2);
  1. 批量给全部字段添加数据:
insert into 表名 values(值1,值2),(值1,值2),(值1,值2);

(PS:添加的数据类型为字符串、日期应该包含在引号('')中;添加的字符串类型大小应该在字段规定的范围内;)

数据库操作 —— 数据操作(DML)- 修改数据

  1. 修改表的数据:
update 表名 set 字段名1 = 值1,字段名2 = 值2,字段名3 = 值3 [where 条件];

(PS:方括号("[]")内的为可选项;)

数据库操作 —— 数据操作(DML)- 删除数据

  1. 删除表的数据:
delete from 表名 [where 条件];

(PS:方括号("[]")内的为可选项;)

数据查询语言


数据库操作 —— 数据查询(DQL)

语法:

语法:

解释:

select

字段列表

from

表名列表

where

条件列表

group by

分组字段列表

having

分组后条件列表

order by

排序字段列表

limit

分页参数

数据库操作 —— 数据查询(DQL)- 基本查询

  1. 查询多个字段:
select 字段1,字段2,字段3 from 表名;
  1. 查询所有字段:
select * from 表名;

(PS:在开发中建议不要使用星号“※”;)

  1. 设置别名:
select 字段1 as 别名1,字段2 as 别名2 from 表名;
  1. 去除重复记录:
select distinct 字段列表 from 表名;

数据库操作 —— 数据查询(DQL)- 条件查询(where)

  1. 语法:
select 字段列表 from 表名 where 条件列表;
  1. 条件:

比较运算符

功能

>

大于

>=

大于等于

<

小于

<=

小于等于

=

等于

<> 或 !=

不等于

detween ... and ...

在某个范围之内(最小值、最大值)

in(...)

在in之后的列表中的值,多选一

like 占位符

模糊匹配(“_”匹配单个字符,“%”匹配任意个字符)

is null

是null

逻辑运算符

功能

and 或 &&

并且(多个条件同时成立)

or 或 ||

或者(多个条件任意一个成立)

not 或 !

非、不是

数据库操作 —— 数据查询(DQL)- 聚合函数(count、max、min、avg、sum)

  1. 介绍:
    将一列数据作为一个整体,进行纵向运算。
  2. 常见的聚合函数:

函数

功能

count

统计数量

max

最大值

min

最小值

avg

平均值

sum

求和

  1. 语法:
select 聚合函数(字段列表) from 表名;

(PS:null值不参与聚合函数运算;)

数据库操作 —— 数据查询(DQL)- 分组查询(group by)

  1. 语法:
select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件];

(PS:方括号("[]")内的为可选项;)

  1. where与having的区别:
    执行时间不同:where是分组之前进行过滤(不满足条件的不参与分组),而having是分组之后对结果进行过滤。
    判断条件不同:where不能对聚合函数进行判断,而having可以。

数据库操作 —— 数据查询(DQL)- 排序查询(order by)

  1. 语法:
select 字段列表 from 表名 order by 字段1 排序方式1,字段2 排序方式2;
  1. 排序方式:
    ASC:升序排序(默认值)。
    DESC:降序排序。
    (PS:若是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序;)

数据库操作 —— 数据查询(DQL)- 分页查询(limit)

  1. 语法:
select 字段列表 from 表名 limit 起始索引,查询记录数;

(PS:起始索引从0开始;起始索引=(查询页面 - 1) * 每页显示记录数;分页查询是数据库的方言(limit是MySQL的);)

数据库操作 —— 数据查询(DQL)- 执行顺序

  1. 执行顺序:

执行顺序:

语法:

解释:

4

select

字段列表

1

from

表名列表

2

where

条件列表

3

group by

分组字段列表

5

having

分组后条件列表

5

order by

排序字段列表

6

limit

分页参数

数据控制语言


数据库操作 —— 数据控制(DCL)- 管理用户

  1. 查询用户:
use mysql;
select * from user;
  1. 创建用户:
create user '用户名'@'主机名' identified by '密码';
  1. 修改用户密码:
alter user '用户名'@'主机名' identified with mysql_native_password by '新密码';
  1. 删除用户:
drop user '用户名'@'主机名';

(PS:主机名可以使用百分号"%"通配符,来表示任意主机都可以访问;)

数据库操作 —— 数据控制(DCL)- 权限控制

  1. 常用的权限控制:

权限:

说明;

all、all privileges

所有权限

select

查询数据

insert

插入数据

update

修改数据

delete

删除数据

alter

修改表

drop

删除数据库、表、视图

create

创建数据库、表

  1. 查询权限:
show grants for '用户名'@'主机名';
  1. 授予权限:
grant 权限列表 on 数据库名.表名 to '用户名'@'主机名';
  1. 撤销权限:
revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名';

(PS:多个权限之间要使用逗号(",")分隔;)