SQL常用语句(DDL、DML、DQL)

SQL常用语句(DDL、DML、DQL)以及多表查询

  • 一、DDL(Data Definition Language)
    • 1、DDL操作数据库
      • ①查询
      • ②创建
      • ③删除
      • ④使用数据库
    • 2、DDL操作数据表
      • ①查询
      • ②创建
      • ③修改
      • ④删除
      • ⑤外键约束
  • 二、DML(Data Manipulation Language)
    • ①添加数据
    • ②修改数据
    • ③删除数据
  • 三、DQL(Data Query Language)
    • ①基础查询
    • ②条件查询
    • ③排序查询
    • ④分组查询
    • ⑤分页查询
  • 四、多表查询
    • ①连接查询
    • ②子查询

一、DDL(Data Definition Language)

用来定义数据库对象:数据库、表、列等。

1、DDL操作数据库

①查询

SHOW DATABASES;

②创建

----a) 创建数据库

CREATE DATABASE 数据库名称;

----b) 创建数据库(判断,若不存在则创建)

CREATE DATABASE IF NOT EXISTS 数据库名称;

③删除

----a) 删除数据库

DROP DATABASE 数据库名称;

----b) 删除数据库(判断,若存在则删除)

DROP DATABASE IF EXISTS 数据库名称;

④使用数据库

----a) 查看当前使用的数据库

SELECT DATABASE();

----b) 使用数据库

USE 数据库名称;

2、DDL操作数据表

①查询

----a) 查看当前数据库下所有表名称

SHOW TABLES;

----b) 查询表结构

DESC 表名称;

②创建

CREATE TABLE 表名(
	字段名1  数据类型1 [约束11 约束12 ...],
	字段名2  数据类型2 [约束21 约束22 ...],
	...
	字段名n  数据类型n [约束n1 约束n2 ...]
);

SQL数据类型如图SQL常用语句(DDL、DML、DQL)_第1张图片 SQL各约束如图
SQL常用语句(DDL、DML、DQL)_第2张图片

③修改

----a) 修改表名

ALTER TABLE 表名 RENAME TO 新表名;

----b) 添加一列

ALTER TABLE 表名 ADD 列名 数据类型;

----c) 修改数据类型

ALTER TABLE 表名 MODIFY 列名 新数据类型;

----d) 修改列名和数据类型

ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型;

----e) 删除列

ALTER TABLE 表名 DROP 列名;

④删除

----a) 删除表

DROP TABLE 表名;

----b) 删除表(判断,若存在则删除)

DROP TABLE IF EXISTS 表名;

⑤外键约束

外键用于让两个表的数据间建立链接,保证数据的一致性与完整性。
----a) 创建表时添加外键约束

CREATE TABLE 表名(
	列名 数据类型
	...
	[CONSTRAINT 外键名称] FOREIGN KEY(外键列名) REFERENCES 主表(主表列名)
);

----b) 建完表后添加外键约束

ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY(外键列名) REFERENCES 主表(主表列名);

----c) 删除约束

ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;

二、DML(Data Manipulation Language)

对表中数据进行增删改。

①添加数据

----a) 指定列添加数据

INSERT INTO 表名(列名1, 列名2, ...) VALUES(1,2, ...);

----b) 全部列添加数据

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

----c) 批量添加数据

# 以方式a批量添加
INSERT INTO 表名(列名1, 列名2, ...) VALUES(1,2, ...), (1,2, ...), (1,2, ...)...;
# 以方式b批量添加
INSERT INTO 表名 VALUES(1,2, ...), (1,2, ...), (1,2, ...)...;

②修改数据

UPDATE 表名 SET 列名1=1, 列名2=2,...[WHERE 条件];

③删除数据

DELETE FROM 表名 [WHERE 条件];

三、DQL(Data Query Language)

查询表中数据。

SELECT 
    字段列表
FROM 
    表名列表
WHERE 
    条件列表
GROUP BY
    分组字段
HAVING 
    分组后条件
ORDER BY 
    排序字段
LIMIT 
    分页限定;
  • 基础查询
  • 条件查询(WHERE)
  • 分组查询(GRUOP BY)
  • 排序查询(ORDER BY)
  • 分页查询(LIMIT)

①基础查询

----a) 去除重复记录

SELECT DISTINCT 字段列表 FROM 表名; 

----b) 起别名

# 字段名与别名间可使用 as 也可直接使用空格隔开
SELECT 字段1 as 别名1, 字段2 别名2, ... FROM 表名; 

②条件查询

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

各条件符号功能如图所示
SQL常用语句(DDL、DML、DQL)_第3张图片

③排序查询

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

排序方式:

  • ASC:升序排列(默认)
  • DESC:降序排列

④分组查询

SELECT 字段列表 FROM 表名 [WHERE 分组前条件限定] GROUP BY 分组字段名[HAVING 分组后条件过滤];

注意:分组之后,查询字段为聚合函数与分组字段,查询其他字段无意义
where 与 having 区别:

  • 执行时机不同:where 是分组之前进行限定,不满足 where 条件,则不参与分组,而 having 是分组之后对结果进行过滤。
  • 可判断条件不一样:where 不能对聚合函数进行判断,having 可以。
    执行顺序: where > 聚合函数 > having

聚合函数
概念:将一列数据作为一个整体,进行纵向计算。

  • 聚合函数语法
SELECT 聚合函数(列名) FROM 表名; 

** null 值不参与所有聚合函数运算**
各聚合函数功能如图所示****
SQL常用语句(DDL、DML、DQL)_第4张图片

⑤分页查询

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

tips:

  • 起始索引:从0开始
  • 计算公式:起始索引 = (当前页码 - 1) * 每页显示条数
  • limit 是Mysql 数据库方言,oracle 分页查询使用 rownumber,SQL Server 分页查询使用 top。

四、多表查询

SQL常用语句(DDL、DML、DQL)_第5张图片

  • 笛卡尔积:取A,B集合所有组合情况
  • 多表查询:从多张表中查询数据

①连接查询

----a) 内连接:相当于从A,B交集数据

# 隐式内连接
SELECT 字段列表 FROM1,2... WHERE 条件;

# 显示内连接
SELECT 字段列表 FROM1 [INNER] JOIN2 ON 条件;

----b) 外连接:
··············左外连接:相当于查询 A 表所有数据和交集部分数据

SELECT 字段列表 FROM1 LEFT [OUTER] JOIN2 ON 条件;

··············右外连接:相当于查询 B 表所有数据和交集部分数据

SELECT 字段列表 FROM1 RIGHT [OUTER] JOIN2 ON 条件;

②子查询

----a) 单行单列:作为条件值,使用=、!=、>、<等进行条件判断

SELECT 字段列表 FROMWHERE 字段名 = (子查询);

----b) 多行单列:作为条件值,使用 in 关键字进行条件判断

SELECT 字段列表 FROMWHERE 字段名 IN (子查询);

----c) 多行多列:作为虚拟表

SELECT 字段列表 FROM (子查询) WHERE 条件;

你可能感兴趣的:(WEB方向,数据库,sql,mysql)