1、SQL 语句简介
SQL 语句的根底语法不是特地多,次要还是要多用多纯熟,了解一些基本原理和背地的货色。
SQL 语句次要分为 DDL、DML 和 DCL。DDL(Data Definition Language,数据定义语言)用于数据库或者表的构造定义 / 批改等。DML(Data Manipulation Language,数据操纵语言)用于查问或变更数据记录,也是应用最多的一部分,波及最多的一部分 ( 增删改查都属于 DML)。而 DCL(Data Control Language,数据管制语言)用于事务管制和权限管制等其余事项。
本文是《SQL 基础教程》读书笔记。
相干所有的语句都能够在 mysql 命令行中获取帮忙,间接
help [command]
即可。比方help CREATE;
。多用多查就能逐步把握各种语句了。
上面是这三种语句的一些罕用关键词介绍:
1.1、DDL
- CREATE:用于创立数据库和数据表等对象。
- ALTER:用于批改数据库和数据表等对象的构造。
- DROP:用于删除数据库和数据表等对象。
1.2、DML
-
SELECT:查问表中记录
- FROM:从指定数据表获取记录。
- WHERE:依据条件判断进行记录筛选。
- GROUP BY:分组键,用于将数据分组。
- HAVING:和 GROUP BY 一起应用,对分组后的数据进行删选。
- ORDER BY:对输入后果进行排序。
- INSERT:向表中插入新记录
- UPDATE:更新表内已存记录
- DELETE:删除表中记录
1.3、DCL
- COMMIT:确认对数据库中数据的变更。(提交事务)
- ROLLBACK:勾销对数据库中数据的变更。(回滚事务)
- GRANT:赋予用户操作权限。
- REVOKE:勾销用户操作权限。
2、罕用语句
上面是一些我集体感觉刚开始学习时可能会用上的语句。先记一些根底语句再操作会更轻松。
SHOW DATABASES;
确认数据库列表。USE [DATABASE_NAME];
切换到指定的数据库。SELECT database();
确认以后所在数据库。SHOW TABLES;
确认数据表的列表。DESC [TABLE_NAME];
确认指定数据表的构造。
一般来说,操作前最好确认分明,以后在哪个数据库?须要操作哪个数据库的表?表的构造 (列) 定义是否正确?上述的这些语句能够提供帮忙。
其次,除了下面这些和数据内容相干的语句,有时候还须要确认服务器的状态和参数。对于数据库服务自身还会有一些语句来查看服务器状态和参数,能够用 STAUTS;
和SHOW STATUS;
以及 SHOW VARIABLES;
等。
SHOW
语句也可通过 help 命令进行进一步理解。
3、SQL 语句应用办法
上面是一些 SQL 语句的语法以及注意事项。
3.1、常见 DDL 语句语法
-- 创立数据库
CREATE DATABASE [数据库名];
-- 删除数据库
DROP DATABASE [数据库名];
-- 在以后数据库下新建一个表
CREATE TABLE [表名]
([列名 1] [数据类型] [该列所需束缚],
[列名 2] [数据类型] [该列所需束缚],
[列名 3] [数据类型] [该列所需束缚],
.
.
.
[表束缚 1],[表束缚 2], .......);
-- 在以后数据库下,删除指定表
DROP TABLE [表名];
-- 在以后数据库下,给指定表减少一列
ALTER TABLE [表名] ADD COLUMN [列定义];
-- 在以后数据库下,删除指定表的一列(留神,列删除审慎操作)ALTER TABLE [表名] DROP COLUMN [列名];
-- 表名批改的 2 种形式
ALTER TABLE [旧表名] RENAME TO [新表名];
RENAME TABLE [旧表名] TO [新表名];
- 创立表时,应用的是圆括号,不是大括号。
- 主键束缚能够写在最初,也能够间接写在每行最初的该列所需束缚上。
比方:id, INTEGER, NOT NULL PRIMARY KEY,
其次,主键默认带非空。其余的列默认可空,须要指定非空。
- 须要留神的是,线上数据库,禁止手动删库删表,更改表构造只能增加。集体倡议,如果须要删库删表,须要通过确认、测试、尽量采纳自动化执行,尽量不要手动删除
3.2、常见 DML 语句语法
SELECT [列名 1] AS [别名 1], [列名 2] AS [别名 2], ...
FROM [表名]
WHERE [条件表达式]
GROUP BY [列]
HAVING [条件表达式]
ORDER BY [列名] [程序];
须要留神的是,上述的书写语法程序和 SELECT 理论执行程序并不同。
理论执行程序为:FROM --> WHERE --> GROUP BY --> HAVING --> SELECT --> ORDER BY
- 在判断符这里,规范 SQL 应用
<>
做不等于判断,而不是!=
。应用<>
比拟标准。 - 其次,在 SELECT 和 WHERE 中,均可应用运算符,以多列为数据源进行计算并输入。(比方计算两列之差等)不过我感觉,在 SELECT 中齐全没必要应用运算符(齐全能够不禁数据库计算),WHERE 中有时候可能须要。
- GROUP BY 个别和 HAVING 一起应用,先按列分组,再加一个通用条件,筛选掉不适合的组。
- 因为 ORDER BY 在 SELECT 后执行,所以 SELECT 处定义的别名都能够应用。
- 列限度:
如果应用了 GROUP BY,那么后续的 HAVING,SELECT 列名抉择都会受限制。
一般来说列只能有 3 种:1、常数。2、聚合函数。3、GROUP BY 的列(聚合键)。(聚合函数的参数则不受限制了,能够是任何列)
ORDER BY 没有列名限度,任何列都能够,聚合函数也可。
-- 向指定表中插入指定数据
INSERT INTO [表名] (列 1, 列 2, 列 3, ……) VALUES (值 1, 值 2, 值 3, ……);
-- 依据指定条件,从指定表删除记录(留神,删除针对的是记录)DELETE FROM [表名] WHERE [条件表达式];
-- 更新指定表中的、抉择符合条件的记录,批改指定列的数据
UPDATE [表名]
SET [列名 1] = [表达式 1],
SET [列名 2] = [表达式 2] ...
WHERE [条件表达式];
- 如果进行全列增加,能够省略列名。(还是倡议减少列名,更易读)
- 插入时,VALUES ()能够替换为一个查问,就能够实现表数据的复制。(不过不举荐这样复制。)
- 这里的 删除,针对的是记录,也就是行。而 DROP TABLE 会连表构造一起删除。
- GROUP BY 和 HAVING 以及 ORDER BY 都是查问时候须要的,增删改都不须要。
3.3、Binlog 相干语句
-- 查看所有 Binlog 列表
SHOW MASTER LOGS;
-- 查看以后 Binlog 文件
SHOW MASTER STAUTS;
-- 查看指定 Binlog 文件内容
SHOW BINLOG EVENTS IN '[binlog-file-name]';
如果须要查看表的历史操作,这种形式查看起来比间接看 Binlog 文件自身更容易。(以后,须要关上 Binlog 设置才会生成 Binlog)
小结
本文简略介绍了 SQL 语句的分类,重点在创立治理表构造语句、以及删改查的语句根本语法,还介绍了一些罕用的语句,以及 Binlog 的查看形式。
SQL 语句重在实际,须要在工作中多多应用就会更加相熟。相比于根底语句,查问优化则更为重要,后续也会持续介绍。