SQL语句大全(更新中)

2019-07-17  本文已影响0人  Yuri7

基础

  1. 创建数据库 CREATE DATABASE db_name
  2. 删除数据库 DROP DATABASE db_name
  3. 备份数据库
USE master  
EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'  
--- 开始 备份  
BACKUP DATABASE pubs TO testBack 
  1. 创建新表
CREATE TABLE table_name(
coumn_name type,
...
)
  1. 根据已有表创建新表
    CREATE TABLE table_new LIKE table_old
    CREATE TABLE table_nwe AS column1, column2, FROM table_old DEFINITION ONLY
  2. 删除新表 DROP TABLE table_name
  3. 增加一个列 ALTER TABLE table_name ADD column type
    列加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。
  4. 添加主键 ALTER TABLE table_name ADD PRIMARY KEY(col)
  5. 删除主键 ALTER TABLE table_name DROP PRIMATY KEY(col)
  6. 创建索引 CREATE UNIQUE INDEX index_name ON table_name(col ...)
    索引可以在不读取整个表的情况下搜索数据, 会加快搜索速度,但是会增加更新时间。
    普通索引,允许重复值。唯一的索引意味着两个行不能拥有相同的索引值。事实上,在许多场合,人们创建唯一索引的目的往往不是为了提高访问速度,而只是为了避免数据出现重复。
  7. 删除索引 DROP INDEX index_name
    注:索引是不可更改的,想更改必须删除重新建。
  8. 创建视图 `CREATE VIEW view_name AS select_statement
  9. 删除视图 DROP VIEW view_name
  10. 选择 SELECT * FROM table_name WHERE range
  11. 插入
    INSERT INTO table_name(col1, col2, ...) VALUE(value1, value2)
    INSERT INTO table_name VALUE(value1, value2, ...)
  12. 删除 DELETE FROM table_name WHERE range
  13. 更新 UPDATE table_name SET field_name=value WHERE range
  14. 查找 SELECT * FROM table1 WHERE field_name LIKE ’%value1%’
  15. 排序 SELECT * FROM table_name ORDER BY field1 ASC, field2 DESC
  16. 总数:SELECT COUNT AS totalcount FROM table_name
  17. 求和/平均/最大/最小:SELECT SUM/AVG/MAX/MIN(field_name) AS result FROM table_name
  18. UNION运算符:UNION组合两个表时会消除重复行,派生一个结果表,UNION ALL不消除重复行
  19. EXCEPT运算符:EXPECT 通过包含在table1不在table2中的行,派生一个结果表, EXPECT ALL不消除重复行
  20. INTERSECT运算符:INTERSECT通过在table1和table2中都有的行,派生一个结果表, EXPECT ALL不消除重复行
  21. 左连接 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
    右(外)连接结果集几包括连接表的匹配行,也包括右连接表的所有行。
  22. 内连接 INNER JOIN, 两个表的交叉部分
  23. 全外连接 FULL/CROSS OUTER JOIN
    不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。
  24. 分组 GROUP BY
    一张表, 一旦分组 完成后,查询后只能得到组相关的信息。
    组相关的信息(统计信息)count,sum,max,min,avg 分组的标准;
    在SQLServer中分组时:不能以text,ntext,image类型的字段作为分组依据;
    在selecte统计函数中的字段,不能和普通的字段放在一起;
  25. 分离数据库 sp_detach_db
  26. 附加数据库 sp_attach_db table_name
    附加需要完整的路径
  27. 数据库重命名 sp_renamedb 'old_name', 'new_name'

提升

  1. 完全复制表
    复制表结构 CREATE TABLE table2 LIKE table1
    导入数据 INSERT INTO table2 SELECT * FROM table1
    复制表结构及数据到新表 CREATE TABLE new_table SELECT * FROM old_table
  2. 复制旧表的数据到新表
    两个表结构一样 INSERT INTO new_table SELECT * FROM old_table
    两个表结构不一样 INSERT INTO new_table (col1, col2,...) SELECT col1, col2,... FROM old_table
  3. 子查询
    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 )
上一篇下一篇

猜你喜欢

热点阅读