SQL 命令一般分为 DQL、DML、DDL
DQL:数据查询语句,基本就是 SELECT 查询命令,用于数据查询
DML:Data Manipulation Language 的简称,即数据操纵语言,主要用于插入、更新、删除数据,所以也分为 INSERT、UPDATE、DELETE 三种语句。
DDL:Data Definition Language 的缩写,即数据定义语言,主要用于创建、删除,以及修改表、索引等数据库对象语言
⚠️
1. 显示列的类型 "character varying(40)" 实际上与 "varchar(40)" 的意思是完全一样的, "int" 与 "integer" 的意思也是一样的。
2. 建表的时候,指定主键后,系统会为主键自动创建一个隐含的索引。
3. varchar(n) 和 char(n) 分别是 character varying(n) 和 character(n) 的别名,没有声明长度的 character 等于 character(1) 。如果使用 character varying 时不带长度说明词,那么该类型接受任何长度的字符串。不带长度是 PostgreSQL 的扩展,其他数据库一般不能这样使用。大多数情况下,应该使用 text 或 varchar。
表 join
表 join 也称为多表关联查询,如:
SELECT student_name, class_name FROM student a, class b
WHERE a.class_no = b.no;
INSERT INTO...SELECT 语句
使用 INSERT INTO...SELECT 语句可以把数据从一张表插入到另一张表中,这个语句属于 DML 语句。
可以使用下面的语句把数据备份到下面这张备份表中:
INSERT INTO student_bak SELECT * FROM student;
UNION 语句
可以将两张表的数据整合在一个结果集中,如
SELECT * FROM student WHERE no = 1
UNION
SELECT * FROM student_bak WHERE no = 2;
注意,UNION 可以把结果集中相同的两条记录合并成一条,如果不想合并,可以使用 UNION ALL
TRUNCATE TABLE 语句
效果和不带 WHERE 条件子句的 DELETE 语句也表示清空表的内容一样,但是两者实现的原理是不一样的。
TRUNCATE TABLE 是 DDL 语句,相当于重新定义一个新表的方法,把原先的表的内容直接丢弃了,所以执行起来很快,而 DELETE 是 DML 语句,可以认为 DELETE 是把数据一条一条地删除,若要删除很多行数据,就会比较慢。