SQL

1 使用数据库

use RUNOOB;命令用于选择数据库。

set names utf8;命令用于设置使用的字符集。

2 SQL 对大小写不敏感

3 Like模糊查询

image-20200602161835589

image-20200602164726661

MySQL 中使用 REGEXPNOT REGEXP 运算符 (或 RLIKE 和 NOT RLIKE) 来操作正则表达式。

4 ORDER BY顺序表示

image-20200602162034482

5 插入

image-20200602162202396

image-20200602162213548

6 更改

image-20200602162330665

7 删除表

image-20200602164114694

image-20200602164125507

DROP 删除数据、释放空间、删除表定义

TRUNCATE 删除数据、释放空间

DELETE 删除数据

8 结果集前面部分数据

并不是所有数据库都支持,不同数据库可能有不同的表示方法

image-20200602164559590

9 BETWEEN

可以是数值、文本或者日期。

image-20200602164909514

10 别名

在下面的情况下,使用别名很有用:

  • 在查询中涉及超过一个表
  • 在查询中使用了函数
  • 列名称很长或者可读性差
  • 需要把两个列或者多个列结合在一起

11 JOIN

sql-join

注释:INNER JOIN 与 JOIN 是相同的。

MySQL中不支持 FULL OUTER JOIN。

在使用 join 时,onwhere 条件的区别如下:

  • 1、 on 条件是在生成临时表时使用的条件,它不管 on 中的条件是否为真,都会返回左边表(临时表?)中的记录。
  • 2、where 条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有 left join 的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。

详细内容可以查看:SQL JOIN 中 on 与 where 的区别

12 UNION

UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。

默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。

13 SELECT INTO

选择并复制到另一张表

注意:

MySQL 数据库不支持 SELECT … INTO 语句,但支持 INSERT INTO … SELECT

新表将会使用 SELECT 语句中定义的列名称和类型进行创建。您可以使用 AS 子句来应用新名称。

SELECT INTO 语句可用于通过另一种模式创建一个新的空表。只需要添加促使查询没有数据返回的 WHERE 子句即可

当然你可以使用以下语句来拷贝表结构及数据:

1
2
3
CREATE TABLE 新表
AS
SELECT * FROM 旧表

image-20200606222908238

14 CREATE DATABASE

用于创建数据库

15 CREATE TABLE

CREATE TABLE 语句用于创建数据库中的表。

表由行和列组成,每个表都必须有个表名。

16 约束

SQL 约束用于规定表中的数据规则。

如果存在违反约束的数据行为,行为会被约束终止。

约束可以在创建表时规定(通过 CREATE TABLE 语句),或者在表创建之后规定(通过 ALTER TABLE 语句)。

  • NOT NULL - 指示某列不能存储 NULL 值。
  • UNIQUE - 保证某列的每行必须有唯一的值。
  • PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
  • FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。
  • CHECK - 保证列中的值符合指定的条件。
  • DEFAULT - 规定没有给列赋值时的默认值。

(1) NOT NULL

1
2
3
4
// 添加
ALTER TABLE Persons MODIFY Age int NOT NULL;
// 删除
ALTER TABLE Persons MODIFY Age int NULL;

(2) UNIQUE

每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。

(3) PRIMARY KEY

每张表有且只有一个主键。

(4) FOREIGN KEY

FOREIGN KEY 约束用于预防破坏表之间连接的行为。

FOREIGN KEY 约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。

(5) CHECK

CHECK 约束用于限制列中的值的范围。

如果对单个列定义 CHECK 约束,那么该列只允许特定的值。

如果对一个表定义 CHECK 约束,那么此约束会基于行中其他列的值在特定的列中对值进行限制。

(6) DEFAULT

DEFAULT 约束用于向列中插入默认值。

17 CREATE INDEX

创建索引,多列用逗号分隔

SQL CREATE UNIQUE INDEX创建唯一索引

18 DROP

删除索引、表和数据库等

TRUNCATE只删除数据

19 ALERT

增、删、改(包括更改数据类型)表中已有的列

20 AUTO INCREMENT

在新记录插入表中时生成一个唯一的数字,默认从1开始

21 视图

可视化的表

注意:

视图总是显示最新的数据!每当用户查询视图时,数据库引擎通过使用视图的 SQL 语句重建数据。

视图的作用:

1、视图隐藏了底层的表结构,简化了数据访问操作,客户端不再需要知道底层表的结构及其之间的关系。

2、视图提供了一个统一访问数据的接口。(即可以允许用户通过视图访问数据的安全机制,而不授予用户直接访问底层表的权限)

3、从而加强了安全性,使用户只能看到视图所显示的数据。

4、视图还可以被嵌套,一个视图中可以嵌套另一个视图。

22 日期

MySQL 使用下列数据类型在数据库中存储日期或日期/时间值:

  • DATE - 格式:YYYY-MM-DD
  • DATETIME - 格式:YYYY-MM-DD HH:MM:SS
  • TIMESTAMP - 格式:YYYY-MM-DD HH:MM:SS
  • YEAR - 格式:YYYY 或 YY

注意:如果没有时间部分,默认时间为 00:00:00

23 NULL

无法比较 NULL 和 0;它们是不等价的

24 通用数据类型

image-20200606233216092

image-20200606233338097

参考资料

SQL 教程

SQL语言的分类(DQL、DML、DDL、DCL的概念与区别)