《MySQL系列(一)——基礎(chǔ)知識(shí)大總結(jié)》要點(diǎn):
本文介紹了MySQL系列(一)——基礎(chǔ)知識(shí)大總結(jié),希望對(duì)您有用。如果有疑問(wèn),可以聯(lián)系我們。
前言:本文主要為mysql基礎(chǔ)知識(shí)的大總結(jié),mysql的基礎(chǔ)知識(shí)很多,這里只是作為簡(jiǎn)單的介紹,但是具體的細(xì)節(jié)還是需要自行搜索.當(dāng)然本文還有很多遺漏的地方,后續(xù)會(huì)慢慢補(bǔ)充完善.
數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)軟件
數(shù)據(jù)庫(kù)是保存有組織數(shù)據(jù)的容器
DBMS是為管理數(shù)據(jù)庫(kù)而設(shè)計(jì)的軟件管理系統(tǒng),MYSQL、ORACLE 等是數(shù)據(jù)庫(kù)管理系統(tǒng)
MYSQL
MYSQL是一種數(shù)據(jù)庫(kù)管理軟件
開(kāi)放源碼,免費(fèi)使用
MYSQL命令
CREATE DATABASE NAME 創(chuàng)建數(shù)據(jù)庫(kù)
USE DATABASE 選擇數(shù)據(jù)庫(kù)
DROP DATABASE NAME 直接刪除數(shù)據(jù)庫(kù)
SHOW DATABASE 顯示可用數(shù)據(jù)庫(kù)列表
SHOW TABLE 顯示數(shù)據(jù)庫(kù)中的表的列表
SHOW COLUMNS FROM TABLE 與 DESCRIBE TABLE 等效,顯示表的字段信息
SHOW GRANTS 顯示授予用戶(hù)的安全權(quán)限
SHOW ERRORS SHOW WARNINGS 顯示服務(wù)器錯(cuò)誤和警告信息
SQL
STRUCTURED QUERY LANGUAGE 結(jié)構(gòu)化查詢(xún)語(yǔ)言,一種專(zhuān)門(mén)用于與數(shù)據(jù)庫(kù)通信的語(yǔ)言
不是DBMS專(zhuān)有的語(yǔ)言,很多DBMS都支持SQL,但是不同DBMS對(duì)SQL的實(shí)現(xiàn)不同
DBMS支持的SQL語(yǔ)法不能完全適用于其他DBMS
SQL語(yǔ)句不區(qū)分大小寫(xiě)
多條語(yǔ)句需要分號(hào)分隔,單條語(yǔ)句可以不用分號(hào)
通常SQL語(yǔ)句用大寫(xiě),標(biāo)識(shí)符(比如表名 列名 數(shù)據(jù)庫(kù)名)用小寫(xiě)
創(chuàng)建表
CREATE TABLE user (id INT NOT NULL AUTO_INCREMENT, username VARCHAR(50) NOT NULL,password VARCHAR (50) NOT NULL DEFAULT 1,PRIMARY KEY(id)) ENGINE =INNODB
檢索列
SELECT username FROM user
SELECT username,password FROM user
SELECT * FROM user 建議不是要所有的列,不用'*',要不然這種操作是很耗性能的
SELECT DISTINCT username FROM user 只返回不同的username,比如有兩行用戶(hù)名是一樣的,只顯示一行記錄
限制結(jié)果
SELECT * FROM TABLE LIMIT 5 檢索前五行
SELECT * FROM TABLE LIMIT 5,5 檢索6到10
SELECT * FROM TABLE LIMIT 5,-1 檢索6到最后一行
結(jié)果排序
SELECT * FROM user ORDER BY username,以u(píng)sername的字母順序排列
SELECT * FROM user ORDER BY username,password ,如果username有相同的,那么username相同的再按password排列,如果username都是唯一,這個(gè)時(shí)候password不起作用
SELECT * FROM user ORDER BY username DESC ,降序排列,默認(rèn)是升序ASC
SELECT * FROM user e ORDER BY username DESC,password 此時(shí)按照username降序排列,如果username相同的行按照password升序排列
SELECT * FROM user ORDER BY username LIMIT 1 混合使用ORDER 和 LIMIT
SELECT * FROM user WHERE username ='jiajun' ORDER BY password 這里ORDER要在WHERE 之后
過(guò)濾數(shù)據(jù)
SELECT * FROM user WHERE username <> 'jiajun' 不等于 和 != 效果相同
SELECT * FROM user WHERE id BETWEEN 1 AND 10 檢索1到10的記錄,包括1和10
SELECT * FROM user WHERE username IS NULL 查找列無(wú)值的行,這里的無(wú)值不等于 值為0 和 空字符串
SELECT * FROM user WHERE id=1 OR username='jiajun' AND password='666' 執(zhí)行順序是 WHERE id=1 OR (username='jiajun' AND password='666')AND的優(yōu)先級(jí)更高,但是建議添加括號(hào)
SELECT * FROM user WHERE id IN (1,2) 效果和SELECT * FROM user WHERE id=1 OR id =2 如果要實(shí)現(xiàn)這種效果,建議使用第一種,語(yǔ)法更清晰,而且一般執(zhí)行更快
SELECT * FROM user WHERE id NOT IN (1,2)
通配符過(guò)濾
SELECT * FROM user WHERE username LIKE 'jia%' ,匹配JIA開(kāi)頭的username,不管后面有多少字符,jia和jiajun都是匹配,可以配置MYSQL是否區(qū)份大小寫(xiě),如果區(qū)份大小寫(xiě),也就是jiajun是不匹配的 .注意LIKE '%'是不能匹配值為NULL的
SELECT * FROM user WHERE username LIKE 'jia_' , _只能匹配一個(gè)字符,也就是匹配jiaj不匹配jiajun
通配符匹配是效率不高,如果其他方式能有相同的效果,建議用其他效果,并且最好不要將通配符放在開(kāi)始處,因?yàn)檫@樣是很慢的
正則表達(dá)式過(guò)濾
SELECT * FROM user WHERE username REGEXP '.IA' ,正則表達(dá)式, . 匹配任意一個(gè)字符
SELECT * FROM user WHERE username REGEXP 'jun' 匹配包含jun的username,'jiajun'和'jun'都匹配
SELECT * FROM user WHERE username REGEXP 'jiajun|jiaj' ,'|'和'OR' 效果一樣
SELECT * FROM user WHERE username REGEXP ‘[123]jun’ ,匹配包含'1jun'或者'2jun'或者'3jun'
[^123]123除外
[1-9],[A-Z],用'-'表示范圍
匹配特殊字符(比如'.'和'_')可以采用'\'轉(zhuǎn)義,比如匹配有'.'的可以這樣表示'\.'
拼接字段
SELECT CONCAT(username,'C',password,')') FROM user,將兩個(gè)字段拼接到一起,查詢(xún)結(jié)果是一列,行值 jiajun(666)
SELECT CONCAT(username,'C',password,')') AS up FROM user,為拼接后的一列設(shè)置字段名
算數(shù)運(yùn)算
SELECT price*count AS all FROM TABLE 將單價(jià)和數(shù)量相乘,列名為all
函數(shù)
函數(shù)可移植性不高,也就是一個(gè)函數(shù)支持一個(gè)DBMS,但不一定支持另一個(gè)DBMS,比如支持MYSQL而不支持ORACLE.所以使用函數(shù)的要寫(xiě)好注釋.
文本處理函數(shù)
LENGTH() 返回串長(zhǎng)度
LOWER()將串轉(zhuǎn)換為小寫(xiě)
UPPER()將串轉(zhuǎn)換為大寫(xiě)
LTRIM()去掉串左邊的空格
RTRIM()去掉串右邊的空格
日期和時(shí)間處理函數(shù)
CURDATE() 2017-07-22
CURTIME()16:20:19
NOW() 2017-07-22 16:20:19
DATE() 返回日期的日期部分 SELECT DATE(NOW()) 2017-07-22
DATE_FORMAT() 返回格式化的日期和時(shí)間串
HOUR() 返回一個(gè)時(shí)間的小時(shí)部分
MINUTE() 返回一個(gè)時(shí)間的分鐘部分
MONTH() 返回一個(gè)日期的月份部分
NOW() 返回當(dāng)前日期和時(shí)間
SECOND() 返回一個(gè)時(shí)間的秒部分
TIME() 返回一個(gè)日期時(shí)間的時(shí)間部分
YEAR() 返回一個(gè)日期的年份部分
文章來(lái)自博客園
“勤工儉學(xué)計(jì)劃”,給你一個(gè)真正0元學(xué)習(xí)IT技術(shù)的機(jī)會(huì)!
http://www.ujiuye.com/zt/qgjx/?wt.bd=fq37300j
找工作太難?不是你不行,我們來(lái)幫你!
http://www.ujiuye.com/zt/jyfc/?wt.bd=fq37300j
交流群:345648424
維易PHP培訓(xùn)學(xué)院每天發(fā)布《MySQL系列(一)——基礎(chǔ)知識(shí)大總結(jié)》等實(shí)戰(zhàn)技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養(yǎng)人才。
轉(zhuǎn)載請(qǐng)注明本頁(yè)網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/7120.html