記錄操作
添加記錄
- INSERT [INTO] tbl_name[(col_name,...)] {VALUE|VALUES}(VALUES...);
- 不指定字段名稱 INSERT tbl_name VALUE(value...) 需要按照建表時(shí)的字段順序給每一個(gè)字段賦值
- 一次插入多條記錄 INSERT tbl_name[(字段名稱,...)] VALUES(值,...),(值,....),(值,...)0
- INSERT ... SET的形式 INSERT tbl_name SET 字段名稱=值,...;
- INSERT ... SELECT INSERT tbl_name[(字段名稱...)] SELECT 字段名稱,... FROM tbl_name [WHERE 條件]
修改記錄
- UPDATE tbl_name SET 字段名稱 = 值 ,字段名稱 = 值[WHERE條件] 如果不添加條件盒粮,整個(gè)表中的記錄都會(huì)被更新
刪除記錄
- DELETE FROM tbl_name[WHERE 條件] 如果不添加條件凡蜻,所有記錄都被刪除
- DELETE 清空數(shù)據(jù)表時(shí)不會(huì)重置AUTO_INCREMENT的值尔觉,可以通過(guò)ALTER語(yǔ)句將其設(shè)置為1 ALTER TABLE tbl_name AUTO_INCREMENT = 1;
- 徹底清空數(shù)據(jù)表 TRUNCATE [TABLE] tbl_name
1埂息、清楚表中所有記錄
2肮塞、重置AUTO_INCREMENT的值
查詢記錄
SELECT select_expr,... FROM tbl_name
[WHERE 條件]
[GROUP BY{col_name|position} HAVING 二次篩選]
[ORDER BY{col_name|postion|expr}[ASC|DESC]]
[LIMIT 限制結(jié)果集顯示條數(shù)]
- 數(shù)據(jù)庫(kù)名.表名查詢 select * from mysql.user;
- 給字段起別名 SELECT 字段名稱 [AS] 別名名稱,... FROM db_name.tbl_name;
- 給數(shù)據(jù)表起別名 SELECT 字段名稱 ,... FROM tbl_name [AS] 別名;
WHERE條件篩選記錄
- NULL 查詢要使用<=>或者IS NULL SELECT * FROM user where userDesc<=>NULL;
- 指定范圍 [NOT]BETWEEN AND
- 指定集合 [NOT] IN(值,...)
- 邏輯運(yùn)算符 AND 邏輯與 OR 邏輯或
- 匹配字符 [NOT]LIKE 一般和通配符一起使用
1逾一、% 任意長(zhǎng)度的字符串
2几蜻、_ 任意一個(gè)字符
-- 用戶名長(zhǎng)度為三位的用戶(三個(gè)下劃線)
SELECT * FROM user WHERE username like '___';
GROUP BY 分組
- 把值相同放到一個(gè)組中喇潘,最終查詢出的結(jié)果只會(huì)顯示組中的一條記錄
- 分組配合GROUP_CONCAT()查看組中的某個(gè)字段的詳細(xì)信息
-- 按性別分組,查看組中的用戶名有哪些
SELECT GROUP_CONCAT(username),sex FROM user1
GROUP BY sex;
- 配合聚合函數(shù)使用
1梭稚、COUNT() 其中COUNT(*)統(tǒng)計(jì)時(shí)候包括NULL COUNT(id) 統(tǒng)計(jì)時(shí)候不包括NULL的條數(shù)
2颖低、SUM()
3、MAX()
4弧烤、MIN()
5枫甲、AVG() - 配合WITH ROLLUP關(guān)鍵字使用 顯示總信息
- HAVING子句對(duì)分組結(jié)果進(jìn)行二次篩選
-- 測(cè)試查詢操作
CREATE TABLE user1(
id INT UNSIGNED AUTO_INCREMENT KEY,
username VARCHAR(20) NOT NULL UNIQUE COMMENT '編號(hào)',
age TINYINT UNSIGNED NOT NULL DEFAULT 18 COMMENT '年齡',
sex ENUM('男','女','保密') NOT NULL DEFAULT '保密' COMMENT '性別',
addr VARCHAR(20) NOT NULL DEFAULT '北京',
married TINYINT(1) NOT NULL DEFAULT 0 COMMENT '0代表未結(jié)婚,1代表已婚',
salary FLOAT(8,2) NOT NULL DEFAULT 0 COMMENT '薪水'
)ENGINE=INNODB CHARSET=UTF8;
INSERT user1 VALUES(1,'king',23,'男','北京',1,50000);
INSERT user1(username,age,sex,addr,married,salary) VALUES('queen',27,'女','上海',0,25000);
INSERT user1 SET username='imooc',age=31,sex='女',addr='北京',salary=40000;
INSERT user1 VALUES(NULL,'張三',38,'男','上海',0,15000),
(NULL,'張三風(fēng)',38,'男','上海',0,15000),
(NULL,'張子怡',39,'女','北京',1,85000),
(NULL,'汪峰',42,'男','深圳',1,95000),
(NULL,'劉德華',58,'男','廣州',0,115000),
(NULL,'吳亦凡',28,'男','北京',0,75000),
(NULL,'奶茶妹',18,'女','北京',1,65000),
(NULL,'劉嘉玲',36,'女','廣州',0,15000);
-- GROUP BY
SELECT * FROM user1 GROUP BY sex;
-- 按性別分組扼褪,查看組中的用戶名有哪些
SELECT GROUP_CONCAT(username),sex FROM user1
GROUP BY sex;
-- 按照sex分組,得到用戶名詳情粱栖,并且顯示分組中的總?cè)藬?shù)
SELECT sex,GROUP_CONCAT(username),count(*) AS totalUsers FROM user1 GROUP BY sex;
-- 按照addr分組话浇,得到用戶名的詳情,總?cè)藬?shù)闹究,得到組中年齡的總和幔崖,年齡最大值、最小值渣淤、平均值
SELECT addr,
GROUP_CONCAT(username) AS userDetail,
COUNT(*) AS totalUser,
SUM(age),
MAX(age),
MIN(age),
AVG(age)
FROM user1
GROUP BY addr;
-- WITH ROLLUP后面跟總條數(shù)
SELECT GROUP_CONCAT(username),
COUNT(*)
FROM user1
GROUP BY sex
WITH ROLLUP;
-- 按照字段位置進(jìn)行分組
SELECT addr,
GROUP_CONCAT(username) AS userDetail,
COUNT(*) AS totalUser,
SUM(age),
MAX(age),
MIN(age),
AVG(age)
FROM user1
GROUP BY 1;
-- 按照addr分組赏寇,統(tǒng)計(jì)總?cè)藬?shù)
SELECT COUNT(*),addr,
GROUP_CONCAT(username)
FROM user1
GROUP BY addr;
-- 對(duì)于分組結(jié)果進(jìn)行二次篩選,條件是組中總?cè)藬?shù)>=3
SELECT COUNT(*),addr,
GROUP_CONCAT(username)
FROM user1
GROUP BY addr
HAVING COUNT(*) >=3;
ORDER BY 實(shí)現(xiàn)排序效果
-- 按照多個(gè)字段排序
SELECT id,username,age
FROM user1
ORDER BY age ASC, id ASC;
-- 實(shí)現(xiàn)隨機(jī)記錄
SELECT id,username,age
FROM user1
ORDER BY RAND();
LIMIT限制結(jié)果集的顯示條數(shù)
- LIMIT 值 :顯示結(jié)果集的前幾條記錄
- LIMIT offset,row_count 從offset開(kāi)始价认,顯示幾條記錄
-- 顯示前3條記錄
SELECT id,username,age
FROM user1
LIMIT 0,3;
-- 顯示接下來(lái)的3條
SELECT id,username,age
FROM user1
LIMIT 3,3;
高級(jí)操作
多表聯(lián)查
- 笛卡爾積的形式
- 內(nèi)連接的形式
SELECT 字段名稱,... FROM tbl_name1
INNER JOIN tbl_name2
ON 連接條件 - 外連接的形式
1嗅定、左外連接:先顯示左表中的全部記錄,再去右表中查詢復(fù)合條件的記錄用踩,不符合的以NULL代替
SELECT 字段名稱,... FROM tbl_name1
LEFT [OUTER] JOIN tbl_name2
ON 條件;
2渠退、右外連接:先顯示右表中的全部記錄,再去左表中查詢復(fù)合條件的記錄脐彩,不符合的以NULL代替
SELECT 字段名稱,... FROM tbl_name1
RIGHT [OUTER] JOIN tbl_name2
ON 條件;
CREATE DATABASE IF NOT EXISTS test2 DEFAULT CHARACTER SET 'UTF8';
USE test2;
CREATE TABLE emp(
id INT UNSIGNED AUTO_INCREMENT KEY,
username VARCHAR(20) NOT NULL UNIQUE COMMENT '編號(hào)',
age TINYINT UNSIGNED NOT NULL DEFAULT 18 COMMENT '年齡',
sex ENUM('男','女','保密') NOT NULL DEFAULT '保密' COMMENT '性別',
addr VARCHAR(20) NOT NULL DEFAULT '北京',
depId TINYINT UNSIGNED NOT NULL COMMENT '部門(mén)對(duì)應(yīng)的編號(hào)'
)ENGINE=INNODB CHARSET=UTF8;
INSERT emp(username,age,depId) VALUES('king',24,1),
('queen',25,2),
('imooc',26,1),
('lily',27,1),
('rose',28,3),
('john',29,3);
INSERT emp(username,age,depId) VALUES('測(cè)試用戶',39,6);
CREATE TABLE dep(
id TINYINT UNSIGNED AUTO_INCREMENT KEY,
depName VARCHAR(50) NOT NULL UNIQUE,
depDesc VARCHAR(100) NOT NULL DEFAULT ''
)ENGINE=INNODB CHARSET=UTF8;
INSERT dep(depName,depDesc) VALUES('PHP教學(xué)部','研發(fā)PHP課件'),
('JAVA教學(xué)部','研發(fā)JAVA課件'),
('WEB前端教學(xué)部','研發(fā)WEB前端課件'),
('IOS教學(xué)部','研發(fā)IOS課件');
-- 查詢 emp id username age 部門(mén)名稱 dep depName
SELECT emp.id,emp.username,emp.age,dep.depName FROM emp,dep;
SELECT e.id,e.username,e.age,d.depName
FROM emp AS e
INNER JOIN dep AS d
ON e.depId=d.id;
-- 查詢emp id username age addr dep id depName depDesc
SELECT e.id,e.username,e.age,e.addr,
d.id,d.depName,d.depDesc
FROM dep AS d
JOIN emp AS e
ON d.id=e.depId;
-- 測(cè)試左外連接
SELECT e.id,e.username,e.age,d.depName,d.depDesc
FROM emp AS e
LEFT OUTER JOIN dep AS d
ON e.depId=d.id;
-- 測(cè)試右外連接
SELECT e.id,e.username,e.age,d.depName,d.depDesc
FROM emp AS e
RIGHT JOIN dep AS d
ON e.depId=d.id;
外鍵約束的使用
- 只有innodb存儲(chǔ)引擎支持外鍵
- [CONSTRAINT 外鍵名稱 ]FOREIGN KEY(字段名稱) REFERENCES 主表(字段名稱)
- 子表的外鍵字段和主表的主鍵字段類型要相似碎乃;如果是數(shù)值型要求一致,并且無(wú)符號(hào)也要一致惠奸;如果是字符型梅誓,要求類型一致,長(zhǎng)度可以不同
- 如果外鍵字段沒(méi)有創(chuàng)建索引,MySQL會(huì)自動(dòng)幫我們添加索引
- 子表的外鍵關(guān)聯(lián)的必須是父表的主鍵
- 外鍵約束的參照操作
1梗掰、CASCADE 從父表刪除或更新嵌言,子表也跟著刪除或者更新,級(jí)聯(lián)的操作
2愧怜、SET NULL 從父表刪除或者更新記錄呀页,并設(shè)置子表的外鍵列為NULL。
3拥坛、NO ACTION | RESTRICT 拒絕對(duì)父表做更新或者刪除操作
-- 指定級(jí)聯(lián)操作 DELETE CASCADE UPDATE CASCADE 更新父表相關(guān)子表也會(huì)更新
ALTER TABLE news
ADD FOREIGN KEY(cateId) REFERENCES news_cate(id)
ON DELETE CASCADE ON UPDATE CASCADE;
-- 添加外鍵名稱
-- 新聞分類表 news_cate
CREATE TABLE news_cate(
id TINYINT UNSIGNED AUTO_INCREMENT KEY,
cateName VARCHAR(50) NOT NULL UNIQUE,
cateDesc VARCHAR(100) NOT NULL DEFAULT ''
)ENGINE=INNODB;
-- 新聞表 news
CREATE TABLE news(
id INT UNSIGNED AUTO_INCREMENT KEY,
title VARCHAR(100) NOT NULL UNIQUE,
content VARCHAR(1000) NOT NULL,
cateId TINYINT UNSIGNED NOT NULL,
FOREIGN KEY(cateId) REFERENCES news_cate(id)
)ENGINE=INNODB;
-- SHOW CREATE TABEL news,自動(dòng)創(chuàng)建了cateId的索引
| news | CREATE TABLE `news` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(100) NOT NULL,
`content` varchar(1000) NOT NULL,
`cateId` tinyint(3) unsigned NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `title` (`title`),
KEY `cateId` (`cateId`),
CONSTRAINT `news_ibfk_1` FOREIGN KEY (`cateId`) REFERENCES `news_cate` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
-- 測(cè)試cateID外鍵對(duì)應(yīng)的id不存在蓬蝶,是否可以插入
INSERT INTO news(title,content,cateId) VALUES('A6','SSAW33',45);
-- 測(cè)試刪除父表中的記錄,和刪除父表
DELETE FROM news_cate WHERE id =1;
動(dòng)態(tài)創(chuàng)建和刪除外鍵
-- 動(dòng)態(tài)刪除外鍵 ALTER TABLE tbl_name DROP FOREIGN KEY fk_name;
-- 動(dòng)態(tài)添加外鍵
1猜惋、 ALTER TABLE tbl_name
[CONSTRAINT 外鍵名稱] ADD FOREIGN KEY(外鍵字段) REFERENCES 主表(主鍵字段);
2丸氛、動(dòng)態(tài)添加外鍵之前表中的記錄一定合法的記錄,沒(méi)有臟值著摔,否則外鍵添加不成功
-- 動(dòng)態(tài)刪除外鍵,刪除了外鍵缓窜,當(dāng)初創(chuàng)建外鍵自動(dòng)產(chǎn)生的索引還在
ALTER TABLE news
DROP FOREIGN KEY news_ibfk_1;
-- 添加外鍵
ALTER TABLE news
ADD FOREIGN KEY (cateId) REFERENCES news_cate(id);
子查詢
- SELECT 字段名稱 FROM tbl_name WHERE col_name=(SELECT col_name FROM tbl_name)
- 內(nèi)層語(yǔ)句查詢的結(jié)果可以做為外層語(yǔ)句查詢的條件
- 由IN引發(fā)的子查詢
- 由比較運(yùn)算符引出的子查詢
- 由EXISTS引發(fā)的子查詢
- 復(fù)制表CREATE TABLE tbl_name LIKE tbl_name;
-- 測(cè)試子查詢
-- 測(cè)試由IN引發(fā)的子查詢
SELECT * FROM emp where depId IN(SELECT id from dep);
SELECT * FROM emp where depId NOT IN(SELECT id from dep);
-- 學(xué)員stu
CREATE TABLE stu(
id TINYINT UNSIGNED AUTO_INCREMENT KEY,
username VARCHAR(20) NOT NULL UNIQUE,
score TINYINT UNSIGNED NOT NULL
);
INSERT stu(username,score) VALUES('king',95),
('queen',75),
('zhangsan',69),
('lisi',78),
('wangwu',87),
('zhaoliu',88),
('tianqi',98),
('ceshi',99),
('tiancai',50);
-- 分?jǐn)?shù)級(jí)別level
CREATE TABLE level(
id tinyint UNSIGNED AUTO_INCREMENT KEY,
score TINYINT UNSIGNED COMMENT '分?jǐn)?shù)'
);
INSERT level(score) VALUES(90),(80),(70);
-- 由比較運(yùn)算符引出的子查詢
-- 查詢出成績(jī)優(yōu)秀的學(xué)員
SELECT * FROM stu WHERE score >= (SELECT score FROM level where id =1);
-- 由EXISTS引發(fā)的子查詢
SELECT * FROM emp WHERE EXISTS(SELECT depName FROM dep WHERE id = 10);
-
ANY SOME ALL
圖片.png
-- 帶有ANY SOME ALL關(guān)鍵字的子查詢
SELECT * FROM stu
WHERE score >= ANY(SELECT score FROM level);
SELECT * FROM stu
WHERE score >= SOME(SELECT score FROM level);
SELECT * FROM stu
WHERE score >= ALL(SELECT score FROM level);
聯(lián)合查詢的使用
- UNION 重復(fù)部分會(huì)合并到一起
SELECT 字段名稱,... FROM tbl_name1
UNION
SELECT 字段名稱... FROM tbl_name2; - UNION ALL 簡(jiǎn)單的合并兩張表的所有數(shù)據(jù)
SELECT 字段名稱,... FROM tbl_name1
UNION ALL
SELECT 字段名稱... FROM tbl_name2;
-- 創(chuàng)建一個(gè)user1表,id username
CREATE TABLE user1(
id INT UNSIGNED AUTO_INCREMENT KEY,
username VARCHAR(20)
)SELECT id,username FROM emp;
-- 將user表中的用戶名寫(xiě)入到user1表中
INSERT user1(username) SELECT username FROM user;
-- 去掉字段重復(fù)值
SELECT DISTINCT(username) FROM user2;
無(wú)限級(jí)分類數(shù)據(jù)表的設(shè)計(jì)與實(shí)現(xiàn)
自身連接查詢
-- 測(cè)試自身連接
CREATE TABLE cate(
id SMALLINT UNSIGNED AUTO_INCREMENT KEY,
cateName VARCHAR(100) NOT NULL UNIQUE,
pId SMALLINT UNSIGNED NOT NULL DEFAULT 0
);
INSERT cate(cateName,pId) VALUES('服裝',0);
INSERT cate(cateName,pId) VALUES('數(shù)碼',0);
INSERT cate(cateName,pId) VALUES('箱包',0);
INSERT cate(cateName,pId) VALUES('男裝',1);
INSERT cate(cateName,pId) VALUES('女裝',1);
INSERT cate(cateName,pId) VALUES('內(nèi)衣',1);
INSERT cate(cateName,pId) VALUES('電視',2);
INSERT cate(cateName,pId) VALUES('冰箱',2);
INSERT cate(cateName,pId) VALUES('洗衣機(jī)',2);
INSERT cate(cateName,pId) VALUES('愛(ài)馬仕',3);
INSERT cate(cateName,pId) VALUES('LV',3);
INSERT cate(cateName,pId) VALUES('GUCCI',3);
INSERT cate(cateName,pId) VALUES('夾克',4);
INSERT cate(cateName,pId) VALUES('襯衫',4);
INSERT cate(cateName,pId) VALUES('褲子',4);
INSERT cate(cateName,pId) VALUES('液晶電視',10);
INSERT cate(cateName,pId) VALUES('等離子電視',10);
INSERT cate(cateName,pId) VALUES('背投電視',10);
-- 查詢所有的分類信息谍咆,并且得到其父分類
SELECT s.id ,s.cateName AS sCateName,p.cateName AS pCateName
FROM cate AS s
LEFT JOIN cate AS p
ON s.pId = p.id;
-- 查詢所有分類及其子分類
SELECT p.id ,p.cateName AS pCateName,s.cateName AS sCateName
FROM cate AS s
LEFT JOIN cate AS p
ON s.pId = p.id;
sCate 表
id | cateName | pId |
+----+-----------------+-----+
| 1 | 服裝 | 0 |
| 2 | 數(shù)碼 | 0 |
| 3 | 玩具 | 0 |
| 4 | 男裝 | 1 |
| 5 | 女裝 | 1 |
| 6 | 內(nèi)衣 | 1 |
| 10 | 電視 | 2 |
| 11 | 冰箱 | 2 |
| 12 | 洗衣機(jī) | 2 |
| 13 | 愛(ài)馬仕 | 3 |
| 14 | LV | 3 |
| 15 | GUCCI | 3 |
| 16 | 夾克 | 4 |
| 17 | 襯衫 | 4 |
| 18 | 褲子 | 4 |
| 19 | 液晶電視 | 10 |
| 20 | 等離子電視 | 10 |
| 21 | 背投電視 | 10
pCate
id | cateName | pId |
+----+-----------------+-----+
| 1 | 服裝 | 0 |
| 2 | 數(shù)碼 | 0 |
| 3 | 玩具 | 0 |
| 4 | 男裝 | 1 |
| 5 | 女裝 | 1 |
| 6 | 內(nèi)衣 | 1 |
| 10 | 電視 | 2 |
| 11 | 冰箱 | 2 |
| 12 | 洗衣機(jī) | 2 |
| 13 | 愛(ài)馬仕 | 3 |
| 14 | LV | 3 |
| 15 | GUCCI | 3 |
| 16 | 夾克 | 4 |
| 17 | 襯衫 | 4 |
| 18 | 褲子 | 4 |
| 19 | 液晶電視 | 10 |
| 20 | 等離子電視 | 10 |
| 21 | 背投電視 | 10
MySQL常用函數(shù)
數(shù)學(xué)函數(shù)的使用
- CEIL() 進(jìn)一取整
- FLOOR() 舍掉小數(shù)部分
- ROUND() 四舍五入
- TRUNCATE() 截取小數(shù)點(diǎn)后幾位
- MOD() 取余數(shù)
- ABS() 取絕對(duì)值
- POWER() 冪運(yùn)算
- PI() 圓周率
- RAND()或者RAND(X) 0~1之間的隨機(jī)數(shù)
- SIGN(X) 得到數(shù)字符號(hào)
- EXP(X) 計(jì)算e的x次方
字符串函數(shù)
- CHAR_LENGTH(); 得到字符串的字符數(shù)
- LENGTH(); 得到字符串的長(zhǎng)度
- CONCAT(s1,s2,....); 將字符串合并為一個(gè)字符串,包含null返回結(jié)果就是null
- CONCAT_WS(x,s1,s2,....); 以指定分隔符拼接字符串
- REVERSE() 字符串反轉(zhuǎn)
- LEFT()|RIGHT(); 返回字符串的前幾個(gè)字符或者后幾個(gè)字符
- LPAD()|RPAD();用字符串填充到指定長(zhǎng)度
- TRIM()|LTRIM()|RTRIM() 去掉字符串兩端的空格
- REPEAT():重復(fù)指定的次數(shù)
- REPLACE():字符串
- SUBSTRING();截取字符串SUBSTRING 起始位置從1開(kāi)始
- STRCMP();比較字符串禾锤,按照ASCII
-- 測(cè)試字符串函數(shù)
-- CHAR_LENGTH(); 得到字符串的字符數(shù)
SELECT CHAR_LENGTH('SAHHIA');
-- 以下漢字顯示3個(gè)字符
SELECT CHAR_LENGTH('你好啊');
-- LENGTH(); 得到字符串的長(zhǎng)度,一個(gè)中文在utf-8占3位
SELECT LENGTH('你好啊');
-- CONCAT(s1,s2,....); 將字符串合并為一個(gè)字符串
SELECT CONCAT('A','B','C');
-- 有null的情況結(jié)果就為null
SELECT CONCAT('A','B','C',null);
-- CONCAT_WS(x,s1,s2,....); 以指定分隔符拼接字符串
SELECT CONCAT_WS('-','A','B','C');
SELECT CONCAT_WS('-','A','B','C',NULL);
SELECT CONCAT_WS(NULL,'A','B','C');
-- REVERSE() 字符串反轉(zhuǎn)
SELECT REVERSE('ABCDEFG');
-- LEFT()|RIGHT(); 返回字符串的前幾個(gè)字符或者后幾個(gè)字符
SELECT LEFT('HELLO',2),RIGHT('HELLO',2);
-- LPAD()|RPAD();用字符串填充到指定長(zhǎng)度
SELECT LPAD('ABC',10,'?');
SELECT RPAD('ABC',10,'!');
-- 去掉字符串兩端的空格TRIM()|LTRIM()|RTRIM():
SELECT CONCAT('*',TRIM(' abc '),'*'),CONCAT('*',LTRIM(' abc '),'*'),CONCAT('*',RTRIM(' abc '),'*');
-- REPEAT():重復(fù)指定的次數(shù)
SELECT REPEAT('HELLO',4);
-- REPLACE():字符串
SELECT REPLACE('HELLO KING','KING','QUEEN');
-- SUBSTRING();截取字符串SUBSTRING 從1開(kāi)始截取
SELECT SUBSTRING('ABCDEF',1,4);
-- STRCMP();比較字符串
SELECT STRCMP('A','B');
日期時(shí)間常用函數(shù)
- 返回當(dāng)前日期
SELECT CURDATE() ,CURRENT_DATE(); - 返回當(dāng)前時(shí)間
SELECT CURTIME(),CURRENT_TIME(); - 返回當(dāng)前日期時(shí)間
SELECT NOW(),CURRENT_TIMESTAMP(),SYSDATE(); - 返回月份摹察、月份名稱
SELECT MONTH(CURDATE()),MONTHNAME(CURDATE()); - 返回星期幾
SELECT DAYNAME(NOW()); - 返回一周內(nèi)的第幾天
SELECT DAYOFWEEK(NOW()); - 返回一年內(nèi)的第多少個(gè)星期
SELECT WEEK(NOW()); - 返回年月日恩掷、小時(shí)、分鐘供嚎、秒
SELECT YEAR(NOW()),MONTH(NOW()),DAY(NOW()),HOUR(NOW()),MINUTE(NOW()),SECOND(NOW()); - DATEDIFF()計(jì)算兩個(gè)日期相差的天數(shù)
SELECT DATEDIFF('2018-10-06','2018-03-02');
其他常用函數(shù)
- 返回?cái)?shù)據(jù)庫(kù)版本
SELECT VERSION(); - 返回連接數(shù)
SELECT CONNECTION_ID(); - 返回當(dāng)前連接的數(shù)據(jù)庫(kù)
SELECT DATABASE(); - 返回當(dāng)前用戶
SELECT USER(),CURRENT_USER(),SYSTEM_USER(),SESSION_USER(); -
得到上一步插入產(chǎn)生AUTO_INCREMENT的值
SELECT LAST_INSERT_ID(); -
MD5加密
SELECT MD5('king'); - password密碼加密算法
SELECT PASSWORD('root');