导读: SQL语言有40多年的历史,从它被应用至今几乎无处不在。我们消费的每一笔支付记录,收集的每一条用户信息,发出去的每一条消息,都会使用数据库或与其相关的产品来存储,而操纵数据库的语言正是 SQL !

SQL 对于现在的互联网公司生产研发等岗位几乎是一个必备技能,如果不会 SQL 的话,可能什么都做不了。你可以把 SQL 当做是一种工具,利用它可以帮助你完成你的工作,创造价值。
01 SQL 介绍
1. 什么是 SQL
SQL 是用于访问和处理数据库的标准的计算机语言。
SQL 指结构化查询语言
SQL 使我们有能力访问数据库
SQL 是一种 ANSI 的标准计算机语言

SQL 可与数据库程序协同工作,比如 MS Access、DB2、Informix、MS SQL Server、Oracle、Sybase 以及其他数据库系统。
但是由于各种各样的数据库出现,导致很多不同版本的 SQL 语言。
为了与 ANSI 标准相兼容,它们必须以相似的方式共同地来支持一些主要的关键词(比如 SELECT、UPDATE、DELETE、INSERT、WHERE 等等),这些就是我们要学习的SQL基础。
2. SQL 的类型
可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL)。
数据查询语言(DQL: Data Query Language)
数据操纵语言(DML:Data Manipulation Language)
3. 学习 SQL 的作用
SQL 是一门 ANSI 的标准计算机语言,用来访问和操作数据库系统。SQL 语句用于取回和更新数据库中的数据。
SQL 面向数据库执行查询
SQL 可从数据库取回数据
SQL 可在数据库中插入新的记录
SQL 可更新数据库中的数据
SQL 可从数据库删除记录
SQL 可创建新数据库
SQL 可在数据库中创建新表
SQL 可在数据库中创建存储过程
SQL 可在数据库中创建视图
SQL 可以设置表、存储过程和视图的权限
4. 数据库是什么
顾名思义,你可以理解为数据库是用来存放数据的一个容器。
打个比方,每个人家里都会有冰箱,冰箱是用来干什么的?冰箱是用来存放食物的地方。

同样的,数据库是存放数据的地方。正是因为有了数据库后,我们可以直接查找数据。
例如你每天使用余额宝查看自己的账户收益,就是从数据库读取数据后给你的。
最常见的数据库类型是关系型数据库管理系统(RDBMS):
RDBMS 是 SQL 的基础,同样也是所有现代数据库系统的基础,比如:
MS SQL Server
IBM DB2
Oracle
MySQL
Microsoft Access

RDBMS 中的数据存储在被称为表(tables)的数据库对象中。表 是相关的数据项的集合,它由列和行组成。
由于本文主要讲解 SQL 基础,因此对数据库不做过多解释,只需要大概了解即可。
咱们直接开始学习SQL!
02 SQL 基础语言学习
在了解 SQL 基础语句使用之前,我们先讲一下 表 是什么?
一个数据库通常包含一个或多个表。每个表由一个名字标识(例如“客户”或者“订单”)。表包含带有数据的记录(行)。
下面的例子是一个名为 “Persons” 的表:
IdLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew York3CarterThomasChangan StreetBeijing上面的表包含三条记录(每一条对应一个人)和五个列(Id、姓、名、地址和城市)。
有表才能查询,那么如何创建这样一个表?
1. CREATE TABLE – 创建表
CREATE TABLE 语句用于创建数据库中的表。
语法:
CREATE TABLE 表名称 ( 列名称1 数据类型, 列名称2 数据类型, 列名称3 数据类型, .... );数据类型(data_type)规定了列可容纳何种数据类型。下面的表格包含了SQL中最常用的数据类型:
数据类型描述integer(size),int(size),smallint(size),tinyint(size)仅容纳整数、在括号内规定数字的最大位数decimal(size,d),numeric(size,d)容纳带有小数的数字、“size” 规定数字的最大位数、“d” 规定小数点右侧的最大位数char(size)容纳固定长度的字符串(可容纳字母、数字以及特殊字符)、在括号中规定字符串的长度varchar(size)容纳可变长度的字符串(可容纳字母、数字以及特殊的字符)、在括号中规定字符串的最大长度date(yyyymmdd)容纳日期实例:
本例演示如何创建名为 “Persons” 的表。
该表包含 5 个列,列名分别是:“Id_P”、“LastName”、“FirstName”、“Address” 以及 “City”:
CREATE TABLE Persons ( Id_P int, LastName varchar(255), FirstName varchar(255), Address varchar(255), City varchar(255) );Id_P 列的数据类型是 int,包含整数。其余 4 列的数据类型是 varchar,最大长度为 255 个字符。


空的 “Persons” 表类似这样:

可使用 INSERT INTO 语句向空表写入数据。
2. INSERT – 插入数据
INSERT INTO 语句用于向表格中插入新的行。
语法:
INSERT INTO 表名称 VALUES (值1, 值2,....); 我们也可以指定所要插入数据的列: INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....);实例:
本例演示 “Persons” 表插入记录的两种方式:
1)插入新的行
INSERT INTO Persons VALUES (1, 'Gates', 'Bill', 'Xuanwumen 10', 'Beijing');2)在指定的列中插入数据
INSERT INTO Persons (LastName, Address) VALUES ('Wilson', 'Champs-Elysees');
插入成功后,数据如下:

这个数据插入之后,是通过 SELECT 语句进行查询出来的,别急马上讲!
3. SELECT – 查询数据SELECT 语句用于从表中选取数据,结果被存储在一个结果表中(称为结果集)。
语法:
SELECT * FROM 表名称;我们也可以指定所要查询数据的列:
SELECT 列名称 FROM 表名称;注意:
SQL 语句对大小写不敏感,SELECT 等效于 select。
实例:
SQL SELECT * 实例:
SELECT * FROM Persons;
注意:
星号(*)是选取所有列的快捷方式。
如需获取名为 “LastName” 和 “FirstName” 的列的内容(从名为 “Persons” 的数据库表),请使用类似这样的 SELECT 语句:
SELECT LastName,FirstName FROM Persons;
如果一张表中有多行重复数据,如何去重显示呢?可以了解下 DISTINCT 。
语法:
SELECT DISTINCT 列名称 FROM 表名称;实例:
如果要从 “LASTNAME” 列中选取所有的值,我们需要使用 SELECT 语句:
SELECT LASTNAME FROM Persons;
可以发现,在结果集中,Wilson 被列出了多次。
如需从 “LASTNAME” 列中仅选取唯一不同的值,我们需要使用 SELECT DISTINCT 语句:
SELECT DISTINCT LASTNAME FROM Persons;
通过上述查询,结果集中只显示了一列 Wilson,显然已经去除了重复列。
5. WHERE – 条件过滤如果需要从表中选取指定的数据,可将 WHERE 子句添加到 SELECT 语句。
语法:
SELECT 列名称 FROM 表名称 WHERE 列 运算符 值;下面的运算符可在 WHERE 子句中使用:
操作符描述=等于不等于>大于=大于等于 1;
UCASE/UPPER 函数把字段的值转换为大写。
语法:
select upper(列名) from 表名;实例:
选取 “LastName” 和 “FirstName” 列的内容,然后把 “LastName” 列转换为大写:
select upper(lastname),firstname from persons;
LCASE/LOWER 函数把字段的值转换为小写。
语法:
select lower(列名) from 表名;实例:
选取 “LastName” 和 “FirstName” 列的内容,然后把 “LastName” 列转换为小写:
select lower(lastname),firstname from persons;
LEN/LENGTH 函数返回文本字段中值的长度。
语法:
select length(列名) from 表名;实例:
获取 LASTNAME 的值字符长度:
select length(lastname),lastname from persons;
ROUND 函数用于把数值字段舍入为指定的小数位数。
语法:
select round(列名,精度) from 表名;实例:
保留2位:
select round(1.1314,2) from dual; select round(1.1351,2) from dual;

注意: ROUND 取舍是 「四舍五入」 的!
取整:
select round(1.1351,0) from dual; select round(1.56,0) from dual;
NOW/SYSDATE 函数返回当前的日期和时间。
语法:
select sysdate from 表名;实例:
获取当前时间:
select sysdate from dual;
注意:
如果您在使用 Sql Server 数据库,请使用 getdate() 函数来获得当前的日期时间。
网络安全学习路线如果你对网络安全入门感兴趣,那么你需要的话可以点击这里网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!
或者扫描下方csdn官方合作二维码获取哦!

这是一份网络安全从零基础到进阶的学习路线大纲全览,小伙伴们记得点个收藏!


网络安全导论
渗透测试基础
网络基础
操作系统基础
Web安全基础
数据库基础
编程基础
CTF基础
该阶段学完年薪15w+没有问题
阶段二:技术进阶(到了这一步你才算入门)
弱口令与口令爆破
XSS漏洞
CSRF漏洞
SSRF漏洞
XXE漏洞
SQL注入
任意文件操作漏洞
业务逻辑漏洞
该阶段学完年薪25w+
阶段三:高阶提升
反序列化漏洞
RCE
综合靶场实操项目
内网渗透
流量分析
日志分析
恶意代码分析
应急响应
实战训练
该阶段学完即可年薪30w+
阶段四:蓝队课程
蓝队基础
蓝队进阶
该部分主攻蓝队的防御,即更容易被大家理解的网络安全工程师。
攻防兼备,年薪收入可以达到40w+
阶段五:面试指南&阶段六:升级内容
需要上述路线图对应的网络安全配套视频、源码以及更多网络安全相关书籍&面试题等内容可在文章后方领取。

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!
或者扫描下方csdn官方合作二维码获取哦!


