左连接 LEFT (OUTER) JOIN
左(外)连接结果集几包括连接表的匹配行,也包括左连接表的所有行。
例:SELECT a.a, a.b, a.c, b.c, b.d, b.f FROM a LEFT OUT JOIN b ON a.a = b.c
右连接 RIGHT (OUTER) JOIN
右(外)连接结果集几包括连接表的匹配行,也包括右连接表的所有行。
分组 GROUP BY
一张表, 一旦分组 完成后,查询后只能得到组相关的信息。
组相关的信息(统计信息)count,sum,max,min,avg 分组的标准;
在SQLServer中分组时:不能以text,ntext,image类型的字段作为分组依据;
在selecte统计函数中的字段,不能和普通的字段放在一起;
分离数据库 sp_detach_db
附加数据库 sp_attach_db table_name
附加需要完整的路径
数据库重命名 sp_renamedb 'old_name', 'new_name'
提升
完全复制表
复制表结构 CREATE TABLE table2 LIKE table1
导入数据 INSERT INTO table2 SELECT * FROM table1
复制表结构及数据到新表 CREATE TABLE new_table SELECT * FROM old_table
复制旧表的数据到新表
两个表结构一样 INSERT INTO new_table SELECT * FROM old_table
两个表结构不一样 INSERT INTO new_table (col1, col2,...) SELECT col1, col2,... FROM old_table
子查询
WHERE型子查询:把内层查询的结果作为外层查询的比较条件, IN 和= ANY 等价 SELECT col1, col2, ... FROM table1 WHERE col1=(SELECT max(col1) FROM table1) SELECT col1, col2, ... FROM able1 WHERE col1 IN (SELECT MAX(col1) GROUP BY co2)
FROM型子查询:把内层的查询结果当成临时表,供外层SQL再次查询。查询结果集可以当成表看待。临时表要使用一个别名。 SELECT * FROM (SELECT a,b,c FROM table) AS T where T.a > 1;
EXISTS型子查询:例如,两张关联表,删除主表中已经在副表中没有的信息 DELETE FROM table1 WHERE NOT EXISTS ( SELECT * FROM table2 WHERE table1.field1=table2.field1 )