一,DML:数据操作语言
查询 | SELECT column FROM table | 唯一:DISTINCT column | 排序:ORDER BY column [ ASC / DESC ] ASC: ascend 上升 DESC: descend 下降 |
取头: MySQL:LIMIT 10 Oracle:WHERE ROWNUM <= 10 Others:TOP 10 [PERCENT] column |
插入 | INSERT INTO table (column1, column2,...) VALUES (value1, value2,....) | |||
更新 | UPDATE table SET column = value | |||
删除 | DELETE FROM table |
1,过滤数据:WHERE
WHERE column 运算符 value
运算符:
数字 | =, !=, >, <, >=, <= , [NOT] IN(1,2),[NOT]BETWEEN1AND3 |
字符 | =, !=, [NOT] LIKE, [NOT] IN('a','b'),[NOT]BETWEEN 'a'AND 'c' |
LIKE通配符:
代替一个字符 | _ |
代替一个或多个字符 | % |
字符列的任意字符 | [bcd] |
不在字符列的任意字符 | [!bcd] 或 [^bcd] |
WHERE条件组合:AND,OR
2,数据链接:表链接
WHERE 链接:FROM table1, table2 WHERE table1.column = table2.column
JOIN 链接:FROM table1 [INNER,LEFT,RIGHT,FULL]JOIN table2 ON table1.column = table2.column
INNER JOIN仅包含符合join条件的数据
LEFT JOIN额外包含所有table1的数据
RIGHT JOIN额外包含所有table2的数据
FULL JOIN包含所有table1,table2的数据
CROSS JOIN会将table1,table2进行笛卡儿集,用得很少
3,链接结果:UNION
UNION:去除重复结果;ALL UNION:不去除重复结果
SQL Statement 1UNION ALLSQL Statement 2
4,统计结果:
平均值 | AVG(column) |
最小值 | MIN(column) |
最大值 | MAX(column) |
总和 | SUM(column) |
总数 | COUNT(column) |
分组统计:GROUP BY column
由于统计结果返回的是唯一结果,因此如果在统计结果外,需要其他列的数据,必须对这些其他列进行分组,即GROUP BY
统计结果过滤:HAVING function(column) op value
对于统计结果筛选,不能再通过where,而是通过HAVING
二,DDL:数据定义语言
创建数据库 | CREATE DATABASE database_name |
创建表 | CREATE TABLE table(column1 数据类型 约束,column2 数据类型 约束,....) |
修改表 | ALTER TABLE table ADD column 数据类型/ DROP COLUMN column /ALTER COLUMN column 数据类型 |
1,数据类型
integer(size) int(size) smallint(size) tinyint(size) |
整数。size是最大位数。 |
decimal(size,d) numeric(size,d) |
小数。 size 是整数最大位数。d 是小数最大位数。 |
char(size) | 固定长度字符串。 size是字符串的长度。 |
varchar(size) | 可变长度的字符串。 size是字符串的最大长度。 |
date(yyyymmdd) | 日期 |
2,约束
非空 | NOT NULL |
唯一 | UNIQUE |
主键(非空唯一且每张表只有一个) | PRIMARY KEY |
外键(只能存入引用表中列中已有的值) | FOREIGN KEY REFERENCES table(column) |
约束 | CHECK(column>0) |
默认值 | DEFAULT 0 |
自增长 | AUTO_INCREMENT |