SQL高级教程

发布于:2022-11-27 ⋅ 阅读:(290) ⋅ 点赞:(0)


SQL高级教程


一、关于查询

1.模糊查询

基础查询使用逻辑运算符查询,模糊查询就是使用比较运算符进行查询。

运算符 描述
IS NULL 查询结果是否为空
IS NOT NULL 查询结果是否为非空
LIKE a like b 查询a 是否匹配 b
BETWEEN a between b and c 查询a 是否在b~c之间
IN a in(a1,a2,a3…)查询a是否在a1,a2,a3…其中某个值中

使用 LIKE 结合 %(代表0到任意字符) _(一个字符)

先新建一个表并且插入数据
CREATE TABLE `student` (
`StudentId` INT(6) NOT NULL AUTO_INCREMENT COMMENT '学生id',
`StudentName` VARCHAR(6) NOT NULL  COMMENT '学生姓名',
`StudentAge` INT(6) NOT NULL  COMMENT '学生年龄',
PRIMARY KEY(`StudentId`)
)ENGINE=INNODB DEFAULT CHARSET = utf8;

INSERT INTO `student`(`StudentId`,`StudentName`,`StudentAge`)VALUES('001','张三','12'),('002','李四','34'),('003','王五','52'),('004','赵六','72') 

在这里插入图片描述

新建查询 查询学生姓名里包含“五”的信息

新建查询  查询学生姓名里包含“五”的信息
SELECT *FROM student WHERE StudentName LIKE "%五";

在这里插入图片描述
新建查询 查询学生姓名里张姓双字名称的信息


SELECT *FROM student WHERE StudentName LIKE "张_";

在这里插入图片描述

2.高级查询

(1)连表查询(内连接实现)

通过多个表中的 相同字段去查询不同表中的数据。
在一个查询中从不同的表返回结构数据; 有外联,内联…

创建一个学生科目表 和 学生成绩表

--                    学生信息表
CREATE TABLE `project` (
`StudentId` INT(6) NOT NULL AUTO_INCREMENT COMMENT '学生id',
`Project` VARCHAR(6) NOT NULL  COMMENT '学生科目',
 PRIMARY KEY(`StudentId`)Id
)ENGINE=INNODB DEFAULT CHARSET = utf8;
--            
INSERT INTO subject(`Subject`)VALUES('新闻学'),('社会学'),('科学'),('法学'),('数学')

-- --                      学生成绩表
CREATE TABLE `result` (
`Id` INT(6) NOT NULL AUTO_INCREMENT COMMENT '普通id',
`Project` VARCHAR(6) NOT NULL,
`Result` INT(6) NOT NULL  COMMENT '学生成绩',

 PRIMARY KEY(`Id`)
)ENGINE=INNODB DEFAULT CHARSET = utf8;

INSERT INTO result(`Subject`,`Result`)VALUES('新闻学',23),('社会学',54),('科学',98),('法学',78),('数学',23)

通过内连接查询学生表中的学生Id 和学生姓名,学生信息表中的学生科目,学生成绩表中的学生成绩。
查看表关系就知道 学生表与学生信息表有相同属性“学生Id” 学生信息表与学成绩表有相同属性“学生科目”
通过以上条件可连接这三个表查询:

--  注意使用别名  避免数据混淆
SELECT s.StudentId,sub.`Project`,`Result`,StudentName
FROM `student` AS s
INNER JOIN `subject` AS sub
ON s.`StudentId` = sub.StudentId
INNER JOIN `result` AS r
on sub.`Project` = r.`Project`

在这里插入图片描述
这样就通过内连接 查询了三个表中的数据。

(2)多表查询

SQL UNION 操作符
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。

请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。
注意:UNION 命令只会选取不同的值 。 使用UNION ALL 才能够选取相同的值。

SELECT  StudentName FROM student 
UNION
SELECT Result FROM result 

在这里插入图片描述
UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。

二、SQL常用函数

1.数学函数

SELECT CEILING(9.4) 向上取整
SELECT ABS(-8) 取绝对值
SELECT FLOOR() 向下取整
SELECT RAND() 返回一个0~1之间的随机数
SELECT SIGH(10) 判断一个数的符号 ,负数返回 -1, 正数返回 1

2.字符串函数

SELECT CHAR_LENGTH(‘这是一行字’) 返回字符串长度
SELECT CONCAT(‘我’,‘爱’,‘你’) 拼接字符串
SELECT INSERT(‘我爱编程’ ,1,2,‘超级热爱’) 在1的位置 替换调2个字符串
SELECT LOWER(‘xiaoyang’) 字符串小写
SELECT UPPER(‘XIAOYANG’) 字符串大写
SELECT REPLACE(‘我坚持学习编程!’,‘坚持’,‘努力’) 替换指定字符串
SUBSTR(‘我十分喜欢编程啦啦啦啦啦’,4,6) 从第4位开始截取6个字符串
REVERSE(‘这是字符串’) 字符串反转

3.时间日期函数

SELECT CURRENT_DATE() 获取当地日期
SELECT CURDATE() 获取当地日期
SELECT NOW() 获取当前时间
SELECT LOCALTIME() 本地时间
SELECT SYSDATE() 系统时间
SELECT YEAR(NOW())
SELECT MONTH(NOW())
SELECT DAY(NOW())
SELECT HOUR(NOW())
SELECT MINUTE(NOW())
SELECT SECOND(NOW())

4.系统函数

SELECT USER() 系统用户
SELECT VERSION() 系统版本

5.聚合函数(常用)

COUNT() 总数
SUM() 总和
AVG() 平均数
MAX() 最大值
MIN() 最小值

COUNT(1) COUNT(*) 用法一样
COUNT(字段) 会忽略所有的NULL值


网站公告

今日签到

点亮在社区的每一天
去签到