当前位置:   article > 正文

【网络安全零基础入门必知必会】SQL语言入门(非常详细)零基础入门到精通,收藏这一篇就够了(02)_sql必知必会

sql必知必会

这是大白给粉丝朋友准备的网络安全零基础入门第九章MySQL数据库的知识章节里的SQL语言入门。

喜欢的朋友们,记得给大白点赞支持和收藏一下,关注我,学习黑客技术。

一、SQL 概述

1、什么是 SQL

SQL 指结构化查询语言,全称是 Structured Query Language。

SQL 让您可以访问和处理数据库,包括数据插入、查询、更新和删除。

SQL 在1986年成为 ANSI(American National Standards Institute 美国国家标准化组织)的一项标准,在 1987 年成为国际标准化组织(ISO)标准。

2、SQL语言的版本历史

在1970年代初,由IBM公司San Jose,California研究实验室的埃德加·科德发表将数据组成表格的应用原则(Codd’s Relational Algebra)。1974年,同一实验室的D.D.Chamberlin和R.F. Boyce对Codd’s Relational Algebra在研制关系数据库管理系统System R中,研制出一套规范语言-SEQUEL(Structured English QUEry Language),并在1976年11月的IBM Journal of R&D上公布新版本的SQL(叫SEQUEL/2)。1980年改名为SQL。

1979年ORACLE公司首先提供商用的SQL,IBM公司在DB2 和SQL/DS数据库系统中也实现了SQL。

1986年10月,美国ANSI采用SQL作为关系数据库管理系统的标准语言(ANSI X3. 135-1986),后为国际标准化组织(ISO)采纳为国际标准。

1989年,美国ANSI采纳在ANSI X3.135-1989报告中定义的关系数据库管理系统的SQL标准语言,称为ANSI SQL 89, 该标准替代ANSI X3.135-1986版本。该标准为下列组织所采纳:

国际标准化组织(ISO),为ISO 9075-1989报告“Database Language SQL With Integrity Enhancement”

美国联邦政府,发布在The Federal Information Processing Standard Publication(FIPS PUB)127

目前,所有主要的关系数据库管理系统支持某些形式的SQL, 大部分数据库打算遵守ANSI SQL89标准。

3、SQL语句基础语法规范

SQL(Structured Query Language)是用于管理关系型数据库的标准语言。它的基本语法规范包括以下几个关键部分:

1. SELECT 语句:这是最基本的SQL语句,用于从数据库中选择数据。格式通常是 `SELECT column_name(s) FROM table_name WHERE condition`,其中 `column_name(s)` 是要查询的列,`table_name` 是数据表名,`condition` 是筛选条件。

2. INSERT INTO 语句:用于向表中插入新记录,格式为 `INSERT INTO table_name (column1, column2,…) VALUES (value1, value2,…)`。

3. UPDATE 语句:用来更新表中的数据,格式为 `UPDATE table_name SET column = new_value WHERE condition`。

4. DELETE FROM 语句:删除表中满足特定条件的行,例如 `DELETE FROM table_name WHERE condition`。

5. CREATE TABLE 语句:用于创建新的表,定义列名、数据类型等信息。

6. JOIN 语句:连接两个或多个表,如 INNER JOIN, LEFT JOIN, RIGHT JOIN 等,用于获取多个表之间的关联数据。

7. WHERE 子句:用于指定查询条件,过滤返回的结果。

8. GROUP BY 和 HAVING 子句:用于对查询结果进行分组和过滤聚合。

9. ORDER BY 子句:按照指定列对查询结果进行排序。

10. COMMIT 和 ROLLBACK 命令:前者提交事务,后者回滚事务以撤销更改。

二、SQL 分类:DDL、DML、DCL、DQL

01、DDL(Data Definition Languages)语句: 即数据库定义语句,用来创建数据库中的表、索引、视图、存储过程、触发器等对象。SQLServer DLL语法是指SQL Server 数据库定义域发的语法规则集合,主要包括创建、修改和删除数据库对象的语句。

常用的语句关键字有:

【create table 创建表】、【alter table 修改表】、【drop table 删除表】、【truncate table 删除表中所有行】、【create index 创建索引】、【drop index 删除索引】、【comment 注释】、【rename table 修改表名】

02、DML(Data Manipulation Language)语句: 指的是用于管理数据库中数据的操作,用来查询(Select)、添加(Insert)、更新(Update)、删除(Delete)等

03、DCL(Data Control Language)语句: 即数据控制语句,用于授权/撤销数据库及其字段的权限。

常用的语句关键字有:

grant授权

revoke取消授权

04、DQL:(Data QueryLanguage)语句: 数据查询语言

常用的语句关键字有:

selet 获取

where、group by、having、ofder by等过滤条件

事务控制语言

SAVEPOINT 设置保存点

ROLLBACK 回滚

SET TRANSACTION

三、DDL(Data Definition Language):数据定义语言

1、基本操作

1.1操作数据库:创建库CREATE DATABASE,删除库DROP DATABASE,修改库ALTER DATABASE。

CREATE DATABASE TestDB;``DROP DATABASE TestDB;``ALTER DATABASE TestDB COLLATE Chinese_PRC_CI_AS;
  • 1

1.2 数据类型:数字型(int,tinyint,decimal,float等)、日期和时间类型(Date,TIME等)、字符串类型(char,varchar等)。

CREATE TABLE NumTable (`    `id INT,`    `smallNum TINYINT,`    `money DECIMAL(10, 2),`    `size FLOAT``);``CREATE TABLE DateTable (`    `date_column DATE,`    `time_column TIME``);``CREATE TABLE StringTable (`    `fixed_length_name CHAR(50),`    `variable_length_address VARCHAR(255)``);``   
  • 1

1.3 操作表:创建表CREATE TABLE,删除表DROP TABLE,修改表ALTER TABLE,重命名表 RENAME TABLE。、

CREATE TABLE EmployeeTable (`    `ID int,`    `Name varchar(255),`    `Age int``);``   ``   ``   ``   ``DROP TABLE EmployeeTable;``   ``   ``   ``   ``ALTER TABLE EmployeeTable ADD Email varchar(255);``ALTER TABLE EmployeeTable MODIFY COLUMN Age smallint;``ALTER TABLE EmployeeTable DROP COLUMN Age;``   ``   ``   ``   ``RENAME TABLE EmployeeTable TO StaffTable;
  • 1

四、DML(Data Manipulation Language):数据操作语言

4.1 插入数据:利用INSERT INTO语句添加一条或多条记录。

INSERT INTO employees (id, name, department_id) VALUES (1, 'Li Ming', 101);`    `(向employees表中插入一条新的员工记录,id为1, 名字是'Li Ming', 部门id是101)``   ``   ``   ``   ``INSERT INTO employees (name, department_id) VALUES ('Wang Gang', 102);`      `(向employees表中插入一条新的员工记录, id将自动生成,名字是'Wang Gang', 部门id是102)``   ``   ``   ``   ``INSERT INTO employees VALUES (3, 'Zhang San', 103);`            `(向employees表中插入一条新的员工记录,id为3, 名字是'Zhang San', 部门id是103)
  • 1

4.2 修改数据:用UPDATE语句可以修改表中的数据。

UPDATE employees SET department_id = 201 WHERE name = 'Li Ming';`             `(修改名为'Li Ming'的员工的部门id为201)``   ``   ``   ``   ``UPDATE employees SET name = 'Liu Yan' WHERE id = 2;`               `(修改id为2的员工的名字为'Liu Yan')``   ``   ``   ``   ``UPDATE employees SET name = 'Zhu Rongji', department_id = 202 WHERE id = 3;`                  `(修改id为3的员工的名字为'Zhu Rongji'和部门id为202)
  • 1

4.3 删除数据:DELETE FROM语句用于在表中删除一条或者多条记录。

DELETE FROM employees WHERE id = 1;`                `(删除id为1的员工记录)``   ``   ``   ``   ``DELETE FROM employees WHERE name = 'Wang Gang';`                   `(删除名字为'Wang Gang'的员工记录)``   ``   ``   ``   ``DELETE FROM employees WHERE department_id = 202;`                 `(删除部门id为202的所有员工记录)
  • 1

五、DCL(Data Control Language):数据控制语言

5.1 创建用户:使用CREATE USER语句创建新的数据库用户。

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';``(在"localhost"上创建一个名为"newuser"的新用户,密码是"password"。)
  • 1

5.2 给用户授权:使用GRANT语句为用户分配访问权限。

GRANT SELECT, INSERT, DELETE ON database_name.table_name TO 'username'@'localhost';``(在localhost上给"username"用户赋予运database_name数据库中table_name表的SELECT,INSERT和DELETE权限。)
  • 1

5.3 撤销授权:使用REVOKE语句撤销用户的访问权限。

REVOKE INSERT ON database_name.table_name FROM 'username'@'localhost';``(在localhost上撤销"username"用户对database_name数据库中table_name表的INSERT权限。)
  • 1

5.4 查看用户权限:使用SHOW GRANTS语句查看用户当前的权限列表。

SHOW GRANTS FOR 'username'@'localhost';``(显示"localhost"上"username"用户的所有权限。)
  • 1

5.5 删除用户:用DROP USER语句来删除一个用户。

DROP USER 'username'@'localhost';``(删除"localhost"上名为"username"的用户。)
  • 1

5.6 修改用户密码(以root身份):通过ALTER USER语句可以修改用户的密码。

ALTER USER 'username'@'localhost' IDENTIFIED BY 'newpassword';``(修改在"localhost"上username用户的密码为"newpassword"。)
  • 1

六、DQL(Data Query Language):数据查询语言

6.1 基础查询:利用SELECT 语句可以查询数据库中的数据。

SELECT *` `FROM Employee;`  `(查询Employees表中的所有记录)``   ``   ``   ``   ``SELECT FirstName, LastName` `FROM Employee;`  `(查询Employee表中的FirstName和LastName字段所有记录)
  • 1

6.2 条件查询:通过使用WHERE子句来设定查询条件。

SELECT *` `FROM Employee` `WHERE Salary > 5000;` `(查询Employee表中Salary大于5000的所有记录)``   ``   ``   ``   ``SELECT FirstName, LastName` `FROM Employee` `WHERE Age <= 30;` `(查询Employee表中年龄小于等于30的员工的firstName和lastName字段记录)``   ``   ``   ``   ``SELECT *` `FROM Employee` `WHERE Salary > 5000` `AND Age <= 30;` `(查询Employee表中Salary大于5000且年龄小于等于30的所有记录)``   ``   ``   ``   ``SELECT *` `FROM Employee` `WHERE Salary > 5000` `OR Age <= 30;` `(查询Employee表中Salary大于5000或年龄小于等于30的所有记录)
  • 1

6.3 模糊查询:使用LIKE子句,配合通配符%和_进行模糊查询。

SELECT *` `FROM Employee` `WHERE FirstName LIKE 'John%';` `(查询Employee表中FirstName以John开头的所有记录)``   ``   ``   ``   ``SELECT *` `FROM Employee` `WHERE FirstName LIKE '%John%';` `(查询Employee表中FirstName包含John的所有记录)``   ``   ``   ``   ``SELECT FirstName, LastName` `FROM Employee` `WHERE LastName LIKE '%son_';` `(查询Employee表中LastName以son+一个任意字符结束的所有记录)
  • 1

6.4 字段控制查询:运用DISTINCT关键字进行去重查询。

SELECT DISTINCT City` `FROM Employee;` `(查询Employee表中,City字段去重之后的所有城市记录)``   ``   ``   ``   ``SELECT DISTINCT Age, Salary` `FROM Employee` `WHERE Age<50;` `(查询Employee表中,Age小于50岁的员工的Age和Salary字段组合记录,并进行去重处理)
  • 1

6.5 排序:用ORDER BY子句按照一个或多个列进行排序。

单列排序:

SELECT *` `FROM Employee` `ORDER BY Salary;` `(按'工资'列的升序返回Employee表中的所有行。)
  • 1

多列排序:

SELECT *` `FROM Employee` `ORDER BY Salary, Age DESC;``(首先根据'工资'列的升序对Employee表中的行进行排序,然后在工资相同的情况下,根据'Age'列的降序进行排序。)
  • 1

6.6 聚合函数:包括COUNT,SUM,MAX,MIN,AVG等函数。

COUNT:

SELECT COUNT(*)` `FROM Employee;``(返回Employee表的总行数。)
  • 1

SUM:

SELECT SUM(Salary)` `FROM Employee;``(返回Employee表中所有员工的薪水总和。)
  • 1

MAX:

SELECT MAX(Age)` `FROM Employee;``(返回Employee表中员工的最大年龄。)
  • 1

MIN:

SELECT MIN(Age)` `FROM Employee;``(返回Employee表中员工的最小年龄。)
  • 1

AVG:

SELECT AVG(Salary)` `FROM Employee;``(返回Employee表中员工的平均薪水。)
  • 1

6.7 分组查询:GROUP BY子句是用于结合聚合函数,依据一个或多个列进行分组。

按单列分组:

SELECT Department, COUNT(*)` `FROM Employee` `GROUP BY Department;``(返回每个部门的员工数量。)
  • 1

按多列分组:

SELECT Department, JobTitle, AVG(Salary)` `FROM Employee` `GROUP BY Department, JobTitle;``(返回每个部门及职位下员工的平均薪水。)
  • 1

分组后过滤:

SELECT Department, JobTitle, AVG(Salary)` `FROM Employee` `GROUP BY Department, JobTitle``HAVING AVG(Salary) > 5000;``(返回每个部门及职位下员工的平均薪水大于5000的部分。)
  • 1

6.8 LIMIT:用来限定查询结果的起始行,以及总行数。

简单LIMIT:

SELECT *` `FROM Employee` `ORDER BY Salary DESC` `LIMIT 10;``(返回前10个工资最高的员工。)
  • 1

带偏移量的LIMIT:

SELECT *` `FROM Employee` `ORDER BY Salary DESC` `LIMIT 10 OFFSET 5;``(返回工资排名第6到第15的10个员工。)
  • 1

6.9 多表连接查询:

内连接:INNER JOIN

SELECT Orders.OrderID, Customers.CustomerName``FROM Orders``INNER JOIN Customers``ON Orders.CustomerID = Customers.CustomerID;
  • 1

左连接:LEFT JOIN

SELECT Customers.CustomerName, Orders.OrderID``FROM Customers``LEFT JOIN Orders``ON Customers.CustomerID = Orders.CustomerID;
  • 1

右连接:RIGHT JOIN

SELECT Orders.OrderID, Customers.CustomerName``FROM Orders``RIGHT JOIN Customers``ON Orders.CustomerID = Customers.CustomerID;
  • 1

全外连接:FULL JOIN

SELECT Customers.CustomerName, Orders.OrderID``FROM Customers``FULL JOIN Orders``ON Customers.CustomerID = Orders.CustomerID;
  • 1

笛卡尔积:CROSS JOIN

SELECT Products.ProductName, Suppliers.SupplierName``FROM Products``CROSS JOIN Suppliers;
  • 1

为了帮助大家更好的学习网络安全,我给大家准备了一份网络安全入门/进阶学习资料,里面的内容都是适合零基础小白的笔记和资料,不懂编程也能听懂、看懂这些资料!

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

[2024最新CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享]


在这里插入图片描述

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

[2024最新CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享]
在这里插入图片描述

在这里插入图片描述

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

[2024最新CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享]

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/939284
推荐阅读
相关标签
  

闽ICP备14008679号