美文网首页
SQL语句大全(更新中)

SQL语句大全(更新中)

作者: Yuri7 | 来源:发表于2019-07-17 11:28 被阅读0次

    基础

    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 )

    相关文章

      网友评论

          本文标题:SQL语句大全(更新中)

          本文链接:https://www.haomeiwen.com/subject/hviflctx.html