MySql基礎篇
資料操縱語言DML
/*
插入資料
方式1: INSERT INTO 表名(列1,列2……,列n) VALUES(值1,值2…..,值n);
方式2: INSERT INTO 表名 set 列名1=值1,..列名n=值n;
方式3: INSERT INTO 表名(列1,列2……,列n) VALUES(值1,值2…..,值n),(值1,值2…..,值n);
方式4:INSERT INTO 表名(列1,列2……,列n) 查詢陳述句(查詢的列數與插入列數匹配)
*/
INSERT INTO student(NAME,sex,birthday,grade,score,phone,address,reg_time)
VALUE('tom','男','2000-1-2',1,98,'15929101866','xian',NOW())
INSERT INTO student SET NAME='張三',sex='男',birthday='2020-1-3',grade=2,score=97,phone='15959421585',address='陜西',reg_time=NOW()
INSERT INTO student(NAME,sex,birthday,grade,score,phone,address,reg_time)
VALUES('李四','男','2000-1-2',3,98,'15929101899','咸陽',NOW()),
('王五','女','2000-1-4',3,98,'15929101888','咸陽',NOW()),
('李六','男','2000-1-5',3,98,'15929101877','咸陽',NOW())
-- 表名后不描述,表示向表中所有的列插入資料 值得數量應與列的數量相匹配
INSERT INTO stu(num,NAME,sex,birthday,grade,score,phone,address,reg_time)
SELECT * FROM student
-- 修改表資料
UPDATE student SET NAME = '李四',sex='男'
-- 添加條件
UPDATE student SET NAME = '趙六',sex='女' WHERE num =2233
-- 洗掉陳述句
DELETE FROM student WHERE num = 2237
-- 清空表資料
TRUNCATE TABLE student
ALTER TABLE student MODIFY num INT AUTO_INCREMENT
DQL資料查詢陳述句
-- select 查詢結果 from 表 where 條件 [分組][分組條件] 排序
/*
關鍵字查詢
函式查詢
單行函式
字符
數字
日期
分組函式
條件查詢
*/
-- 查詢結果是常量
SELECT 100
-- 運算式
SELECT 10+10
SELECT grade+1 FROM student
-- 函式
SELECT VERSION() #查詢版本
SELECT NOW() #查詢時間
-- 查詢整張表資料
SELECT * FROM student
-- 查詢特定列
SELECT num,NAME,sex FROM student
-- 去除重復資料(多行資料所有列相同)只針對查詢出來的結果去重
SELECT DISTINCT sex FROM student
-- 算術運算子+(簡單的加法運算,沒有字符拼接功能) - * /
SELECT grade+score FROM student
-- 所有人班級+1
SELECT grade+1 FROM student
-- 單行函式(對每行進行處理)
-- LENGTH(列名) 回傳字符位元組數量長度
SELECT LENGTH(NAME) FROM student
-- 字符函式
-- CHAR_LENGTH(NAME) 以字符為單位
SELECT CHAR_LENGTH(NAME) FROM student
-- 拼接 CONCAT (tr1,str2)
SELECT CONCAT ('aa','bb','cc')
SELECT CONCAT (NAME,'是',sex) FROM student
-- 轉大寫
SELECT UPPER(NAME) FROM student
SELECT UPPER('abc')
-- 轉小寫
SELECT UPPER('ABC')
-- 字串截取 SUBSTRING(列名,開始位置,截取長度)
SELECT SUBSTRING(NAME,1,1) FROM student
-- 指定字串首次出現位置查找 INSTR(列名,str)
SELECT INSTR(NAME,'o') FROM student
-- 去前后空格 TRIM(列名)
SELECT TRIM(NAME) FROM student
-- 去前后指定字符 TRIM(str from 列名)
SELECT TRIM('o' FROM NAME) FROM student
-- 填充字符到指定長度 LPAD(列名,補充到指定長度,填充內容)
SELECT LPAD(NAME,6,'z') FROM student
-- 將列中替換成指定的字符 REPLACE(列名 ,舊字串,新字串)
SELECT REPLACE(NAME , 'a','z') FROM student
-- 邏輯處理
-- case when 條件 then 成立的結果 else 不成立的額結果 END from table
SELECT
CASE WHEN score>=90 THEN 'A' ELSE 'B' END FROM student
SELECT
NAME,
(CASE WHEN score>=90 THEN 'A'
WHEN score>=80 AND score<90 THEN 'B'
WHEN score>=70 AND score<80 THEN 'C'
ELSE 'D'
END ) score # 定義查詢出結果的別名
FROM student
-- IFNULL(判斷為空的列,如果為空的默認值) 別名
SELECT IFNULL(phone,'未登記手機號') Moblie FROM student
SELECT IFNULL(phone,NAME) Moblie FROM student
-- IF(條件,滿足結果,不滿足結果)
SELECT IF(score>=90,'優秀','良好')score FROM student
-- 數學函式
-- round四舍五入
SELECT ROUND(5.9)
-- ceil 向上取整
SELECT CEIL(5.4)
-- floor 向下取整
SELECT FLOOR(5.9)
-- 保留指定小數位數,不進位
SELECT TRUNCATE(5.5363,2)
-- mod取余
SELECT MOD(10,3)
-- rand 獲取0-1 之間的亂數
SELECT RAND()
-- 日期處理函式
SELECT NOW() #回傳當前系統的時間+日期
SELECT CURDATE() #回傳當前系統的日期
SELECT CURTIME() #回傳當前系統的時間
-- 日期格式化
-- 只獲取年份
SELECT YEAR(reg_time ) FROM student
-- 只獲取月份
SELECT MONTH(reg_time ) FROM student
-- 將字串格式轉換為資料庫中的日期格式
SELECT STR_TO_DATE('1999-5-23','%Y-%m-%d')
-- 日期格式轉指定格式的字串
SELECT DATE_FORMAT(reg_time,'%Y年%m月%d日')m FROM student
SELECT COUNT(*),DATE_FORMAT(reg_time,'%Y年%m月%d日')m FROM student GROUP BY m
-- 計算兩個日期的時間差
SELECT DATEDIFF(reg_time,NOW()) FROM student
-- 組函式,聚合函式,統計函式
/*
分類:sum求和,avg平均值,max最大值,min最小值,count計數
1.sum,avg一般用于處理數值型; max,min,count可以處理任何型別
2.已上分組函式都忽略null值
3.可以和distinct搭配實作去重的運算
4.count函式的一般使用count(*)用做統計行數
*/
-- 求總和
SELECT SUM(score) FROM student
SELECT SUM(DISTINCT score) FROM student
-- 求平均
SELECT AVG(score) FROM student
-- 最大值
SELECT MAX(score) FROM student
-- 最小值
SELECT MIN(score) FROM student
-- 統計數量
SELECT COUNT(*) FROM student
SELECT COUNT(DISTINCT score) FROM student
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/261791.html
標籤:其他
上一篇:php中反引號及雙引號中的反引號
