03-mySQL select、CONCAT、order BY 数据查询语句

03-mySQL  select、CONCAT、order BY 数据查询语句

/*一、 插入

INSERT INTO SUBJECT (`name`, classhour, majorid)
VALUES
VALUES
    ('工商管理', 40, '16')*/


-- 查询student表中的数据
-- SELECT *FROM student

-- 根据查询条件查询数据   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=16

-- 查询majorid 不是16 的数据  not IN  !=
-- SELECT *FROM `subject` WHERE majorid !=16
-- SELECT *FROM `subject` WHERE majorid not IN(16)

-- 查找name=Annie的学生  SELECT 列 from 表 where 条件
-- SELECT * FROM student WHERE NAME='Annie'

-- 查询考试不及格的成绩  >  <  
-- SELECT *FROM result WHERE  score<60

-- 查询科目编号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

*/


 

转载于:https://my.oschina.net/u/3009742/blog/789987

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值