SQL SERVER 数据库常用SQL用法
查找某列数据包含某一字符串:
SELECT * FROM table WHERE column LIKE '%string%'
查找某列数据以某些字符串开头:
SELECT * FROM table WHERE column LIKE '[string]%'
查找某列数据不包含某一字符串
SELECT * FROM table WHERE column NOT LIKE '%string%'
替换某字段中的部分字符串
UPDATE table SET column = REPLACE(column, 源字符串,目标字符串)
使用 B 表中的数据更新到 A 表中
方法①:UPDATE tableA SET columnA = tableB.columnB FROM tableA inner join tableB on tableA.ID = tableB.ID where columnC='条件'
方法②:UPDATE tableA SET columnA = tableB.columnB FROM tableA,tableB where tableA.ID = tableB.ID and columnC='条件'
删除表中数据(并且会清除主键标识)
TRUNCATE TABLE tablename
子查询 WITH AS 用法
WITH temptable AS (SELECT * FROM table WHERE column = '查询条件') SELECT * FROM temptable
创建非聚合索引
CREATE NONCLUSTERED INDEX index_name ON table (column)
查询表中两行数据某字段值是否重复
select column from table group by column having count(column) > 1
将表A的数据写入表B中
INSERT INTO B SELECT * FROM A;
ROW_NUMBER() 的用法,以下是根据 ColumnName1 进行编号,编号所在列名为 NewColumnName:
SELECT ROW_NUMBER() over(PARTITION BY ColumnName1 ORDER BY ColumnName1 asc,ColumnName2 asc) as NewColumnName, ColumnName1 FROM TableName
检索语句的执行顺序:
select –>where –> group by–> having–>order by
字符串第一个字符是字母的,可在 SQL 使用下列判断语句:
ascii(left(columnName, 1)) > 65
查询数据库中死锁
select request_session_id spid, OBJECT_NAME(resource_associated_entity_id) tableName from sys.dm_tran_locks where resource_type='OBJECT'
杀死死锁进程
Kill 进程ID
修改列的类型定义
alter table 表 alter column 列名 类型
修改列名称
alter table 表名 rename column 源列名 to 目标列名
追加新列
alter table 表名 add 新列名 列类型 (列默认值)
判断数据库表是否存在
if exists (select * from sysobjects where id = object_id(N'DB.dbo.[Table_Name]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
DateAdd(datepart, number, date)
number: 数值,可以是负数
date: 合法的日期
datepart:
年:yy,yyyy
季度 :qq, q
月: mm, m
年中的日 :dy, y
日 :dd, d
周 :wk, ww
星期 :dw, w
小时 :hh
分钟 :mi, n
秒 :ss, s
毫秒 :ms
微妙 :mcs
纳秒 :ns