网络知识 娱乐 【SQL基础-1】SQL基本语句—增删改查

【SQL基础-1】SQL基本语句—增删改查

目录

  • 1 SQL 增删改查基本语句
  • 2 查:select 语句
    • 2.1 select 基本语句
    • 2.2 Select distinct 语句
    • 2.3 Select … where 语句
    • 2.4 Select … order by 语句
    • 2.5 Select … group by 语句
    • 2.6 SELECT TOP 子句
    • 2.7 Select … join 语句
  • 3 增:insert into 语句
  • 4 改:update 语句
  • 5 删:delete 语句
  • 6 XXX … Select 语句
  • 7 数据库连接与退出
  • 8 归纳
  • 参考文章

SQL (Structured Query Language:结构化查询语言) 是用于管理关系数据库管理系统(RDBMS)。 SQL 的范围包括数据插入、查询、更新和删除,数据库模式创建和修改,以及数据访问控制。注意,SQL 对大小写不敏感:SELECT 与 select 是相同的。

对于零基础入门渗透测试而言,对数据库编程的掌握程度无需像专业数据处理人员那样精通,无需对SQL有多深入的了解,主要是先理解SQL语句的运行规则。本阶段对数据库的学习主要分为三个步骤:
(1)配合SQL语句菜鸟联盟理解基础语句。
(2)在SQLzoo平台上根据题目进行练习,加深对语句的理解;
(3)观看入门教学视频加深理解:【戴师兄】SQL入门免费教程。该专栏视频主要描述SQL语句运行规则,总共有4个视频,时长约3.5h。

1 SQL 增删改查基本语句

(1)增删改查是一个数据操作工具最基本的命令,在SQL中,这四种语句主要由以下关键字语句执行:

  • :insert
  • :delete
  • :update
  • :select

(2)SQL 语句后面的分号:

  • 某些数据库系统要求在每条 SQL 语句的末端使用分号。
  • 分号是在数据库系统中分隔每条 SQL 语句的标准方法,这样就可以在对服务器的相同请求中执行一条以上的 SQL 语句。
  • 在本教程中,我们将在每条 SQL 语句的末端使用分号。

2 查:select 语句

2.1 select 基本语句

功能:SELECT 语句用于从数据库中选取数据,选取结果被存储在一个结果表中,称为结果集。
语法:可以用以下语句选择特定列名,或用*代替表示所有列。

SELECT column_name,column_name
FROM table_name;

练习网址:https://sqlzoo.net/wiki/SELECT
在这里插入图片描述

2.2 Select distinct 语句

功能:在表中,一个列可能会包含多个重复值,有时您也许希望仅仅列出不同(distinct)的值。distinct 关键词用于返回唯一不同的值
语法

SELECT DISTINCT column_name,column_name
FROM table_name;

例子
在这里插入图片描述

2.3 Select … where 语句

功能:SELECT语句用于从数据库中选取数据,WHERE子句用于提取那些满足指定条件的记录。而指定条件需要用到各种运算符。
语法

SELECT column_name,column_name
FROM table_name
WHERE column_name operator value;

WHERE 子句中的运算符:下面的运算符可以在 WHERE 子句中使用:

运算符描述
=等于
不等于。注释:在 SQL 的一些版本中,该操作符可被写成 !=
>大于
<小于
>=大于等于
<=小于等于
BETWEEN在某个范围内
LIKE搜索某种模式
IN指定针对某个列的多个可能值

其中,WHERE 子句中的运算符的具体用法可参考《SQL WHERE 子句笔记篇》

例子:下面的 SQL 语句从 “Websites” 表中选取国家为 “CN” 的所有网站:


SELECT * FROM Websites WHERE country='CN';
#SQL 使用单引号来环绕文本值(大部分数据库系统也接受双引号)。
#在上个实例中 'CN' 文本字段使用了单引号。
#如果是数值字段,请不要使用引号。
SELECT * FROM Websites WHERE id=1;

练习网址:https://sqlzoo.net/wiki/SELECT_…_WHERE
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.4 Select … order by 语句

功能:SELECT语句用于从数据库中选取数据,用于对一列或者多列数据进行升序(ASC)或者降序(DESC)排列。默认为升序排列,如果要对某元素按降序排列则在对应关键字后添加参数DESC。
语法

SELECT column-list
FROM table_name
[WHERE condition]
[ORDER BY column1, column2, .. columnN] [ASC | DESC];

例子
在这里插入图片描述

2.5 Select … group by 语句

功能:SELECT语句用于从数据库中选取数据, GROUP BY 语句用来对相同的数据进行分组。
语法

SELECT column-list
FROM table_name
WHERE [ conditions ]
GROUP BY column1, column2....columnN
ORDER BY column1, column2....columnN

练习网址:https://sqlzoo.net/wiki/SELECT_…_GROUP_BY
在这里插入图片描述

2.6 SELECT TOP 子句

功能:SELECT TOP 子句用于规定要返回的记录的数目。SELECT TOP 子句对于拥有数千条记录的大型表来说,是非常有用的。
注意:并非所有的数据库系统都支持 SELECT TOP 语句。 MySQL 支持 LIMIT 语句来选取指定的条数数据, Oracle 可以使用 ROWNUM 来选取。
SQL Server / MS Access 语法

SELECT TOP number|percent column_name(s)
FROM table_name;

MySQL 语法

SELECT column_name(s)
FROM table_name
LIMIT number;

实例

SELECT *
FROM Persons
LIMIT 5;

Oracle 语法

SELECT column_name(s)
FROM table_name
WHERE ROWNUM <= number;

实例

SELECT *
FROM Persons
WHERE ROWNUM <=5;

例子
在这里插入图片描述
在这里插入图片描述

2.7 Select … join 语句

功能:JOIN 子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段。
类型

  • INNER JOIN:如果表中有至少一个匹配,则返回行;
  • LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行;
  • RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行;
  • FULL JOIN:只要其中一个表中存在匹配,则返回行。

功能图解:不同类型的join语句功能图解
在这里插入图片描述
例子
在这里插入图片描述
在这里插入图片描述

练习网址:https://sqlzoo.net/wiki/SELECT_…_JOIN
在这里插入图片描述

3 增:insert into 语句

功能:用于向表中插入新记录,可以插入一行也可以同时插入多行。

语法:INSERT INTO 语句可以有两种编写形式。

  • 第一种形式无需指定要插入数据的列名,只需提供被插入的值即可:
INSERT INTO table_name
VALUES (value1,value2,value3,...);
  • 第二种形式需要指定列名及被插入的值:
INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);

例子
在这里插入图片描述

练习网址:https://sqlzoo.net/wiki/INSERT_…_VALUES
在这里插入图片描述

4 改:update 语句

功能用于更新表中已存在的记录。
语法

UPDATE table_name
SET column1=value1,column2=value2,...
WHERE some_column=some_value;

注意:WHERE 子句规定哪条记录或者哪些记录需要更新。如果您省略了 WHERE 子句,所有的记录都将被更新!
例子
在这里插入图片描述

5 删:delete 语句

功能用于删除表中的行。
语法

DELETE FROM table_name
WHERE some_column=some_value;

例子
在这里插入图片描述

练习网址:https://sqlzoo.net/wiki/DELETE
在这里插入图片描述

6 XXX … Select 语句

(1)功能:在一个查询语句中使用另一个查询语句的结果,用于无法一次查询到所需内容的情况。

(2)子查询可以与 SELECT、INSERT、UPDATE 和 DELETE 语句一起使用,并可使用运算符如 =、、>=、<=、IN、BETWEEN 等。

(3)以下是子查询必须遵循的几个规则

  • 子查询必须用括号括起来。
  • 子查询在 SELECT 子句中只能有一个列,除非在主查询中有多列,与子查询的所选列进行比较。
  • ORDER BY 不能用在子查询中,虽然主查询可以使用 ORDER BY。可以在子查询中使用 GROUP BY,功能与 ORDER BY 相同。
  • 子查询返回多于一行,只能与多值运算符一起使用,如 IN 运算符。
  • BETWEEN 运算符不能与子查询一起使用,但是,BETWEEN 可在子查询内使用。

(4)语法

--SELECT 语句中的子查询使用
SELECT column_name [, column_name ]
FROM   table1 [, table2 ]
WHERE  column_name OPERATOR
      (SELECT column_name [, column_name ]
      FROM table1 [, table2 ]
      [WHERE])
      
--INSERT 语句中的子查询使用
--INSERT 语句使用子查询返回的数据插入到另一个表中。
INSERT INTO table_name [ (column1 [, column2 ]) ]
   SELECT [ *|column1 [, column2 ] ]
   FROM table1 [, table2 ]
   [ WHERE VALUE OPERATOR ]

--UPDATE 语句中的子查询使用
--当通过 UPDATE 语句使用子查询时,表中单个或多个列被更新。
UPDATE table
SET column_name = new_value
[ WHERE OPERATOR [ VALUE ]
   (SELECT COLUMN_NAME
   FROM TABLE_NAME)
   [ WHERE) ]

--DELETE 语句中的子查询使用
DELETE FROM TABLE_NAME
[ WHERE OPERATOR [ VALUE ]
   (SELECT COLUMN_NAME
   FROM TABLE_NAME)
   [ WHERE) ]

7 数据库连接与退出

要对数据库进行操作,需要先连接数据库;操作完毕后需要退出数据库。对数据库的连接与退出命令如下:

/*两种连接方式*/
mysql -uroot -ppass						-- 连接本地SQL,账号为root,密码为pass
mysql -h192.168.206.100 -uroot -ppass	-- 连接远程SQL,IP为192.168.206.100,账号为root,密码为pass

/*三种退出方式*/
exit;
quit;
q;

8 归纳

(1)掌握select及其扩展的各种查询语句,如; Select distinct 、 Select … where、 Select … order by、Select … group by、SELECT TOP 、Select … join等语句
(2)掌握insert 、delete、update等增删改语句;
(3)掌握增删改查中包含子查询的语句;
(4)掌握数据库的连接与退出方式。

参考文章

[1] 《SQL 教程》
[2] 《SQLzoo练习平台》
[3] 《千锋网络安全零基础到就业教程-Web渗透全套》
[4] 《【SQL基础】SQL增删改查基本语句》