乐趣区

关于sql:SQL语句基础

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

退出移动版