千家信息网

数据库查询语句

发表于:2024-11-22 作者:千家信息网编辑
千家信息网最后更新 2024年11月22日,插入数据INSERT 语法结构INSERT [INTO] <表名> [列名] VALUES <值列表>参数解释[INTO]和[列名]是可选的<表名>是必需的如果省略[列名],<值列表>与表中字段的顺序
千家信息网最后更新 2024年11月22日数据库查询语句

插入数据

INSERT 语法结构

INSERT [INTO] <表名> [列名] VALUES <值列表>

参数解释

[INTO]和[列名]是可选的

<表名>是必需的

如果省略[列名],<值列表>与表中字段的顺序保持一致

多个列名和多个值列表用逗号分隔

向student表中插入一行数据

insert into student (姓名,×××号,所在班级,成绩)

values('王兰', '126125199008222446', 2,90)

更新数据

UPDATE 语法结构

UPDATE <表名> SET <列名 = 更新值> [WHERE <更新条件>]

参数解释

WHERE子句是可选的,用来限制条件

如果省略WHERE字句,表中所有数据行将被更新

更改student表中王兰的成绩为95,备注为"勤奋好学"

update student set 成绩='95',备注='勤奋好学' where 姓名='王兰'

删除数据

DELETE 语法结构

DELETE FROM <表名> [WHERE <删除条件>]

参数解释

WHERE子句是可选的,用来限制删除条件

如果省略WHERE字句,表中所有数据行将被删除

Truncate Table语法结构

Truncate table <表名>

删除表中的所有行


条件删除

记录事物日志

重置标识符列

外键约束

Delete

使用where子句按条件删除

是,数据可以恢复

可以用于含有外键约束的表

Truncate table

只能清空整个表

否,数据无法恢复

重置标识符列为0


Truncate Table执行速度更快,用于清空大数据量表

在执行Truncate Table前要确保数据可删除

SQL和T-SQL

SQL(结构化查询语言)

关系数据库的标准语言

SQL Server、 Oracle、DB2

非过程化语言

不需要指定对数据的存放方法

统一的语言

创建、修改以及删除数据对象(数据库、表等)

T-SQL

SQL的加强版, 提供了类似于程序语言的基本功能

变量说明、流程控制、功能函数

T-SQL的组成

DML:数据操纵语言

查询、插入、删除和修改数据

SELECT、INSERT、UPDATE、DELETE

DDL:数据定义语言

建立数据库、数据库对象和定义其列

CREATE、ALTER、DROP

DCL:数据控制语言

控制数据库组件的存取许可、存取权限等

GRANT、REVOKE

SELECT语法结构

SELECT select_list

[INTO new_table_name]

FROM table_name

[ WHERE search_conditions ]

[GROUP BY group_by_expression] [HAVING search_conditions]

[ORDER BY order_expression [ASC|DESC] ]

参数解释

SELECT子句:指定查询内容

INTO子句:把查询结果存放到一个新表中

FROM子句:指定查询源

WHERE子句:查询条件

GROUP BY子句:指定查询结果的分组条件

HAVING子句:指定分组搜索条件,与GROUP BY子句一起使用

ORDER BY子句:指定查询结果的排序方式

表达式

条件表达式

常量:表示单个指定数据值的符号

字母、数字或符号

列名:表中列的名称

一元运算符:仅有一个操作数的运算符

"+"表示正数,"-"表示负数

二元运算符:将两个操作数组合执行操作的运算符

算术运算符、位运算符、逻辑运算符、比较运算符

运算符含义

=等于

>大于

<小于

>=大于或等于

<=小于或等于

<>不等于

!=不等于

BETWEEN指定值的包含范围(包含边界)。使用 And 分隔开始值和结束值

IS [Not] NULL指定是否搜索空值或非空值

LIKE模糊查询,与指定字符串进行模式匹配

IN是否在数据范围里面

条件表达式举例

PRICE > 20,表示满足大于20的PRICE值

PRICE <> 20,表示满足不等于20的PRICE值

PRICE Between 10 And 20,表示满足大于等于10并且小于等于20的PRICE值

NAME Like '李%',表示满足NAME姓名字段里姓李的所有姓名

逻辑表达式

用逻辑运算符将条件连接起来,运算结果是一个逻辑值

TRUE或FALSE

逻辑运算符

运算符含义

AND组合两个条件,并在两个条件都为True时取值为True

OR组合两个条件,并在两个条件之一为 True 时取值为True

NOT和其他操作符一起使用,取反的操作

逻辑表达式举例

付款方式为信用卡,并且只能是牡丹卡、金穗卡或龙卡

付款方式 = '信用卡' AND 信用卡 in ('牡丹卡', '金穗卡', '龙卡')

查询举例--查询列

查询表中所有列

SELECT * FROM table_name

查询student 表中的所有学生信息

SELECT * FROM student

查询表中特定列

SELECT column_name_1,column_name_2,... FROM table_name

查询student表中姓名、所在班级、成绩列的内容

SELECT 姓名,所在班级,成绩 FROM student

查询举例--查询特定行

语法结构

SELECT select_list FROM table_name WHERE search_conditions

查询student表中2班的名叫刘婷的学生

SELECT * FROM student WHERE 姓名='刘婷' AND 所在班级=2

查询student表中成绩在90到100的所有学生

SELECT * FROM student WHERE 成绩 BETWEEN 90 AND 100

查询student表中姓刘的所有学生

SELECT * FROM student WHERE 姓名 LIKE '刘%'

查询student表中备注不为空的所有学生

SELECT * FROM student WHERE 备注 is NOT NULL

查询举例--查询返回限制的行数

语法结构

SELECT TOP n select_list FROM table_name

参数解释

TOP关键字用来限制查询返回的行数,n为需要返回的行数

查询student表中前5行的数据

SELECT top 5 * FROM student

查询举例--改变查询结果集列名称

语法结构

SELECT column_name AS column_alias FROM table_name

参数解释

AS子句用来改变结果集列的名称

查询student表中姓名和×××号两列数据

SELECT 姓名 AS name,×××号 as idcard FROM student

查询举例--查询结果排序

语法结构

SELECT select_list FROM table_name ORDER BY column_name [ASC|DESC]

参数解释

ASC:升序

DESC:降序

查询student表中学生信息,按照成绩从高到低显示结果

SELECT * FROM student order by 成绩 DESC

查询举例--聚合函数

用于对一组值执行计算,并返回单个值

如求总和、平均值、最大或最小值等

SUM:求总和

查询student表中所有学生的总成绩

SELECT SUM(成绩) 总成绩 FROM student

AVG:求平均数

查询student表中所有学生的平均成绩

SELECT AVG(成绩) 平均成绩 FROM student MAX和MIN:返回最大最小值

查询student表中所有学生中的最高分和最低分

SELECT MAX(成绩) 最高分,MIN(成绩) 最低分 FROM student

COUNT:返回非空值的计数

查询student表中所有行数

SELECT COUNT(*) 总行数 FROM student

查询举例--分组查询

语法结构

SELECT select_list FROM table_name GROUP BY column_name

HAVING search_conditions

参数解释

GROUP BY子句对查询结果进行分组

HAVING子句指定分组搜索条件

查询student表中每个班级的总成绩

SELECT 所在班级,SUM(成绩) AS 总成绩 FROM student GROUP BY 所在班级

查询student表中总成绩大于200的班级

SELECT 所在班级,SUM(成绩) AS 总成绩 FROM student GROUP BY 所在班级 HAVING SUM(成绩)>200

WHERE子句和 HAVING子句的区别

WHERE子句在分组之前过滤数据,条件中不能包含聚合函数

HAVING子句在分组之后过滤数据,条件中经常包含聚合函数

查询举例--插入数据

语法结构

SELECT select_list INTO new_table_name FROM table_name

参数解释

INTO子句把一个表中的数据经过筛选插入到另一个表中

将student表的数据插入到新表student_bak中

SELECT * INTO student_bak FROM student

将student表中2班的学生信息保存到表student_2中

SELECT * INTO student_2 FROM student WHERE 所在班级=2

表的连接类型

内连接(INNER JOIN)

只返回两个数据集合之间匹配关系的行

外连接

左外连接(LEFT JOIN )

结果集包括左表的所有行

右外连接(RIGHT JOIN )

结果集包括右表的所有行

完整外连接(FULL JOIN)

返回左表和右表中的所有行

交叉连接

返回左表与右表挨个连接的所有行

内连接

方式一:在Where子句中指定连接条件

SELECT A.name 姓名A,A.school 学校A,B.name 姓名B,B.job 职业B FROM A,B WHERE A.name=B.name

方式二:在FROM子句中使用INNER JOIN…ON子句

SELECT A.name 姓名A,A.school 学校A,B.name 姓名B,B.job 职业B FROM A inner join B on A.name=B.name

左外连接和右外连接

左外连接查询

SELECT A.name 姓名A,A.school 学校A,B.name 姓名B,job 职业B FROM A left join B on A.name=B.name

右外连接查询

SELECT A.name 姓名A,A.school 学校A,B.name 姓名B,job 职业B FROM A right join B on A.name=B.name

完整外连接查询

SELECT A.name 姓名A,A.school 学校A,B.name 姓名B,job 职业B FROM A full join B on A.name=B.name


0