/*1、 插入ssh
INSERT INTO SUBJECT (`name`, classhour, majorid)
VALUES
VALUES
('工商管理', 40, '16')*/函数
-- 查询student表中的数据
-- SELECT *FROM studentspa
-- 根据查询条件查询数据 WHERE
-- SELECT *FROM student
-- WHERE majorid='计算机'
-- select * FROM subject where majorid=8排序
-- 查询课时数在40~55之间的科目数 BETWEEN...AND...
-- select *FROM `subject` WHERE classhour BETWEEN 40 and 55字符串
-- 查询majorid是8或16的数据 in() / OR
-- SELECT * FROM `subject` WHERE majorid in (8,16)
-- SELECT *FROM `subject` WHERE majorid=8 or majorid=16class
-- 查询majorid 不是16 的数据 not IN !=
-- SELECT *FROM `subject` WHERE majorid !=16
-- SELECT *FROM `subject` WHERE majorid not IN(16)email
-- 查找name=Annie的学生 SELECT 列 from 表 where 条件
-- SELECT * FROM student WHERE NAME='Annie'select
-- 查询考试不及格的成绩 > <
-- SELECT *FROM result WHERE score<60im
-- 查询科目编号majorid是16 而且 课时数classhour55如下的科目数据 AND
-- SELECT *FROM `subject` WHERE majorid=16 AND classhour<55统计
-- 列别名 查询时使用,不修改原始表
-- 1.使用 as 给查询出的列取别名 select 'id' AS '编号', NAME AS '学科名' FROM `subject`
-- select NAME AS '学科名' FROM `subject`;
-- 2.给常量取别名 SELECT 1 as '数字'
-- SELECT 1 AS '数字' FROM `subject`
-- 3.为组合生成的列 取别名 CONCAT(str1,str2,...) 函数进行字符串拼接
-- SELECT CONCAT(NAME,'&',classhour ,'*',majorid) AS '组合' FROM `subject`
-- --SQL 中单引号和双引号均可以表示字符串
-- -‘+’符号只能作算数运算,不能当连字符用
-- 4.在取别名的时候 AS 关键字能够省略不写
-- SELECT id '编号', name '名称' FROM major
-- 条件语句
-- 1.判断咧为空 IS NULL 和 不为空 IS NOT NULL
-- SELECT *FROM result WHERE score IS NULL
-- SELECT *FROM result WHERE score IS NOT NULL
-- 2.限制查询出的行数 LIMIT 开始位置,返回行数 LIMIT 放在语句末尾
-- 查询五行
-- SELECT * FROM result LIMIT 5
-- 查询第一行到第五行的数据
-- SELECT * FROM result LIMIT 1,5
-- 查询第五行开始 日后追加五行
-- SELECT * FROM result LIMIT 5,5
-- -----------------------------------
-- 查询 majorid=8 和10 的科目名称 IN 的用法
-- SELECT *FROM subject WHERE majorid in (8,10)
-- 查询不是 8和 10的数据 NOT IN
-- SELECT *FROM subject WHERE majorid not in (8,10)
-- 去除重复记录 DISTINCT
-- SELECT DISTINCT NAME FROM `subject`
/*
模糊查询
查询出全部姓张的学生信息
SELECT *FROM student where name like '张%'
查询出姓名中带有 马 字的学生信息
SELECT *from student where name like '%马%'
查询出只有名字里有马的学生信息
select *from student where name like '_马%'
通配符定义:
_ 匹配一个 任意字符
% 匹配任意多个任意字符
*/
-- 排序
-- order BY <列名> 根据某列排序 升序 ASC
-- SELECT * from result order by score
-- 降序 DESC
-- SELECT * from result order by score DESC
-- 多列排序
-- select *from `subject` Order by majorid ASC , classhour DESC
/*综合应用
1.已知student 的emali 中有空值
2.在使用email 正序排序的时候如何将空值放在查询结果末尾
3.运用知识点
case when 语句
多列 排序
表别名
列别名
SELECT
CASE
WHEN emali IS NULL THEN
'1'
ELSE
'0'
END AS tem ,
stu.*
FROM
student stu
ORDER BY
tem,
stu .email
*/
-- 文本处理函数
-- `LEFT`(str,len) 返回从左边起左边指定长度的字符
-- SELECT name ,LEFT(name ,2)FROM student
-- `RIGHT`(str,len) 返回从右边起左边指定长度的字符
-- SELECT NAME,RIGHT(name ,3) FROM student
-- LOWER(str)将字符串转换为小写
-- SELECT NAME , LOWER(name ) from student
-- UPPER(str) 将字符串转换为大写
-- SELECT name ,UPPER(name ) from student
-- LENGTH(str)返回字符串的长度
-- SELECT name ,LENGTH(name ) from student
-- LTRIM(str) 去掉字符串左边空格
-- SELECT name ,ltrim(NAME) FROM student;
-- RTRIM(str) 去掉字符串右边的空格
-- SELECT name , RTRIM(name )FROM student;
-- TRIM(str) 去掉字符串左右两边的空格
-- SELECT name ,TRIM( name ) from student
-- 日期时间函数
-- 聚合函数
-- MIN(expr)求最小值;
-- MAX(expr)求最大值;
-- COUNT(expr)统计个数;
-- SUM(expr) 求和
-- AVG([DISTINCT] expr)求平均值
-- 1.统计student 表中人数 结果=9
-- SELECT COUNT(*) FROM student
-- 注:COUNT(expr) 函数的参数能够为 *、列名‘或一个数字
-- 若为列则不会统计该列 NULL(为空)的数据
/*- 求 majorid 为8 的课时数
- 1.求最大课时是多少 结果1=65
SELECT MAX(classhour)FROM `subject` WHERE majorid=8;
-- 2.求最少课时 结果2 45
SELECT MIN(classhour) from `subject` WHERE majorid=8;
-- 3.平均课时 结果3 56.8333
SELECT AVG( classhour) from `subject` WHERE majorid=8
注: 常见问题
聚合函数用来统计多条数据的值,所以使用聚合函数的
查询语句,select子句中的其余列是没有意义的
• 例如: score 与 studentno 没有直接关系
• select avg(score),studentno from result where
subjectid=1
*/