SQL
基础知识&术语
RDBMS关系数据库管理系统(Relational Database Management System)术语:
* **数据库**:关联表的集合 * **数据表**:数据的矩阵 * **行**(=元组、记录):一组相关的数据 * **列**(=数据元素):包含相同类型的数据 * **冗余**:存储两倍数据,会降低性能但提高数据安全性 * **主键**:唯一,一个数据表仅能包含一个主键 * **外键**:用于关联两个表 * **复合键**(=组合键):将多个列作为一个索引键,用于复合索引 * **索引**:类似书籍目录,索引是对数据库表中一列或多列的值进行排序的一种结构;利用索引快速访问数据库表中的特定信息 * **参照完整性**:要求关系中不允许引用不存在的实体;参照完整性与实体完整性是关系模型必须满足的完整性约束条件,目的是保持数据一致性
注:键的值在当前列中具有唯一性
语法
插入:INSERT INTO
1
2
3INSERT INTO [table_name] (field1, field2,...)
VALUES
(value1, value2,...);字符型的数据需要使用单引号或者双引号
查询:SELECT
1
2
3
4SELECT column_name,column_name
FROM table_name
[WHERE clause]
[LIMIT N][OFFSET M]*代替其他字段则SELECT返回表的所有字段数据;
查询可以使用一个或者多个表,表间默认使用逗号(,)分割
条件子句:WHERE
1
--WHERE condition1 [AND[OR]] condition2...
给定条件在表中没有匹配记录时查询不会返回任何数据
更新:UPDATE
1
2UPDATE table_name SET field1=new-value1, field2=new-value2
[WHERE clause]可以同时更新一个或多个字段
删除:DELETE
1
2DELETE FROM table_name
[WHERE clause]没有指定where子句则删除表中所有记录
笔记
1.查询结果去重
(1) DISTINCT:SELECT DISTINCT … from table_name;
(2) group by:SELECT … from table_name group by … ;
notes:distinct只能放查询字段最前面,不能放查询字段中间或后面;且distinct对后面所有字段均起作用,也就是说去重是查询所有字段完全重复的数据(查询多个字段,针对一个字段去重,不能使用distinct)
group by也对后面所有字段均起作用,即去重是查询所有字段完全重复的数据,不是只对group by后面连接的单个字段重复的数据(由于group by语法位置可以放在查询字段后,所以查询字段与group by后面分组的字段没有限制)
2.限制条件
OFFSET指定SELECT查询的数据偏移量,默认偏移量为0
(1) —LIMIT n:从第0+1(m=0)条开始,取n条数据,是 limit 0,n 的缩写
(2) —LIMIT m,n:从第m+1条开始,取n条数据
(3) —LIMIT n OFFSET m:从第m+1条开始,取n条数据
(4) —WHERE column_name IN (value1,value2,…)
(5) —WHERE column_name 操作符 value
3.重命名查询后的列(对列使用别名)
AS:SELECT old_column_name AS new_column_name FROM table_name