数据库创建
创建数据表
create table (
字段1 字段类型 not null ,
字段2 字段类型
)
primary key()
删除数据表
drop table 表名
增加字段
alter table xxx add 列名 类型
修改字段类型或长度
alter table 表 alter column 字段名 类型
删除字段
alter table 表 drop column 字段名
重命名表或者字段
exec sp_rename 'oldname','newname' -- 表重命名
exec sp_rename 'table.oldcolumn','newname','column' -- 字段重命名
数据增删改查
查询
select * from [表名]
where 条件
group by 字段 -- 分组
having 条件 -- 分组过滤
增加
insert into 表名(字段1,字段2,...) values (值1,值2,...)
insert into 表名 select * from 表2
select * into 新表 from 表1
修改
update 表名 set 字段1='',字段2='' where 条件
删除
delete from 表名 where 条件
truncate table 表名 -- 直接删除数据表数据
数据库函数
聚合函数
MAX() --最大值
MIN() -- 最小值
AVG()-- 平均值
COUNT()--返回的行数
SUM() -- 求和
STDEV() -- 返回给定表达式中所有值的统计标准偏差
VAR() --返回给定表达式中所有值的统计方差
分析函数
--分析函数通常和OVER()函数搭配使用
CUME_DIST 和PERCENT_RANK
CUME_DIST 计算的逻辑是:小于等于当前值的行数/分组内总行数
PERCENT_RANK 计算的逻辑是:(分组内当前行的RANK值-1)/ (分组内总行数-1),排名值是RANK()函数排序的结果值
排名函数
ROW_NUMBER函数:实际上是一个序列,每个分组内都会创建一个序列,序列从1开始,按照顺序依次 +1 递增。
RANK函数:用于排名时,不会返回连续的整数。RANK函数的语法是:在分组内,按照特定的顺序排名,序号从1依次递增,
排名函数以tie为单位,每个tie中的所有行的排名是相同的,排名可能是不连续的
DENSE_RANK函数:用于排名时,会返回连续的整数
NTILE函数:在每个分组中,NTILE按照指定的顺序,把数据行分为N个小组(tile),NTILE返回小组编号。在每个分组内
ROW_NUMBER() OVER ( [ PARTITION_BY_clause ] order_by_clause )
日期函数
相关博客
getdate() -- 获取当前时间
datediff(dd/yy/mm,'2004-09-01','2004-09-18') -- 日期求差,年,月,日
dateadd() 日期相加
DATEPART(dp,d)函数返回指定日期中相应的部分的整数值,dp的取值与DATETIME函数相同。
DAY(),MONTH(),YEAR(),返回日期中的日,月,年
字符串函数
相关博客
ASCII(character_expression)函数用于返回字符串表达式中最左侧的ASCII代码值
CHAR(integer_expression)函数将整数类型的ASCII值转换为对应的字符,integer_expression是一个介于0~255之间的整数。
如果该整数表达式不在此范围内,将返回null值
LEFT(character_expression,integer_expression)函数返回字符串左边开始指定个数的字符串、字符或者二进制数据表达式
RIGHT(character_expression,integer_expression)返回字符串character_expression最右边integer_expression个字符。
LTRIM(character_expression)用于除去字符串左边多余的空格
RTRIM(character_expression)用于除去字符串右边多余的空格
REVERSE(s)将字符串s反转,返回的字符串的顺序和s的顺序相反
LEN()函数返回字符表达式中的字符数。如果字符串中包含前导空格和尾随空格,则函数将它们包含在内。LEN对相同的单字节和双字节字符串返回相同的值
CHARINDEX(str1,str,[start])函数返回子字符串str1在字符串str中的开始位置,start为搜索的开始位置,如果指定start参数,则从指定位置开始搜索;
如果不指定start参数或者指定为0或者负值,则从字符串开始位置搜索。
SUBSTRING(value_expression,start_expression,length_expression)函数返回字符表达式,二进制表达式,文本表达式或图像表达式的一部分
UPPER()/LOWER() 字母大小写转换
REPLACE(s,s1,s2)使用字符串s2替代字符串s中的s1.
存储过程
if (object_id('存储名', 'P') is not null)
drop proc 存储名
go
create procedure 存储名字
(
参数1 类型=‘’,
参数2 类型=‘’
)
with encryption -- 加密
as
declare @id int, -- 申明变量
@name varchar(20),
@temp varchar(20);
set @id = 7; -- 变量赋值
set @temp = 1;
select * from 表名
...
--带游标参数存储过程
if (object_id('proc_cursor', 'P') is not null)
drop proc proc_cursor
go
create proc proc_cursor
@cur cursor varying output
as
set @cur = cursor forward_only static for
select id, name, age from student;
open @cur;
go
--调用
declare @exec_cur cursor;
declare @id int,
@name varchar(20),
@age int;
exec proc_cursor @cur = @exec_cur output;--调用存储过程
fetch next from @exec_cur into @id, @name, @age;
while (@@fetch_status = 0)
begin
fetch next from @exec_cur into @id, @name, @age;
print 'id: ' + convert(varchar, @id) + ', name: ' + @name + ', age: ' + convert(char, @age);
end
close @exec_cur;
deallocate @exec_cur;--删除游标
查询所有的存储是否包含某个字符串或者表
select * from sys.sysobjects a
left join syscomments b on b.id=a.id
WHERE text LIKE '%medical_record%'