网站建设合同交什么印花税,怎样说服企业做网站建设推广,网站建设方案免费,制作网页的图片基础语法
SELECT {*,列名,函数}
FROM 表名
[WHERE 条件]; 说明#xff1a; -SELECT检索关键字 *匹配所有列 , 匹配指定列 -FROM 所提供的数据源#xff08;表#xff0c;视图#xff0c;另一个查询机制反馈的结果#xff09; -WHERE 条件#xff08;控制查询的区…基础语法
SELECT {*,列名,函数}
FROM 表名
[WHERE 条件]; 说明 -SELECT检索关键字 *匹配所有列 , 匹配指定列 -FROM 所提供的数据源表视图另一个查询机制反馈的结果 -WHERE 条件控制查询的区域 结论 SELECT 关键字 和 FROM 关键字之间的语句控制结果的列数 WHERE后面跟的语句控制结果的行数 SELECT 语句中的算数
运算符优先级:括号乘除加减
运算顺序从左往右
null不可用、未分配的值不等于零或空格
将两个变量使用运算符进行运算时会自动将字符串转回为数值进行计算如果字符串中不是数字则会转为数值0
当有一个变量值为null进行运算时则计算结果为null 补充 安全等于等价于 和 IS 两者的结合 1、定义字段的别名
关键字AS
位置SELECT后接的列名后面
SELECT StudentName,Address,Email
FROM student; SELECT StudentName AS 学生姓名,Address AS 家庭住址,Email AS 电子邮箱
FROM student;
或
SELECT StudentName “学生姓名”,Address “家庭住址”,Email “电子邮箱”
FROM student; 2、祛除重复的记录
关键字DISTINCT
位置SELECT后
例
SELECT DISTINCT sex 性别
FROM student;
3、WHERE 限制
比较运算符
!
逻辑运算符
ANDORNOT
BETWEEN关键字实现范围查询
IN关键字
LIKE关键字用于执行模糊查询查询条件可以包含文字字符或占位符
%匹配0或多个字符_匹配一个字符
例
1、比较符、逻辑符
SELECT *
FROM student
WHERE GradeId 1 AND BornDate 1980-01-01 AND sex 1;2、BETWEEN AND关键字
SELECT StudentName 姓名
FROM student
WHERE BornDate BETWEEN 2000-01-01 AND 2010-01-01;3、IN关键字
SELECT StudentName 姓名
FROM student
WHERE GradeId IN (1,2,3);4、LIKE关键字
SELECT StudentName 姓名
FROM student
WHERE StudentName LIKE 李%;
4、GROUP BY 分组查询
作用与聚合函数组合使用将查询的记录进行分组
含义把表中列值相同的多条记录当成是一条记录进行处理,最终也只输出一条记录分组函数忽略空值
语法
SELECT {*,列名,函数}
FROM 表名
[WHERE 基础条件]
[GROUP BY 分组条件]
[HAVING 过滤条件]
分组函数的重要规则
如果使用了分组函数或GROUP BY (字段1字段2...)执行查询那么出现在SELECT 列表后的字段必须是聚合函数或出现过在GRUOP字句内。GRUOP BY子句的字段可以不出现在SELECT内。使用聚合函数但不使用分组查询时那么所有的数据会作为一组进行显示GROUP BY前面的 WHERE 表示 分组前执行的条件过滤GROUP BY后面的 HAVING表示 分组后执行的条件过滤
4.1排序查询ASC||DESC
SELECT {*,列名,函数}
FROM 表名
[WHERE 基础条件]
[GROUP BY 分组条件]
[HAVING 过滤条件]
[ORDER BY (需要排序的字段) ASC||DESC]; #ASC升序(升序) DESC(降序)
例
#示例1、查询平均成绩在80以上的学生(学号)信息,同时成绩还需要按照降序排列
SELECT StudentNo 学号,AVG(StudentResult) 成绩
FROM result
GROUP BY (StudentNo)
HAVING AVG(StudentResult) 80;
ORDER BY(AVG(StudentResult)) DESC;
4.2区间查询LIMIT
SELECT {*,列名,函数}
FROM 表名
[WHERE 基础条件]
[GROUP BY 分组条件]
[HAVING 过滤条件]
[ORDER BY (需要排序的字段) ASC||DESC] #ASC升序(升序) DESC(降序)
[LIMIT A,B]; LIMIT 连续区间查询 LIMIT A,B A表示需要查询的行的索引位 B所查询的容量 LIMIT 0,5 第一行---第五 LIMIT 5,5 第六行---第十 LIMIT 10,5 第十一---第十五 分页查询的前置 以baidu热搜为例 第一页 LIMIT 0,6 第二页 LIMIT 6,6 第三页 LIMIT 12,6 第四页 LIMIT 18,6 第五页 LIMIT 24,6 第六页 LIMIT 30,6 LIMIT (当前页码数-1)*容量,容量 例 #示例1求学校学生中 三甲学生的信息#分析 学生总分 降序排列 区间取前三SELECT StudentNo 学号,SUM(StudentResult) 总成绩FROM resultGROUP BY (StudentNo)ORDER BY(SUM(StudentResult)) DESCLIMIT 0,3;
4.3分组数据合并GROUP_CONCAT
例
#示例1 根据班级进行分组要求查看各班人数以及各班学员姓名。
SELECT GradeID 班级编号,COUNT(*) 班级人数,GROUP_CONCAT(StudentName) 学员姓名
FROM student
GROUP BY(GradeID);
注意事项 1、使用GROUP_CONCAT()时必须要对数据源进行分组如果不分组所有数据都将合并成一行 2、对结果集排序 查询语句执行的查询结果,数据是按照插入时顺序进行排序。 3、实际上需要按照某列大小值进行拍讯的话建议只针对于数值或日期通过 ORDER BY函数进行排序 4、在语句最后也可以通过LIMIT控制容量大小
5、多表关联查询
5.1交叉连接查询
查询多个表的数据
#示例1查询所有的学生所有的班级信息
SELECT *
FROM student,grade;
5.2等值连接查询
语法
SELECT *
FROM 表1表2...
WHERE 表1.列 表2.列 [AND...];
例
示例查询所有的学生姓名住址班级名称
SELECT s.StudentName 姓名,s.Address 住址,g.GradeName 班级名称
FROM student s,grade g
WHERE s.GradeID g.GradeID; 等值连接确实能够帮助我们完成表于表之间的联系,但是WHERE这个关键字一开始是作为基础条件关键字出现的,而我们把表与表之间关系的描述通过WHERE去实施难免大材小用于是我们决定释放WHERE关于等值连接的操作。 5.3内连接查询
关键字INNER JOIN
语法
SELECT *
FROM 表1 INNER JOIN 表2 ON 表1.列 表2.列 [INNER JOIN 表3 ON 关系 .....]
[WHERE 基础条件];
例
示例练习查询学生姓名参考科目考试时间考试成绩
SELECT s.StudentName 学生姓名,su.SubjectName 参考科目,r.ExamDate 考试时间,r.StudentResult 考试成绩
FROM student s INNER JOIN result r ON r.StudentNo s.StudentNo
INNER JOIN subject su ON r.SubjectNo su.SubjectNo; 内连接查询的本质和等值实际上没有区别,但是内连接可以释放WHERE关键字,使表与表之间关系更加清晰 5.4外连接查询
5.4.1 左外连接
关键字LEFT JOIN
获取相交数据左外关键字以左表的全部数据
SELECT s.StudentName 姓名,s.Address 住址,g.GradeName 班级名称 FROM grade g LEFT JOIN student s ON s.GradeID g.GradeID;
5.4.2 右外连接
关键字RIGHT JOIN
获取相交数据右外关键字以右的全部数据
SELECT s.StudentName 姓名,s.Address 住址,g.GradeName 班级名称 FROM student s RIGHT JOIN grade g ON s.GradeID g.GradeID;
5.5自然连接查询
自己和自己形成主外键关系 SELECT c1.categoryName 父级目录,c2.categoryName 子栏目
FROM category c1 INNER JOIN category c2 ON c1.categoryId c2.pid;
6、子查询
1、将一个查询语句的结果充当下一个查询语句的条件2、核心在于通过小括号以提高优先级别3、子查询中可以包含的关键字 IN NOT ALL4、子查询中可以包含的运算符 逻辑算数
#示例1查询大一的男生姓名及家庭住址
#1--大一对应的班级编号
SELECT GradeID FROM grade WHERE GradeName 大一; 1
#2--以一年级一班对应的班级编号作为线索去找适配的学生信息
SELECT StudentName 姓名,Address 住址
FROM student WHERE GradeID
(SELECT GradeID FROM grade WHERE GradeName 大一);
#3--加入我们的基础条件
SELECT StudentName 姓名,Address 住址
FROM student WHERE GradeID
(SELECT GradeID FROM grade WHERE GradeName 大一) AND sex 1;
#示例2查询班级名称是大一学生信息学号信息科目是高等数学-1科目编号 的学生的平均分
需求1 根据班级名 找出班级 编号
SELECT GradeID
FROM grade WHERE GradeName 大一;
需求2 根据对应的班级编号 找到适配的学生学号
SELECT StudentNo
FROM student WHERE GradeID (SELECT GradeID
FROM grade WHERE GradeName 大一)
需求3 根据科目名找到对应的科目编号
SELECT subjectNo
FROM subject WHERE subjectName 高等数学-1;
编辑最后的命令
SELECT AVG(result.StudentResult)
FROM result
WHERE result.SubjectNo (SELECT subjectNo
FROM subject WHERE subjectName 高等数学-1)
AND result.StudentNo IN (SELECT StudentNo
FROM student WHERE GradeID (SELECT GradeID
FROM grade WHERE GradeName 大一));