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语句重在实际,须要在工作中多多应用就会更加相熟。相比于根底语句,查问优化则更为重要,后续也会持续介绍。