SQL语句大全

知识点思维导图:

备份sql server

//创建 备份数据的 device
USE master
EXEC sp_addumpdevice  'disk',
                      'testBack',
                      'c:\mssql7backup\MyNwind_1.dat'
//开始 备份
BACKUP DATABASE pubs TO testBack    

根据已有的表创建新表

A:create table tab_new like tab_old (使用旧表创建新表)
B:create table tab_new as SELECT col1,col2…from tab_old definition only

增加一个列

Alter table tabname add column col type

注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。

分组:Group by

一张表,一旦分组完成后,查询后只能得到组相关的信息。

组相关的信息:(统计信息) count,sum,max,min,avg  分组的标准)

在SQLServer中分组时:不能以text,ntext,image类型的字段作为分组依据

在selecte统计函数中的字段,不能和普通的字段放在一起;

复制表(只复制结构)

//法一:
SELECT * INTO b FROM a WHERE 1 <> 1(仅用于SQlServer)
//法二:
SELECT top 0 * into b from a

跨数据库拷贝数据(具体数据使用绝对路径)

INSERT INTO b (a, b, c)
SELECT
    d,e,f
FROM b (in ‘具体数据库’)where 条件
例:..from b in '"&Server.MapPath(".")&"\data.mdb" &"' where..

随机取出10条数据

SELECT TOP 10 * FROM tablename ORDER BY NEWID()

随机选择记录

select newid()

列出数据库里所有的表名

SELECT name FROM sysobjects WHERE type = 'U'  //U代表用户

列出表里的所有的列名

SELECT  name FROM syscolumns WHERE id = OBJECT_ID('TableName')

列示type、vender、pcs字段,以type字段排列,case可以方便地实现多重选择,类似select 中的case

SELECT
    type,
    SUM(CASE vender
        WHEN 'A' THEN pcs ELSE 0
    END),
    SUM(CASE vender
        WHEN 'C' THEN pcs ELSE 0
    END),
    SUM(CASE vender
        WHEN 'B' THEN pcs ELSE 0
    END)
FROM tablename
GROUP BY type

初始化表table1

TRUNCATE TABLE table1

注意:会删除数据并将标志值置回1,但不会记录日志,TRUNCATE只在删除全表适

用,TRUNCATE是DDL不是DML

一条sql 语句搞定数据库分页

SELECT TOP 10
    b.*
FROM   (SELECT TOP 20
           主键字段,
           排序字段
       FROM 表名
       ORDER BY 排序字段 DESC) a,
       表名 b
WHERE b.主键字段 = a.主键字段
ORDER BY a.排序字段

删除重复记录

//1
delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)
//2
select distinct * into temp from tablename
delete from tablename
insert into tablename select * from temp

注意:不适合大容量但数据操作

sql替换数据库字段中的字符

UPDATE `table_name`
SET `field_name` = REPLACE (
    `field_name`,
    'from_str',
    'to_str'
)
WHERE ...
//说明:table_name —— 表的名字 field_name —— 字段名 from_str —— 需要替换的字符串 to_str —— 替换成的字符串 
UPDATE shopping_hw SET  hw_pic= replace (hw_pic,  '*common', '+play' ) ;//内容“*common”替换为“+play”.

 

技巧

1=1,1=2的使用,在SQL语句组合时用的较多

“where 1=1” 选择全部   

“where 1=2” 全部不选

常识

在SQL查询中:from后最多可以跟多少张表或视图:256
在SQL语句中出现 Order by,查询时,先排序,后取
在SQL中,一个字段的最大容量是8000,而对于nvarchar(4000),由于nvarchar是Unicode码。  

拓展

局部性原理

当一个数据被用到时,其附近的数据也通常会马上被使用。程序运行期间所需要的数据通常比较集中。

posted @ 2019-04-15 18:25  WhatAreWords  阅读(769)  评论(0编辑  收藏  举报