时间:2021-07-01 10:21:17 帮助过:22人阅读
根据已有的表创建新表
- <span style="color: #000000;">A:create table tab_new like tab_old (使用旧表创建新表)
- B:create table tab_new as SELECT col1,col2…from tab_old definition only</span>
增加一个列
Alter table tabname add column col type
注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。
分组:Group by
一张表,一旦分组完成后,查询后只能得到组相关的信息。
组相关的信息:(统计信息) count,sum,max,min,avg 分组的标准)
在SQLServer中分组时:不能以text,ntext,image类型的字段作为分组依据
在selecte统计函数中的字段,不能和普通的字段放在一起;
复制表(只复制结构)
- <span style="color: #008000;">//</span><span style="color: #008000;">法一:</span>
- SELECT * INTO b FROM a WHERE 1 <> 1<span style="color: #000000;">(仅用于SQlServer)
- </span><span style="color: #008000;">//</span><span style="color: #008000;">法二:</span>
- SELECT top 0 * into b from a
跨数据库拷贝数据(具体数据使用绝对路径)
- <span style="color: #000000;">INSERT INTO b (a, b, c)
- SELECT
- d,e,f
- FROM b (in ‘具体数据库’)where 条件
- 例:..from b in </span>‘"&Server.MapPath(".")&"\data.mdb" &"‘ where..
随机取出10条数据
- SELECT TOP 10 * FROM tablename ORDER BY NEWID()
随机选择记录
- select newid()
列出数据库里所有的表名
- SELECT name FROM sysobjects WHERE type = ‘U‘ <span style="color: #008000;">//</span><span style="color: #008000;">U代表用户</span>
列出表里的所有的列名
- SELECT name FROM syscolumns WHERE id = OBJECT_ID(‘TableName‘)
列示type、vender、pcs字段,以type字段排列,case可以方便地实现多重选择,类似select
中的case
- <span style="color: #000000;">SELECT
- type,
- SUM(CASE vender
- WHEN </span>‘A‘ THEN pcs ELSE 0<span style="color: #000000;">
- END),
- SUM(CASE vender
- WHEN </span>‘C‘ THEN pcs ELSE 0<span style="color: #000000;">
- END),
- SUM(CASE vender
- WHEN </span>‘B‘ THEN pcs ELSE 0<span style="color: #000000;">
- END)
- FROM tablename
- GROUP BY type</span>
初始化表table1
TRUNCATE TABLE table1
注意:会删除数据并将标志值置回1,但不会记录日志,TRUNCATE只在删除全表适
用,TRUNCATE是DDL不是DML
一条sql 语句搞定数据库分页
- SELECT TOP 10<span style="color: #000000;">
- b.</span>*<span style="color: #000000;">
- FROM (SELECT TOP </span>20<span style="color: #000000;">
- 主键字段,
- 排序字段
- FROM 表名
- ORDER BY 排序字段 DESC) a,
- 表名 b
- WHERE b.主键字段 </span>=<span style="color: #000000;"> a.主键字段
- ORDER BY a.排序字段</span>
删除重复记录
- <span style="color: #008000;">//</span><span style="color: #008000;">1</span>
- <span style="color: #000000;">delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)
- </span><span style="color: #008000;">//</span><span style="color: #008000;">2</span>
- select distinct *<span style="color: #000000;"> into temp from tablename
- delete from tablename
- insert into tablename select </span>*<span style="color: #000000;"> from temp
- 注意:不适合大容量但数据操作</span>
技巧
1=1,1=2的使用,在SQL语句组合时用的较多
“where 1=1” 选择全部
“where 1=2” 全部不选
常识
在SQL查询中:from后最多可以跟多少张表或视图:256
在SQL语句中出现 Order by,查询时,先排序,后取
在SQL中,一个字段的最大容量是8000,而对于nvarchar(4000),由于nvarchar是Unicode码。
拓展
局部性原理:
当一个数据被用到时,其附近的数据也通常会马上被使用。程序运行期间所需要的数据通常比较集中。
SQL语句大全
标签:dev 复制表 code obj ali back 技巧 run 比较