SQL入门,一篇搞定

在这里插入图片描述

一、简介

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、删除数据

  • DELETE 语句用于删除表中的记录

  • TRUNCATE TABLE 可以清空表,也就是删除所有行

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,其实需要记得东西还是挺多的,而且最主要的是学的多,用的少。总之,不管学什么,先简单看看原理,之后就上手去操作就好了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值