SQL
SQL是结构化查询语言的缩写,用来访问和操作数据库系统
DDL:Data Definition Language
DDL允许用户定义数据,也就是创建表、删除表、修改表结构这些操作。通常,DDL由数据库管理员执行。
DML:Data Manipulation Language
DML为用户提供添加、删除、更新数据的能力,这些是应用程序对数据库的日常操作。
DQL:Data Query Language
DQL允许用户查询数据,这也是通常最频繁的数据库日常操作。
主键
主键的一个基本原则是:不使用任何业务相关的字段作为主键。因为这个值可能会发生变化。
最好它就是一个id
比如 1 2 3 4 5 或者 8f55d96b-8acc-4636-8cb8-76bf8abc2f57 这种唯一标识
外键
通过某个字段 把数据和另一张表关联起来 称为外键
ALTER TABLE students
ADD CONSTRAINT fk_class_id
FOREIGN KEY (class_id)
REFERENCES classes (id);
上面的语句中 FOREIGN KEY (class id)
制定了class_id
作为外键 并且这个外键将关联到calsses
表的id列
查询
基本查询
SELECT * FROM <表名>
SELECT是关键字 *表示所有列 FROM表示从哪个表查询
条件查询
SELECT * FROM students WHERE score >= 80;
WHERE表示条件
SELECT * FROM <表名> WHERE <条件表达式>
条件可以是多个 也可以有 AND OR NOT字段
SELECT * FROM students WHERE score >= 80 AND gender = 'M';
SELECT * FROM students WHERE score >= 80 OR gender = 'M';
SELECT * FROM students WHERE NOT class_id = 2;
可以使用括号
SELECT * FROM students WHERE (score < 80 OR score > 90) AND gender = 'M';
投影查询
SELECT id, score, name FROM students;
查询结果只包含其中几列
排序
SELECT id, name, gender, score FROM students ORDER BY score;
使用 ODER BY
进行排序
在最后加上DESC
即为倒序
在后面添加其他列名 可以进一步排序
聚合查询
SELECT COUNT(*) FROM students;
查找的内容是行数
COUNT(*)
和COUNT(id)
是相同的效果
其他聚合函数如下
- SUM 计算某一列的合计值,该列必须为数值类型
- AVG 计算某一列的平均值,该列必须为数值类型
- MAX 计算某一列的最大值
- MIN 计算某一列的最小值
聚合函数还可以分组
比如想计算每个班学生的数量 使用WHERE的话 需要进行3次统计
SELECT COUNT(*) num FROM students WHERE class_id = 1;
使用如下语句可以实现分组统计
SELECT COUNT(*) num FROM students GROUP BY class_id;
多表查询
SELECT * FROM students, classes;
查询可以从多个表中查询 得到的是两个表每行两两拼接的新表 即每个表都有100行的话 返回的表将是10000行数据
连接查询
选出所有学生 同时返回班级名称
SELECT s.id, s.name, s.class_id, c.name class_name, s.gender, s.score
FROM students s
INNER JOIN classes c
ON s.class_id = c.id;
修改数据
除了Retrieve外 剩下的基本操作是增 删 改
增
INSERT INTO <表名> (字段1, 字段2, ...) VALUES (值1, 值2, ...),(值1,值2,...);
字段的顺序不一定和表相同 但必须和value是对应的
改
UPDATE <表名> SET 字段1=值1, 字段2=值2, ... WHERE ...;
UPDATE的时候可以使用表达式
UPDATE students SET score=score+10 WHERE score<80;
删
DELETE FROM <表名> WHERE ...;
DELETE与UPDATE类似