SQL的快速入门(基础篇:简单的增删改查)

tech2023-06-29  106

前言:本篇主要简单概述了什么SQL,SQL里面又有哪些分类,如何进行简单的增删改查以及简要阐述SQL的一些其他功能,为基础篇。更深入的探讨另外有,进阶篇,和面试常问的更实用的SQL调优篇。

进阶篇:https://blog.csdn.net/weixin_45764765/article/details/109039682

一、SQL是什么?

SQL(Structured Query Language)结构化查询语言,是一种用来操作数据库的特定语法,是关系型数据库的标准语言。

 

二、SQL包含六个部分:

1、DQL 数据查询语言

注:在数据库中,SQL语句大小写不敏感,也就是说select 和 SELECT 作用都是一样的。

>> 下面对如何操作员工表emp进行一定了解:

EMPNO 员工编号       ENAME 姓名           JOB 职位 

HIREDATE 入职时间      SAL 工资       COMM  奖金

(1)简单查询

1)含义:从哪个表查询出哪些列的数据,* 星号表示查询所有的列

语法格式:SELECT  {*, column [alias],...}  FROM table_name [where ...]

示例:

①查询出所有的员工的所有信息

SELECT * FROM emp

②查询所有员工的名字和工作

SELECT ENAME, JOB FROM emp

 

2)消除结果中重复的数据 DISTINCT 

语法格式:SELECT DISTINCT 列名,... FROM  table_name

示例:查询emp表中有什么工作(因为很多人做着相同的工作,这时就会需要消除重复)

SELECT DISTINCT JOB FROM emp

 

3)在加减乘除的运算上

对于NUMBER型的数据可以加减乘除,和日常数学规则差不多 —> 加 +  减 -  乘 *  除 /

①乘除优先加减

②同级运算从左到右

③带括号()优先级最高

示例:

①查询员工一个月的所有收入(这就包括了基本工资和奖金)

SELECT ENAME, SAL + COMM  FROM emp

 

4)取别名:用关键字 AS(AS是可以省略的)

1* 有这么几个作用:

改变表的名字用于表示计算结果的含义作为列的别名

 

2* 之前的查询结果可以取个别名:

SELECT ENAME, SAL + COMM  AS 月收入 FROM emp

AS 关键字,一般用来给列 或 表取别名

也可以省略AS:

SELECT ENAME, SAL + COMM   月收入 FROM emp  e

 

3* 特别注意:使用别名时,要熟知SQL的执行顺序

SELECT语句执行顺序: 先执行FROM--->接着执行WHERE--->再执行SELECT--->最后执行ORDER BY

所以,这样的SQL是错的,SELECT ENAME AS name FROM emp  WHERE name = '坦克'

 

(2)过滤查询

1)使用比较运算符过滤

不等于 != 

不等于 <>

等于 = 

大于 >

小于 <

大于或等于 >=

小于或等于 <=

示例:

①查询工资大于1000的所有员工信息

SELECT * FROM emp WHERE SAL > 1000

②查询工作不是战士的所有员工信息

SELECT * FROM emp WHERE JOB != '战士'

 注:字符串和日期要用单引号

 

2)逻辑运算符

AND(或&&)

OR(或||)

NOT(或!)

示例:

①查询工资在1000~2000(包括1000和2000)的员工

SELECT * FROM emp WHERE SAL >= 1000 AND SAL <= 2000 SELECT * FROM emp WHERE SAL > 1000 && SAL < 2000

注意:到这里了,综合一下以上的优先级:

括号 > 所有的比较运算符 > NOT > AND > OR

 

3)范围查询 BETWEEN 是个闭区间

语法格式:SELECT <columnList> FROM table_name WHERE 列名 BETWEEN minvalue AND maxvalue

示例:上面的 -> ①查询工资在1000~2000(包括1000和2000)的员工 <- 还可以这样写

SELECT * FROM emp WHERE SAL BETWEEN 1000 AND 2000

②查询出所有在1981年雇佣的雇员信息。 SELECT * FROM emp WHERE hiredate  BETWEEN '1981-01-01' AND '1981-12-31'

 

4)集合查询

使用IN运算符,判断列的值是否在指定的集合中

语法格式::SELECT <columnList> FROM table_name WHERE IN  (值1,值2....)

示例:

①查询工作为射手,辅助,战士的所有员工

SELECT * FROM emp WHERE JOB IN ('射手','辅助','战士')

②查询工资为950,3000的所有员工

SELECT * FROM emp WHERE SAL IN (950, 3000)

 

5)空值查询  IS NULL

示例:查询奖金为空的员工

SELECT * FROM emp WHERE COMM IS NULL

 

6)模糊查询

使用LIKE运算符执行通配查询,查询条件可包含文字字符或数字

%通配符:可表示任意个数的任意字符_通配符:可表示一个任意字符

示例:

①查询名字带有 '大' 的所有员工  SELECT * FROM emp WHERE ENAME LIKE '%大%'

②查询名字带有'赵丽?'的所有员工 SELECT * FROM emp WHERE ENAME LIKE '赵丽_'

 ③查询名字带有'赵丽??'的所有员工 SELECT * FROM emp WHERE ENAME LIKE '赵丽__'

注:通配符:用来实现匹配部分的特殊字符

 

(3)结果集排序

先有结果数据,再使用ORDER BY排序,ORDER BY 子句出现在SELECT语句的最后。

ASC : 升序(可以省略,默认不写就是升序)

DESC: 降序

语法格式:SELECT <selectList> FROM table_name WHERE 条件 ORDER BY 列名1 [ASC/DESC],列名2 [ASC/DESC]...;

示例:

①查询到所有员工信息后,按工资降序

SELECT * FROM emp ORDER BY SAL DESC

②查询工作是‘射手’的员工后,按工资降序

SELECT * FROM emp WHERE JOB = '射手' ORDER BY SAL DESC

(4)分页查询

语法格式:LIMIT ?, ?

参数1:开始页

参数2:每页多少条数据

示例:

SELECT * FROM emp  LIMIT 0, 5

SELECT * FROM emp  LIMIT 0, 10

 

(5)聚合函数(分组函数,统计函数,聚集函数)

作用于一组数据,并对一组数据返回一条记录。

1)COUNT:统计结果记录数  (COUNT(*))

2)MAX:  求最大值

3)MIN:  求最小值

4)SUM: 求和

5)AVG:  求平均值

----------------------------------------------------------------------------------

示例:

1)COUNT:统计结果记录数  (COUNT(*))

①COUNT(column_name) 函数返回指定列的有值的数目

SELECT COUNT(SAL)FROM emp

②COUNT(DISTINCT column_name) 函数返回指定列的不同值的数目

SELECT COUNT(DISTINCT SAL)FROM emp

2)MAX:  求最大值

查询基本工资最高的员工

SELECT *, MAX(SAL) FROM emp

3)MIN:  求最小值

查询基本工资最低的员工

SELECT *, MIN(SAL) FROM emp

 

4)SUM: 求和

查询一个月老板总共要发多少基本工资 SELECT SUM(SAL) FROM emp

 

5)AVG:  求平均值

查询整个公司员工的平均工资

SELECT AVG(SAL) FROM emp

 

2、DML 数据库操作语言

(1)保存操作

含义:把哪些值插入到哪个表的哪些列中

语法格式:INSERT INTO table_name (column1,column2,column3...) VALUES  (value1,value2,value3...);

注意:要插入的列和值一定要一一对应.(时间和字符串一定要使用单引号)

示例:

在emp表中新增一条数据,姓名是李白,工作是刺客,入职时间是2020-10-12,工资保密,奖金100

INSERT INTO emp (ENAME, JOB, HIREDATE, SAL, COMM) VALUES ('李白', '刺客', '2020-10-12', null, 100)

注:

①列名与值,个数和位置都要一一对应,对不想设置值的列可以不写,但是写了至少要给默认值null占位。

比如ENAME —— “李白”,SAL —— null

②时间和字符串一定要加单引号 ''

 

(2)更新操作

含义:更新哪个表设置哪些列的等于哪些值条件是什么

语法格式:UPDATE  table_name SET  columnName = value [, columnName = value, ...] [WHERE  condition];

注:where子句作为条件,如果省略了where子句,则全表的数据都会被修改。

示例:

① 修改emp表中的工作为辅助,工资为0(注意不加where条件,即视为修改表中的所有数据)

UPDATE emp SET JOB = '辅助' , SAL = 0 

②修改emp表中名字叫百里玄策的工作为辅助,工资为0(则只会修改名字为百里玄策的数据)

UPDATE emp SET JOB = '辅助', SAL = 0  WHERE ENAME = '百里玄策'

 

(3)删除操作

含义:从哪个表中删除数据

语法格式:DELETE FROM tablename [WHERE condition];

示例:

①从emp表删除数据(注意如果没有where条件即删除该表的全部数据,谨慎!!!)

DELETE FROM emp

②从emp表删除名字叫 吕布 的数据

DELETE FROM emp WHERE ENAME = '吕布'

 

3、TPL 事务处理语言

它的语句能确保被DML语句影响的表的所有行及时得以更新。TPL语句包括BEGIN TRANSACTION,COMMIT和ROLLBACK。

 

4、DCL 数据控制语言

它的语句通过GRANT或REVOKE获得许可,确定单个用户和用户组对数据库对象的访问。某些RDBMS可用GRANT或REVOKE控制对表单个列的访问。

 

5、DDL 数据定义语言

其语句包括动词CREATE和DROP。在数据库中创建新表或删除表(CREAT TABLE 或 DROP TABLE);为表加入索引等。DDL包括许多与人数据库目录中获得数据有关的保留字。它也是动作查询的一部分。

 

6、CCL 指针控制语言

它的语句,像DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT用于对一个或多个表单独行的操作。

 

 

最新回复(0)