1.数据库的数据类型
1.1字符串
char[length]
varchar[length]
tinytext
text
mediumtext
longtext
1.2数值型
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 可以设置所存的数值永远为正,并且或扩大正数的范围。不会存储负数。
2.主键 primary key
外键 foreign key
自动增长 auto-increment
3.选择数据条件的顺序
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.使用函数
5.1文本函数
CONCAT(t1,t2,...) //创建形如括号里的新字符串
SELECT CONCAT('$', number) //不用加引号的是列名,最后创建出来的新字符串会是货币形式。
5.2 数字函数
FORMAT(n1, n2) //返回格式化一个数的n1,这个数带有n2位小数,并且每三位之间插入一个逗号
RAND() //返回0-1.0之间的一个随机数
ROUND //返回数n1,它被四舍五入位n2位小数
5.3日期和时间函数
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. 联结[JOIN]
7.1基本语法
` SELECT what_columns FROM tableA JOIN_TYPE tableB JOIN_CLAUSE `
7.2联结类型[JOIN_TYPE]
主要分为内联结[INNER JOIN]和外联结[OUTTER JOIN];
外联结又分为左联结[LEFT JOIN][常用]、右联结和全联结。
7.3内联结
SELECT m.message_id, m.subject, f.name
FROM messages AS m INNER JOIN forums AS f
ON m.forum_id = f.forum_id //跨两个表执行相等性比较,这称为等值联结(equijoin)
//在执行等值联结时,可用USING简化查询语句,上面一句话等同于
//USIGN (forum_id)
WHERE f.name = 'MySQL';
7.4外联结(左联结常用)
SELECT f.*, m.subject FROM forums AS f
LEFT JOIN messags AS m //左联结,外联结中的OUTTER常常省略
USIGN (forum_id)
7.5自联结(自己联结自己)
自联结诀窍:将用一个表的两个引用看做对两个不同表的引用。为了实现它,要为每个表的引用指定不同的别名。
如:
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联结三个或更多的表
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.分组选定结果
AVG() //返回列中所有数值的平均值
COUNT() //返回列中所有值得个数
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;