SQL入门级基础知识
- 一、简介
-
- 1、什么是数据库(Database)?
- 2、数据库管理系统(Database Management System)
- 3、RDBMS(关系型数据库)
-
- 4、数据表(Table)
-
- 1. 数据库和表的关系
- 2. 行(row)
- 3. 列(column)
- 二、SQL
-
- 1、标准SQL
- 2、SQL语句及种类
-
- 1. DDL(Data Definition Language,数据定义语言)
- 2. DML(Data Manipulation Language,数据操纵语言)
- 3. DCL(Data Control Language,数据控制语言)
- 3、SQL语言特性
- 4、SQL语法结构
- 5、SQL语法要点
- 三、增删改查(CRUD必知必会)
-
- 1、插入数据
- 2、删除数据
-
- 1. DELETE语句的基本语法
- 2. 搜索型DELETE
- 3. 清空表中的数据
- 3、更新数据
-
- 1. UPDATE语句的基本语法
- 2. 搜索型UPDATE
- 4、查询数据
-
- 1. 基本的SELECT语句
- 2. 查询全部的列
- 3. 去重操作
- 4.WHERE子句
- 四、复杂查询
-
- 五、学习体会和总结
一、简介
1、什么是数据库(Database)?
A DATABASE is a collection of data stored in a format that can easily be accessed.
数据库是以易于访问的格式存储的数据的集合。
2、数据库管理系统(Database Management System)
- Relational (关系型数据库)
- NoSQL (非关系型数据库)
3、RDBMS(关系型数据库)
1. 常见系统结构
- 使用 RDBMS 时,最常见的系统结构就是客户端 / 服务器类型(C/S类型)
本文主要讲述的是关系型数据库,常见的关系型数据库有:
- MySQL
- SQL Server
- Oracle
- … …
4、数据表(Table)
某种特定类型数据的结构化清单
1. 数据库和表的关系
2. 行(row)
3. 列(column)
二、SQL
SQL全称是Structured Query Language。即为结构化查询语言。SQL是很有趣的编程语言,本文会介绍SQL常见的用法,并不会特别展开去说里面的核心原理。
当然,我也不会啊。(手动狗头)
1、标准SQL
- SQL 是用来操作关系数据库的语言。它原本是为了提高数据库查询效率而开发的语言,但是现在不仅可以进行数据查询,就连数据的插入和删除等操作也基本上都可以通过 SQL 来完成了。国际标准化组织(ISO)为 SQL 制定了相应的标准,以此为基准的SQL 称为标准 SQL。
2、SQL语句及种类
SQL 用关键字、表名、列名等组合而成的一条语句(SQL 语句)来描述操作的内容。关键字是指那些含义或使用方法已事先定义好的英语单词,存在包含“对表进行查询”或者“参考这个表”等各种意义的关键字。
根据对 RDBMS 赋予的指令种类的不同,SQL 语句可以分为以下三类:
1. DDL(Data Definition Language,数据定义语言)
用来创建或者删除存储数据用的数据库以及数据库中的表等对象。DDL 包含以下几种指令。
- CREATE:创建数据库和表等对象
- DROP: 删除数据库和表等对象
- ALTER: 修改数据库和表等对象的结构
2. DML(Data Manipulation Language,数据操纵语言)
用来查询或者变更表中的记录。DML 包含以下几种指令。
- SELECT:查询表中的数据
- INSERT:向表中插入新数据
- UPDATE:更新表中的数据
- DELETE:删除表中的数据
3. DCL(Data Control Language,数据控制语言)
用来确认或者取消对数据库中的数据进行的变更。除此之外,还可以对 RDBMS 的用户是否有权限操作数据库中的对象(数据库表等)进行设定。DCL 包含以下几种指令。
- COMMIT: 确认对数据库中的数据进行的变更
- ROLLBACK:取消对数据库中的数据进行的变更
- GRANT: 赋予用户操作权限
- REVOKE: 取消用户的操作权限
SQL根据功能不同可以分为三类,其中使用最多的是 DML。说白了就是增删改查(CRUD),所以慢慢来喽。
3、SQL语言特性
- SQL 是一种声明式语言
SQL 语言声明的是结果集的属性,计算机会根据 SQL 所声明的内容来从数据库中挑选出符合声明的数据,而不是像传统编程思维去指示计算机如何操作。
SELECT first_name, last_name FROM employees WHERE salary > 100
上面的例子很容易理解,我们不关心这些雇员记录从哪里来,我们所需要的只是那些薪水大于100的人的数据。
4、SQL语法结构
SQL 语法结构包括:
- 子句:是语句和查询的组成成分。(在某些情况下,这些都是可选的。)
- 表达式:可以产生任何标量值,或由列和行的数据库表
- 谓词:给需要评估的 SQL 三值逻辑(3VL)(true/false/unknown)或布尔真值指定条件,并限制语句和查询的效果,或改变程序流程
- 查询:基于特定条件检索数据。这是 SQL 的一个重要组成部分
- 语句:可以持久地影响纲要和数据,也可以控制数据库事务、程序流程、连接、会话或诊断
5、SQL语法要点
- SQL语句要以分号(;)结尾
- SQL语句不区分大小写
- 单词需要用半角空格或者换行来分隔
三、增删改查(CRUD必知必会)
1、插入数据
INSERT INTO 语句用于向表中插入新记录。
INSERT INTO <表名> (列1, 列2, 列3, ……) VALUES (值1, 值2, 值3, ……);
2、删除数据
1. DELETE语句的基本语法
DELETE FROM <表名>;
2. 搜索型DELETE
DELETE FROM <表名>
WHERE <条件>;
3. 清空表中的数据
TRUNCATE TABLE <表名>;
注:与 SELECT 语句不同的是,DELETE 语句中不能使用 GROUP BY、HAVING 和 ORDER BY 三类子句,而只能使用WHERE 子句。原因很简单,GROUP BY 和 HAVING 是从表中选取数据时用来改变抽取数据形式的,而 ORDER BY 是用来指定取得结果显示顺序的。因此,在删除表中数据时它们都起不到什么作用。
3、更新数据
1. UPDATE语句的基本语法
UPDATE <表名>
SET <列名> = <表达式>;
2. 搜索型UPDATE
UPDATE <表名>
SET <列名> = <表达式>
WHERE <条件>;
4、查询数据
没什么好说的,不论刚开始接触数据库还是有经验的开发者,查询绝对是最常见的操作,没有之一。
1. 基本的SELECT语句
SELECT <列名>,……
FROM <表名>;
2. 查询全部的列
SELECT *
FROM <表名>;
星号(*)代表全部列的意思。但是,如果使用星号的话,就无法设定列的显示顺序了。这时就会按照 CREATE TABLE 语句的定义对列进行排序。
3. 去重操作
SELECT DISTINCT
<列名> FROM <表名>;
4.WHERE子句
SELECT <列名>, ……
FROM <表名>
WHERE <条件表达式>;
总之,一个大概的顺序就是
- SELECT[DISTINCT]
- FROM
- WHERE
- GROUP BY
- HAVING
- UNION
- ORDER BY
剩下的就是各种算术运算符和逻辑运算符等等了,各种语言里都差不多,就是奇葩的不等于(<>)还有 BETWEEN、 LIKE、IN注意一下就行了,忘了就面向Google编程就行了。
四、复杂查询
1、 视图
从 SQL 的角度来看视图就是一张表。那为什么还要有视图呢?他们的本质区别其实就是 : “是否保存了实际的数据”
1、视图优点
- 视图无需保存数据,因此可以节省存储设备的容量。
- 可以将频繁使用的 SELECT 语句保存成视图,这样就不用每次都重新书写了。
2、视图创建
CREATE VIEW 视图名称(<视图列名1>, <视图列名2>, ……)
AS
<SELECT语句>
3、删除视图
DROP VIEW 视图名称(<视图列名1>, <视图列名2>, ……)
2、子查询
- 子查询是嵌套在较大查询中的 SQL 查询。子查询也称为内部查询或内部选择,而包含子查询的语句也称为外部查询或外部选择。
- 子查询可以嵌套在 SELECT,INSERT,UPDATE 或DELETE 语句内或另一个子查询中。
- 子查询通常会在另一个 SELECT 语句的 WHERE 子句中添加。
- 您可以使用比较运算符,如 >,<,或 =。比较运算符也可以是多行运算符,如 IN,ANY 或 ALL。
- 子查询必须被圆括号 () 括起来。
- 内部查询首先在其父查询之前执行,以便可以将内部查询的结果传递给外部查询。
五、学习体会和总结
作为入门文章就写到这里好了,大家学数据库一开始也都是学的增删改查吧。后续会陆续写连接、函数、排序和聚合、索引、约束、事务处理、权限控制、存储控制、游标、触发器、集群包括数据库设计等内容,之后还会去说明编程语言和数据库的交互,不过主要是用mysql吧,其实用什么都一样,反正差距也不大。
关于SQL,其实需要记得东西还是挺多的,而且最主要的是学的多,用的少。总之,不管学什么,先简单看看原理,之后就上手去操作就好了。