Sql 语句总结

1.删除表名中的ID字段
alter table [tablename] drop column [ID]

2.删除表table1中[DEVICE],[PKG],[SHOTNAME]重复的三个字段,留下ID最小的字段
delete from table1 where [ID] Not in (select min([ID]) from table1 group by [DEVICE],[PKG],[SHOTNAME])

3.删除表的数据且ID会重新从1开始自增
truncate table tablename
注:DROP删表,表结构将删了,当然数据也copy不存在了。
TRUNCATE和DELETE删数据,表结构还在。
DELETE可以带条件删除,TRUNCATE是全部删除。
DELETE删除会写日志,TRUNCATE不写。
有时候我们会需要清除一个表格中的所有资料。要达到者个目的,一种方式是我们在 SQL DROP 那一页 看到 的 DROP TABLE 指令。不过这样整个表格就消失,而无法再被用了。另一种方式就是运用 TRUNCATE TABLE 的指令。在这个指令之下,表格中的资料会完全消失,可是表格本身会继续存在.

4.sql语句连接关系在这里插入图片描述
5.查找最大id的keyNo_X 的相关数据(id是唯一的自增类型)
select * FROM table1
where id = (select max(id) FROM table1 where keyNo_X = ‘KP0001’)

6.多表关联查询
select t.*,l.lotid,l.lotno,e.t_dev,e.test_pgm,e.customerProductNumber from Test t, Lot l, emes e where t.lotid = l.lotid and e.lotname = l.lotno and t.testid = ‘175539’

7.oracle查询插入时间大于系统时间减一天
select * from tablename where inserttime>=sysdate-1

oracle修改时间
update tablename set inserttime = to_date(‘2020/4/16 09:15:59’,‘yyyy-mm-dd hh24:mi:ss’) where col= ‘’

8.SQL Server判断某个字段是否为null,用is not null或者is null!!!而不是 字段名 = null!!!
SELECT * FROM tablename where col1 is null

9.查询时间字段大于某个时间
SELECT * FROM [CIMitar_Data].[dbo].[BinData]
where [checktime] > CONVERT(datetime,‘2020-03-24 10:12:00’,20)
查询时间字段在系统时间前十分钟内的数据
SELECT * FROM [CIMitar_Data].[dbo].[BinData] where datediff(mi,[checktime],getdate())<=10

10.查找重复的数据
查询某一列重复记录
SELECT * FROM tablename
WHERE col1 IN (SELECT col1 FROM tablename GROUP BY col1 HAVING COUNT(col1 )>1 )
ORDER BY col1
多列重复
SELECT m.* FROM tablename m,
(
SELECT col1,col2
FROM tablename
GROUP BY col1,col2
HAVING COUNT(1)>1
) AS m1
WHERE m.col1=m1.col1 AND m.col2=m1.col2
order by col1,col2

11.去除重复的字段
SELECT distinct col FROM tablename

12.sqlserver2008新建查询,表名下出现红波浪线,显示“表名无效”,但仍然可以查询得到结果
在 Microsoft sql server management studio 里点击“编辑”——“IntelliSense”——“刷新本地缓存”
就会发现红色波浪线没了

13.sql语句优化–左连接
现有a,b,c表需要连表查询,a表是主表接近百万数据,b,c表只有几百条,

select a.x, b.x, c.x from a left join b on a.key = b.key left join c on a.key = c.key where …

修改之后

select a.x, (select b.x from b where b.key = a.key) y, (select c.x from c where c.key = a.key) z where …

修改之前sql运行需要大概16.3s,修改之后大概0.8秒,

原因:计算方式问题,左连接会先连接再查询,会形成很大的笛卡尔积,而子查询会分两次查询,当主表数据量大,副表数据量小时候优先使用子查询

14.SQL SERVER中某个字段属性为varchar,我想把这个字段改成int型,如何操作?
aa为表名 bb为字段名
alter table aa alter column bb int

15.A. 重命名表
下例将表 customers 重命名为 custs:
EXEC sp_rename ‘customers’, ‘custs’
B. 重命名列
下例将表 customers 中的列 contact title 重命名为 title:
EXEC sp_rename ‘customers.[contact title]’, ‘title’, ‘COLUMN’

16.SQL SERVER进行数据查询的时候,如果数据量很大的情况下,索引就显得很重要。sql server建立数据表的索引:
1.打开数据库,找到一个表,打开索引文件夹(Indexes),
2.右击新建索引(New Index),选择非聚集索引(Non_Clustered Index…)–主键默认就是聚集索引。
3.给索引命名(双击Index name,自己命名)。
4.如果列数据不唯一就不勾选Unique,如果列数据唯一勾选Unique。
5.添加索引对应的列–选则Index key columns,点击Add,选择要添加的列(ID类似的)。
6.最后点击OK。

17.查询表中有多少条数据
select COUNT(*) AS CNT from tablename

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值