03-mySQL select、CONCAT、order BY 數據查詢語句

03-mySQL  select、CONCAT、order BY 數據查詢語句

/*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

*/

相關文章
相關標籤/搜索