1.數(shù)據(jù)庫的數(shù)據(jù)類型
1.1字符串
char[length]
varchar[length]
tinytext
text
mediumtext
longtext
1.2數(shù)值型
tinyint[length]
smallint[length]
mediumint[length]
int[length]
bigint[length]
float[length, decimals]
double[length, decimals]
decimal[length, decimals]
1.3日期
date
datetime
timestamp
time
1.4其他
enum //枚舉值,在建表時將所有看的值枚舉,只能選中其一。如果輸入的值不是枚舉的值,將插入空字符串,索引值為0。
set //枚舉值,在建表時將所有看的值枚舉,可以是零個或者多個。
unsigned 可以設(shè)置所存的數(shù)值永遠(yuǎn)為正,并且或擴大正數(shù)的范圍。不會存儲負(fù)數(shù)。
2.主鍵 primary key
外鍵 foreign key
自動增長 auto-increment
3.選擇數(shù)據(jù)條件的順序
SELECT * FROM tb_name WHERE conditions ORDER BY col_name [DESC] LIMIT X [,Y]
4.LIKE NOT LIKE 與WHERE 比較
LIKE 查詢比較慢,因為不能夠使用索引,所以慎用。
LIKE 可以使用通配符查詢,如:
SELECT * FROM tb_name WHERE col_name LIKE 'smith%' //通配符''代表一個字符,'%'代表零個或者多個字符。
5.使用函數(shù)
5.1文本函數(shù)
CONCAT(t1,t2,...) //創(chuàng)建形如括號里的新字符串
SELECT CONCAT('$', number) //不用加引號的是列名,最后創(chuàng)建出來的新字符串會是貨幣形式。
5.2 數(shù)字函數(shù)
FORMAT(n1, n2) //返回格式化一個數(shù)的n1,這個數(shù)帶有n2位小數(shù),并且每三位之間插入一個逗號
RAND() //返回0-1.0之間的一個隨機數(shù)
ROUND //返回數(shù)n1,它被四舍五入位n2位小數(shù)
5.3日期和時間函數(shù)
NOW()
CURDATE()
CURTIME()
5.4格式化日期和時間
DATE_FORMAT(datetime, formatting)
如:
DATE_FORMAT(date, '%M %D %Y');
TIME_FORMAT()
6.外鍵約束
6.1 語法
`FOREIGN KEY (item_name) REFERENCES tb_name (col_name)`
7. 聯(lián)結(jié)[JOIN]
7.1基本語法
` SELECT what_columns FROM tableA JOIN_TYPE tableB JOIN_CLAUSE `
7.2聯(lián)結(jié)類型[JOIN_TYPE]
主要分為內(nèi)聯(lián)結(jié)[INNER JOIN]和外聯(lián)結(jié)[OUTTER JOIN];
外聯(lián)結(jié)又分為左聯(lián)結(jié)[LEFT JOIN][常用]、右聯(lián)結(jié)和全聯(lián)結(jié)。
7.3內(nèi)聯(lián)結(jié)
SELECT m.message_id, m.subject, f.name
FROM messages AS m INNER JOIN forums AS f
ON m.forum_id = f.forum_id //跨兩個表執(zhí)行相等性比較,這稱為等值聯(lián)結(jié)(equijoin)
//在執(zhí)行等值聯(lián)結(jié)時,可用USING簡化查詢語句,上面一句話等同于
//USIGN (forum_id)
WHERE f.name = 'MySQL';
7.4外聯(lián)結(jié)(左聯(lián)結(jié)常用)
SELECT f.*, m.subject FROM forums AS f
LEFT JOIN messags AS m //左聯(lián)結(jié),外聯(lián)結(jié)中的OUTTER常常省略
USIGN (forum_id)
7.5自聯(lián)結(jié)(自己聯(lián)結(jié)自己)
自聯(lián)結(jié)訣竅:將用一個表的兩個引用看做對兩個不同表的引用。為了實現(xiàn)它,要為每個表的引用指定不同的別名。
如:
SELECT m1.subject, m2.subject AS Reply
FROM messages AS m1
LEFT JOIN messages AS m2
ON m1.message_id=m2.parent_id
WHERE m1.parent_id=0
7.6聯(lián)結(jié)三個或更多的表
SELECT u.username, m.subject, f.name
FROM users AS u
INNER JOIN messages AS m
USIGN (user_id)
INNER JOIN forums AS f
USIGN (forum_id)
WHERE conditions
ORDER BY col_name
LIMIT X;
8.分組選定結(jié)果
AVG() //返回列中所有數(shù)值的平均值
COUNT() //返回列中所有值得個數(shù)
GROUP BY col_name //按。。。分組
如:
SELECT SUM(balance) AS Total,
COUNT(account_id) AS Numberm, customer_id
FROM accounts
GROUP BY (customer_id)
ORDER BY col_name;