行业知识
数据库SQL入门教程(非常详细),从零基础入门到精通,看完这一篇就够了
目录
- 前言
- SQL 介绍
-
- 什么是 SQL
- SQL 的类型
- 学习 SQL 的作用
- 数据库是什么
- SQL 基础语言学习
-
- CREATE TABLE – 创建表
- INSERT – 插入数据
- SELECT – 查询数据
- DISTINCT – 去除重复值
- WHERE – 条件过滤
- AND & OR – 运算符
- ORDER BY – 排序
- UPDATE – 更新数据
- DELETE – 删除数据
- TRUNCATE TABLE – 清除表数据
- DROP TABLE – 删除表
- SQL 高级言语学习
-
- LIKE – 查找类似值
- IN – 锁定多个值
- ⛵️ BETWEEN – 选取区间数据
- AS – 别名
- JOIN – 多表关联
- UNION – 合并结果集
- NOT NULL – 非空
- VIEW – 视图
- SQL 常用函数学习
-
- AVG – 平均值
- COUNT – 汇总行数
- MAX – 最大值
- MIN – 最小值
- SUM – 求和
- GROUP BY – 分组
- HAVING – 句尾连接
- UCASE/UPPER – 大写
- LCASE/LOWER – 小写
- LEN/LENGTH – 获取长度
- ROUND – 数值取舍
- NOW/SYSDATE – 当前时间
- 写在���后
前言
SQL语言有40多年的历史,从它被应用至今几乎无处不在。我们消费的每一笔支付记录,收集的每一条用户信息,发出去的每一条消息,都会使用数据库或与其相关的产品来存储,而操纵数据库的语言正是 SQL !
SQL 对于现在的互联网公司生产研发等岗位几乎是一个必备技能,如果不会 SQL 的话,可能什么都做不了。你可以把 SQL 当做是一种工具,利用它可以帮助你完成你的工作,创造价值。
文章结尾有 SQL 小测验哦!看看你能得几分?
⭐️ 点我跳转到 SQL 测验!
SQL 介绍
什么是 SQL
SQL 是用于访问和处理数据库的标准的计算机语言。
- SQL 指结构化查询语言
- SQL 使我们有能力访问数据库
- SQL 是一种 ANSI 的标准计算机语言
SQL 可与数据库程序协同工作,比如 MS Access、DB2、Informix、MS SQL Server、Oracle、Sybase 以及其他数据库系统。但是由于各种各样的数据库出现,导致很多不同版本的 SQL 语言,为了与 ANSI 标准相兼容,它们必须以相似的方式共同地来支持一些主要的关键词(比如 SELECT、UPDATE、DELETE、INSERT、WHERE 等等),这些就是我们要学习的SQL基础。
SQL 的类型
可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL)。
- 数据查询语言(DQL: Data Query Language)
- 数据操纵语言(DML:Data Manipulation Language)
学习 SQL 的作用
SQL 是一门 ANSI 的标准计算机语言,用来访问和操作数据库系统。SQL 语句用于取回和更新数据库中的数据。
- SQL 面向数据库执行查询
- SQL 可从数据库取回数据
- SQL 可在数据库中插入新的记录
- SQL 可更新数据库中的数据
- SQL 可从数据库删除记录
- SQL 可创建新数据库
- SQL 可在数据库中创建新表
- SQL 可在数据库中创建存储过程
- SQL 可在数据库中创建视图
- SQL 可以设置表、存储过程和视图的权限
数据库是什么
顾名思义,你可以理解为数据库是用来存放数据的一个容器。
打个比方,每个人家里都会有冰箱,冰箱是用来干什么的?冰箱是用来存放食物的地方。
同样的,数据库是存放数据的地方。正是因为有了数据库后,我们可以直接查找数据。例如你每天使用余额宝查看自己的账户收益,就是从数据库读取数据后给你的。
最常见的数据库类型是关系型数据库管理系统(RDBMS):
RDBMS 是 SQL 的基础,同样也是所有现代数据库系统的基础,比如 MS SQL Server, IBM DB2, Oracle, MySQL 以及 Microsoft Access等等。
RDBMS 中的数据存储在被称为表(tables)的数据库对象中。表 是相关的数据项的集合,它由列和行组成。
由于本文主要讲解 SQL 基础,因此对数据库不做过多解释,只需要大概了解即可。咱们直接开始学习SQL!
SQL 基础语言学习
在了解 SQL 基础语句使用之前,我们先讲一下 表 是什么?
一个数据库通常包含一个或多个表。每个表由一个名字标识(例如“客户”或者“订单”)。表包含带有数据的记录(行)。
下面的例子是一个名为 “Persons” 的表:
Id LastName FirstName Address City 1 Adams John Oxford Street London 2 Bush George Fifth Avenue New York 3 Carter Thomas Changan Street Beijing 上面的表包含三条记录(每一条对应一个人)和五个列(Id、姓、名、地址和城市)。
有表才能查询,那么如何创建这样一个表?
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 语句向空表写入数据。
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 语句进行查询出来的,别急马上讲!
SELECT – 查询数据
SELECT 语句用于从表中选取数据,结果被存储在一个结果表中(称为结果集)。
语法:
SELECT * FROM 表名称;
我们也可以指定所要查询数据的列:
SELECT 列名称 FROM 表名称;
注意: SQL 语句对大小写不敏感,SELECT 等效于 select。
实例:
SQL SELECT * 实例:
SELECT * FROM Persons;
注意: 星号(*)是选取所有列的快捷方式。
如需获取名为 “LastName” 和 “FirstName” 的列的内容(从名为 “Persons” 的数据库表),请使用类似这样的 SELECT 语句:
SELECT LastName,FirstName FROM Persons;
DISTINCT – 去除重复值
如果一张表中有多行重复数据,如何去重显示呢?可以了解下 DISTINCT 。
语法:
SELECT DISTINCT 列名称 FROM 表名称;
实例:
如果要从 “LASTNAME” 列中选取所有的值,我们需要使用 SELECT 语句:
SELECT LASTNAME FROM Persons;
可以发现,在结果集中,Wilson 被列出了多次。
如需从 “LASTNAME” 列中仅选取唯一不同的值,我们需要使用 SELECT DISTINCT 语句:
SELECT DISTINCT LASTNAME FROM Persons;
通过上述查询,结果集中只显示了一列 Wilson,显然已经去除了重复列。
WHERE – 条件过滤
如果需要从表中选取指定的数据,可将 WHERE 子句添加到 SELECT 语句。
语法:
SELECT 列名称 FROM 表名称 WHERE 列 运算符 值;
下面的运算符可在 WHERE 子句中使用:
操作符 描述 = 等于 不等于 > 大于 = 大于等于 1; UCASE/UPPER – 大写
UCASE/UPPER 函数把字段的值转换为大写。
语法:
select upper(列名) from 表名;
实例:
选取 “LastName” 和 “FirstName” 列的内容,然后把 “LastName” 列转换为大写:
select upper(lastname),firstname from persons;
LCASE/LOWER – 小写
LCASE/LOWER 函数把字段的值转换为小写。
语法:
select lower(列名) from 表名;
实例:
选取 “LastName” 和 “FirstName” 列的内容,然后把 “LastName” 列转换为小写:
select lower(lastname),firstname from persons;
LEN/LENGTH – 获取长度
LEN/LENGTH 函数返回文本字段中值的长度。
语法:
select length(列名) from 表名;
实例:
获取 LASTNAME 的值字符长度:
select length(lastname),lastname from persons;
ROUND – 数值取舍
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 – 当前时间
NOW/SYSDATE 函数返回当前的日期和时间。
语法:
select sysdate from 表名;
实例:
获取当前时间:
select sysdate from dual;
注意: 如果您在使用 Sql Server 数据库,请使用 getdate() 函数来获得当前的日期时间。
写在最后
上述如果都学完了的话,可以来做个小测验:SQL 测验,看看掌握的怎么样!
❤️ 测验会被记分:
每道题的分值是 1 分。在您完成全部的20道题之后,系统会为您的测验打分,并提供您做错的题目的正确答案。其中,绿色为正确答案,而红色为错误答案。
☞ 现在就开始测验! 祝您好运。
题外话
初入计算机行业的人或者大学计算机相关专业毕业生,很多因缺少实战经验,就业处处碰壁。下面我们来看两组数据:
-
2023届全国高校毕业生预计达到1158万人,就业形势严峻;
-
国家网络安全宣传周公布的数据显示,到2027年我国网络安全人员缺口将达327万。
一方面是每年应届毕业生就业形势严峻,一方面是网络安全人才百万缺口。
6月9日,麦可思研究2023年版就业蓝皮书(包括《2023年中国本科生就业报告》《2023年中国高职生就业报告》)正式发布。
2022届大学毕业生月收入较高的前10个专业
本科计算机类、高职自动化类专业月收入较高。2022届本科计算机类、高职自动化类专业月收入分别为6863元、5339元。其中,本科计算机类专业起薪与2021届基本持平,高职自动化类月收入增长明显,2022届反超铁道运输类专业(5295元)排在第一位。
具体看专业,2022届本科月收入较高的专业是信息安全(7579元)。对比2018届,电子科学与技术、自动化等与人工智能相关的本科专业表现不俗,较五年前起薪涨幅均达到了19%。数据科学与大数据技术虽是近年新增专业但表现亮眼,已跻身2022届本科毕业生毕业半年后月收入较高专业前三。五年前唯一进入本科高薪榜前10的人文社科类专业——法语已退出前10之列。
“没有网络安全就没有国家安全”。当前,网络安全已被提升到国家战略的高度,成为影响国家安全、社会稳定至关重要的因素之一。
网络安全行业特点
1、就业薪资非常高,涨薪快 2021年猎聘网发布网络安全行业就业薪资行业最高人均33.77万!
2、人才缺口大,就业机会多
2019年9月18日《中华人民共和国中央人民政府》官方网站发表:我国网络空间安全人才 需求140万人,而全国各大学校每年培养的人员不到1.5W人。猎聘网《2021年上半年网络安全报告》预测2027年网安人才需求300W,现在从事网络安全行业的从业人员只有10W人。
行业发展空间大,岗位非常多
网络安全行业产业以来,随即新增加了几十个网络安全行业岗位︰网络安全专家、网络安全分析师、安全咨询师、网络安全工程师、安全架构师、安全运维工程师、渗透工程师、信息安全管理员、数据安全工程师、网络安全运营工程师、网络安全应急响应工程师、数据鉴定师、网络安全产品经理、网络安全服务工程师、网络安全培训师、网络安全审计员、威胁情报分析工程师、灾难恢复专业人员、实战攻防专业人员…
职业增值潜力大
网络安全专业具有很强的技术特性,尤其是掌握工作中的核心网络架构、安全技术,在职业发展上具有不可替代的竞争优势。
随着个人能力的不断提升,所从事工作的职业价值也会随着自身经验的丰富以及项目运作的成熟,升值空间一路看涨,这也是为什么受大家欢迎的主要原因。
从某种程度来讲,在网络安全领域,跟医生职业一样,越老越吃香,因为技术愈加成熟,自然工作会受到重视,升职加薪则是水到渠成之事。
黑客&网络安全如何学习
今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。
1.学习路线图
攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去就业和接私活完全没有问题。
2.视频教程
网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。
内容涵盖了网络安全法学习、网络安全运营等保测评、渗透测试基础、漏洞详解、计算机基础知识等,都是网络安全入门必知必会的学习内容。
(都打包成一块的了,不能一一展开,总共300多集)
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享
3.技术文档和电子书
技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,由于内容的敏感性,我就不一一展示了。
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享
4.工具包、面试题和源码
“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。
还有我视频里讲的案例源码和对应的工具包,需要的话也可以拿走。
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享
最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。
这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。
参考解析:深信服官网、奇安信官网、Freebuf、csdn等
内容特点:条理清晰,含图像化表示更加易懂。
内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享
-