SQL语句汇总

目录

1、概述

1.1 常用数据库语句     

1.2 常用字符类型

2、DDL数据库操作

2.1 数据库

2.2 数据表

3、DML数据库操作

4、DQL数据库操作

4.1 单表查询

4.1.1 选择列

4.1.2 定义列别名

4.1.3 替换查询结果中的数据

4.1.4 计算列值

4.1.5 消除重复行

4.2 WHERE子句

4.2.1 比较运算

4.2.2 逻辑运算

4.2.3 匹配模式

4.2.4 范围比较

4.2.5 空值比较

4.2 多表查询

4.2.1 FROM子句

4.2.2 多表连接

4.2.3 子查询

4.2.4 联合查询

4.3 分类汇总与排序

4.3.1 聚合函数

4.3.2 GROUP BY子句

4.3.3 HAVING子句

4.3.4 ORDER BY子句

4.3.5  LIMIT子句


1、概述

  • 数据库(Database,DB)

        数据库是存放数据的仓库,是长期存储在计算机内、有组织有结构的、可共享的数据集合。


  • 数据库管理系统(Database Management System,DBMS)

        数据管理系统是为数据库的建立、使用和维护而配置的数据库管理软件,是数据库系统的核心。


  • 数据库应用系统(Database Application Systems,DBAS)

        数据库应用系统是基于数据库的应用软件,由数据库和应用程序组成。数据库由数据库管理系统创建,而应用程序可以由任何支持数据编程的程序设计语言编写。


  • 数据库系统(Database System,DBS)

        数据库系统是指引入数据库技术的计算机应用系统,通常由数据库(DB)、数据库管理系统(DBMS)、应用程序、数据库系统管理员(DSA)和用户(user)组成。


  •  结构化查询语言(Structured Query Language,SQL)

        结构化查询语言是一种用于操作关系型数据库的标准化语言。


1.1 常用数据库语句     

  • DDL(Data Definition Language,数据定义语言):用于创建、修改和删除数据库中的对象。

  • DML(Data Manipulation Language,数据操作语言):用于对数据库中的数据进行操作。

  • DQL(Doctrine Query Language,数据库查询语言):用于查询和操作数据库。


1.2 常用字符类型

  1. 字符串(CHAR、VARCHAR、TEXT等)
  2. 数值(NUMERIC、INTEGER、FLOAT等)
  3. 日期和时间(DATE、TIME、DATETIME等)
  4. 布尔类型(BOOLEAN)

2、DDL数据库操作

2.1 数据库

  • 创建数据库
create database 数据库名称
  • 查看数据库
show databases 数据库名称
  • 修改数据库
alter database 数据库名称
  • 删除数据库
drop database 数据库名称
  • 使用数据库
use 数据库名称;

2.2 数据表

  • 数据完整约束
  1. 主键约束:PRIMARY KEY,非空且唯一

  2. 外键约束:FOREIGN KEY,定义外键并指定它引用另一个表格的主键;

  3. 唯一约束:UNIQUE,列的值是唯一(值可取NULL,但须使用NULL或NOT NULL声明);

  4. 非空约束:NOT NULL,列的内容不能为NULL

  5. 列的默认值:DEFAULT;

  6. 检查约束:CHECX,用于确保某个属性中的值符合特定条件或规则。

 一个数据表中只能创建一个主键,但可以有若干个UNIQUE键;

  • 创建数据表
create table 表名
  • 复制数据表
create table if not exists 表名
    like 参照表名
        as (select语句)

LIKE:复制表的结构

AS:复制表结构的同时复制其数据

  • 删除数据表
drop table 表名

DROP TABLE语句删除一个表,则所有完整性约束也都被删除了。

alter table 表名 drop 完整性约束

使用ALTER TABLE语句,可以独立地删除完整性约束不会删除表本身

  • 显示数据表信息

(1)、显示数据表文件名

show tables;

(2)、显示数据表结构

describe 表名;

3、DML数据库操作

  • 插入数据
insert [into] 表名 (列名,...)
    values ({表达式},...)
  • 修改数据
update 表名
set 列名1 = 表达式1[ ,列名2 = 表达式2 ...]
[where 条件]

多表修改数据

update 表名列表
    set 列名1 = 表达式1[ ,列名2 = 表达式2 ...]
        [where 条件]
  • 删除数据
delete from 表名
    [where 条件]

多表删除数据

delete 表名1[,表名2...]
    from 表名列表
        [where 条件]

DELETE语句删除一行数据TRUNCATE TABLE清除表中所有记录

truncate table 表名

4、DQL数据库操作

4.1 单表查询

4.1.1 选择列

查询指定列

select 列名
    from 表名

全表查询

select * from 表名;

4.1.2 定义列别名

定义的列别名有空格时,必须使用'引号'将其括起来。

不允许在使用WHERE子句中使用列别名。

select 列名 [as] 别名

4.1.3 替换查询结果中的数据

select 列名
    case
        when 条件1 then 表达式1
        when 条件2 then 表达式2
        ......
        else 表达式n
    end
from 表名;

4.1.4 计算列值

使用SELECT语句对列进行查询时,在结果中可以输出对列值进行计算后的值,即SELECT子句可使用表达式作为结果。

select 列名,round(表达式)
    from 表名

4.1.5 消除重复行

select distinct 列名1[,列名2...]

4.2 WHERE子句

where <判定运算>

4.2.1 比较运算

表达式{ = | < | <= | > | >= | <=> | <> | != }

4.2.2 逻辑运算

4.2.3 匹配模式

表达式 [not] like 表达式

 使用LIKE进行模式匹配时,常用特殊符号“_” “%”进行模糊查询,“%”代表0个或多个字符“_”代表单个字符

4.2.4 范围比较

范围比较的关键字有BETWEEN和IN两个。

表达式 [not] between 表达式1 and 表达式2

若表达式expression的值在表达式1与表达式2之间(包括两值),返回TRUE,否则返回FALSE;表达式1的值不能大于表达式2的值。

4.2.5 空值比较

需判定一个表达式的值是否为空值时,可使用IS NULL关键字。

表达式 is [not] null

4.2 多表查询

4.2.1 FROM子句

FROM子句中将各个表用逗号分隔,这样就指定了全连接。

from 表名1[,表名2...]                                                /*查询表*/
    join子句                                                        /*连接表*/

4.2.2 多表连接

1.连接方式:

全连接:是指将每个表的每行都与其他表中的每行交叉,以产生所有可能的组合,列包含了所有表中出现的列,也就是笛卡尔积。

FROM 子句中将各个表用逗号分隔,这样就指定了全连接,全连接得到的表产生了数量非常多的行。经常需要用 WHERE 子句来筛选满足条件的记录。

内连接:它将两个表格中的匹配记录组合成一个结果集。内连接仅包括那些在两个表格中都有匹配记录的行。

[inner] join

外连接:包括左外连接和右连接

左外连接:结果表中除了匹配行外,还包括左表有但右表中不匹配的行,对于这样的行,从右表中选择的列被设置为 NULL。

LEFT OUTER JOIN

右外连接:结果表中除了匹配行外,还包括右表有但左表中不匹配的行,对于这样的行,从左表中选择的列被设置为 NULL。

RIGHT OUTER JOIN

2.join连接

表名1 inner join 表名2
    on 连接条件

1.内连接

指定了INNER 关键字的连接是内连接。内连接是在 FROM子句产生的中间结果中应用 ON条件后得到的结果。

内连接是系统默认的,可以省略 INNER 关键字。使用内连接后,FROM 子句中的 ON条件主要用来连接表,其他并不用来连接表的条件可以使用 WHERE 子句来指定。

2.外连接

指定了OUTER关键字的连接为外连接。

4.2.3 子查询

在查询中,另一个查询的结果可以作为条件的一部分,例如,判定列值是否与某个查询的结果集中的值相等,作为查询条件的一部分的查询称为子查询。SQL 标准允许 SELECT语句多层嵌套使用,用来表示复杂的查询。子查询除了可以用在 SELECT 语句中,还可以用在INSERT、UPDATE 及 DELETE 语中。查询通常与IN、EXISTS 谓词及比较运算符结合使用。

1.IN子查询

IN子查询用于进行一个给定值是否在子查询结果集中的判断。

表达式 [not] in (子查询)

2.比较查询

可认为是IN子查询的扩展,它使表达式的值与子查询的结果进行比较运算。

表达式{ < | <= | = | > | >= | != | <>} { ALL | SOME | ANY }(子查询)

3.EXISTS子查询
FXISTS 谓词用于测试子查询的结果是否为空表,若子查询的结果集不为空,EXISTS派回TRUE,否则返回 FALSE。EXISTS 还可与 NOT 结合使用,即NOT EXISTS、其返回值与EXISTS刚好相反。

[ NOT ] EXISTS (子查询)

4.2.4 联合查询

 两个表的数据按照一定的查询条件查询出来以后,需要将结果合并到一起显示出来。这个时候就需要用到 UNION 关键字。

SELECT 语句1 UNION [UNION选项] SELECT 语句2;

4.3 分类汇总与排序

4.3.1 聚合函数

聚合函数是一种在SQL中用于计算和处理数据的函数。它们通常用于对查询结果进行汇总,并返回单个值。SQL中的聚合函数包括SUM、AVG、MAX、MIN和COUNT等。

1.COUNT函数

用于统计表中满足条件的行数或总行数,返回SELECT语句检索到的行中非NULL值的数目,若找不到匹配的行,则返回0。

COUNT ( { [ ALL | DISTINCT ] 表达式 } | * )

2.MAX函数和MIN函数

MAX 函数和MIN 函数分别用于求表达式中所有值项的最大值与最小值

MAX / MIN ( [ ALL | DISTINCT ] 表达式 )

3.SUN函数和AVG函数

SUM函数和AVG函数分别用于求表达式中所有值项的总和与平均值

SUM / AVG ( [ ALL | DISTINCT ] 表达式)

4.3.2 GROUP BY子句

GROUP BY子句主要用于根据字段对行进行分组

GROUP BY ( 列名 | 表达式 }[ ASC | DESC ],...[ WITH ROLLUP ]

4.3.3 HAVING子句

使用HAVING 子句的目的与 WHERE 子句类似,不同的是 WHERE子句用来在FROM子句之后选择行,而HAVING 子句用来在 GROUPBY子之后选择行。

HAVING 条件

4.3.4 ORDER BY子句

ORDER BY子句可以保证结果中的行按一定顺序排列

ORDER BY { 列名 | 表达式 | 列编号 } [ ASC | DESC ] ,...

关键字ASC表示升序排列,DESC表示降序排列,系统默认为ASC

4.3.5  LIMIT子句

LMIT子句是SELECT语句的最后一个子句,主要用于限制被SELECT语句返回的行数

LIMIT {[偏移量,]行数| 行数OFESET 偏移量}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值