MySql基礎2
阿新 • • 發佈:2019-02-12
-- 查詢 5+7 5*7
SELECT 5+7,5*7;
-- 查詢 函式--用到再查詢就好了
-- 檢視當前開啟的資料庫
SELECT DATABASE();
-- 檢視 MySQL版本
SELECT VERSION();
-- 檢視 系統時間
SELECT NOW();
-- 檢視 MySQL登入使用者
SELECT USER();
-- WHERE 條件 : 條件過濾
-- 比較運算子 > >= < <= != <> = <=>判斷null
-- 查詢表cms_user 中 編號大於3的記錄
SELECT * FROM cms_user
WHERE id>3;
-- 查詢表cms_user 中 編號小於等於2的記錄
SELECT * FROM cms_user
WHERE id<=2;
-- 查詢表cms_user 中 編號不等於2的記錄
SELECT * FROM cms_user
WHERE id<>2;
-- <=>判斷null
-- 給表cms_user 中 編號是 2記錄 address改 null值
UPDATE cms_user SET address=null WHERE id=2;
-- 查詢表cms_user 中 address欄位是null值的記錄
SELECT * FROM cms_user
WHERE address<=>null;
-- IS [NOT] NULL 判斷null
SELECT * FROM cms_user
WHERE address IS null;
SELECT * FROM cms_user
WHERE address IS NOT null;
-- 查詢表cms_user 中 編號2-4的記錄
SELECT * FROM cms_user
WHERE id>=2 AND id<=4;
SELECT * FROM cms_user
WHERE id BETWEEN 2 AND 4;
-- 查詢表cms_user 中 編號不在2-4的記錄
SELECT * FROM cms_user
WHERE id<2 OR id>4;
SELECT * FROM cms_user
WHERE id NOT BETWEEN 2 AND 4;
-- [NOT] IN(值,值...) (取某幾個不連續的值)
-- 查詢表cms_user 中 編號是 2,3,5的記錄
SELECT * FROM cms_user
WHERE id IN(2,3,5);
SELECT * FROM cms_user
WHERE id=2 OR id=3 OR id=5;
-- 查詢表cms_user 中 編號不是 2,3,5的記錄
SELECT * FROM cms_user
WHERE id NOT IN(2,3,5);
SELECT * FROM cms_user
WHERE id<>2 AND id<>3 AND id<>5;
-- 查詢 表cms_user 中 name 是jerry 、
-- 密碼pwd是123的記錄(兩欄位)
SELECT * FROM cms_user
WHERE name='jerry' AND pwd='123';
-- 對錶cms_user 中 編號是 2 4 7 9 的記錄
UPDATE CMS_USER SET AGE=22
WHERE ID IN(2,3,5);
-- 更改 age為 22
UPDATE cms_user SET age=22
WHERE id IN(2,4,7,9);
-- 對錶cms_user 中 編號是 2 4 6 8 的記錄
-- 更改 address為 廣州
UPDATE cms_user SET address='廣州'
WHERE id IN(2,4,6,8);
-- 查詢 表cms_user 中 編號在 2-7之間
-- 並且 age 大於19記錄
SELECT * FROM cms_user
WHERE id>=2 AND id<=7 AND age>19;
-- 查詢 表cms_user 中 age 大於19或 address是
-- 廣州的記錄
SELECT * FROM cms_user
WHERE age>19 OR address='廣州';
-- 查詢 表cms_user 中 name 中包含 'o'記錄
SELECT * FROM cms_user
WHERE name LIKE '%o%';
SELECT * FROM cms_user
WHERE name LIKE '%o%';
-- 查詢 表cms_user 中 name 中第二個字母是'o'記錄
SELECT * FROM smc_user
WHERE name LIKE '_O%';
SELECT * FROM cms_user
WHERE name LIKE '_o%';
-- 查詢 表cms_user 中 name 中最後字母是'o'記錄
SELECT * FROM cms_user
WHERE name LIKE '%o';
-- 查詢 表cms_user 中 name 的值是4個字母的記錄
SELECT * FROM cms_user
WHERE name LIKE '____';
-------------------------------------------------------------------------------
-- 查詢 對 address 分組的記錄
-- 要求 :顯示 address,每組的人數,每組的最大年齡欄位
SELECT address,COUNT(*),MAX(age)
FROM cms_user
GROUP BY address;
-- 查詢 對 age 分組的記錄
-- 要求 :顯示 age,每組的人數字段
SELECT age,COUNT(*)
FROM cms_user
GROUP BY age;
-- 查詢 對 address 分組的記錄
-- 要求 :顯示 address,每組的人數,每組的最大年齡欄位
-- 要求:顯示每組人數大於等3的記錄
SELECT address,COUNT(*) AS count,MAX(age)
FROM cms_user
GROUP BY address
HAVING count>=3;
-- 查詢 2-7的記錄中對 address 分組的記錄
-- 要求 :顯示 address,每組的人數,每組的最大年齡欄位
-- 要求:顯示每組人數大於等3的記錄
SELECT address,COUNT(*) AS count,MAX(age)
FROM cms_user
WHERE id>=2 AND id<=7
GROUP BY address
HAVING count>=3
ORDER BY count DESC;
-- 查詢 cms_user 並且對編號降序顯示
SELECT * FROM cms_user
ORDER BY id DESC;
-- 查詢 cms_user 並且對年齡,id 降序顯示
SELECT * FROM cms_user
ORDER BY age DESC,id DESC;
-- 查詢 cms_user 表中前3條的記錄數
--公式:$offset=(當前頁-1)*每頁顯示記錄數
SELECT * FROM cms_user
LIMIT 0,3;
-- WHERE id<=3 準確嗎?
-- 不準確 ,如果編號不連續 必須LIMIT 0,3
-- 第一個頁 每頁顯示2條
-- $offset = (1-1)*2
SELECT * FROM cms_user
LIMIT 0,2;
-- 第二個頁 每頁顯示2條
-- $offset = (2-1)*2
SELECT * FROM cms_user
LIMIT 2,2;
-- 第三個頁 每頁顯示2條
-- $offset = (3-1)*2
SELECT * FROM cms_user
LIMIT 4,2;
-- 第四個頁 每頁顯示2條
-- $offset = (4-1)*2
SELECT * FROM cms_user
LIMIT 6,2;
-- 第五個頁 每頁顯示2條
-- $offset = (5-1)*2
SELECT * FROM cms_user
LIMIT 8,2;
-- 降序分頁:第一頁
SELECT * FROM cms_user
ORDER BY id desc
LIMIT 0,2;
-- 降序分頁:第二頁
SELECT * FROM cms_user
ORDER BY id desc
LIMIT 2,2;
-------------------------------------------------------------------------------
-- 更新 cms_user 中 address 值
-- 編號 135 值為1 編號2468 值為2
UPDATE cms_user SET address=1
WHERE id IN(1,3,5);
UPDATE cms_user SET address=2
WHERE id IN(2,4,6,8);
UPDATE cms_user SET address=3
WHERE id IN(7,9);
-- 修改 cms_user中address型別為 SMALLINT UNSIGNED NOT NULL
ALTER TABLE cms_user
MODIFY address SMALLINT
UNSIGNED NOT NULL;
-- 建立新的表 cms_prov結構
-- 欄位 id pname
CREATE TABLE cms_prov(
id SMALLINT UNSIGNED KEY AUTO_INCREMENT,
pname VARCHAR(30) NOT NULL
);
-- 給 cms_prov 新增資訊
INSERT cms_prov(pname)
VALUE
('天津'),
('廣州'),
('上海'),
('北京'),
('山東');
-- 查詢 cms_user表資訊
-- 顯示欄位 name,address
SELECT name,address FROM cms_user;
-- 查詢兩個表聯合查詢 cms_user,cms_prov
-- 欄位 cms_user 中id,name ,cms_prov中pname
-- 並排序
SELECT u.id,u.name,p.pname
FROM cms_user AS u
INNER JOIN cms_prov AS p
ON u.address = p.id
ORDER BY u.id ASC;