--创建表
create table tmp(
id int identity(1,1) not null,--标识列,自动增加1
name varchar(10) not null
primary key(id)on [primary]--主键
)
--修改列数据类型
alter table tmp alter column name nvarchar(20)
--修改表,增加列
alter table tmp add pwd varchar(32)
--修改表,删除列
alter table tmp drop column pwd
--删除表
drop table tmp
4.约束
--添加默认约束;
alter table tmp
add constraint [dk_name] default('匿名') for [name]
--添加检查约束,要求年龄
alter table tmp
add constraint ck_age check (ages between 20 and 60)
--添加主健约束,名称作为主健
alter table tmp
add constraint pk_id primary key (id)
--添加唯一约束,名称不能重复
alter table tmp
add constraint pk_name unique (name)
--删除约束
alter table tmp
drop constraint pk_name
5.索引
CREATE [UNIQUE] [CLUSTERED|NONCLUSTERED]
INDEX index_name
ON table_name (column_name…)
[WITH FILLFACTOR=x]
--UNIQUE表示唯一索引,可选
--CLUSTERED、NONCLUSTERED表示聚集索引还是非聚集索引,可选
-- FILLFACTOR表示填充因子,指定一个0到100之间的值,该值指示索引页填满的空间所占的百分比
6.变量
--定义变量
declare @i int
--设置变量值
set @i=1
--使用变量
select * from tmp where id =@i--全局变量用@@i
7.事务
--使用事务
declare @err int
set @err = 0
begin transaction
--操作1
--此部分为sql语句(省略)
set @err = @err +abs(@@error)
--操作2
--此部分为sql语句(省略)
set @err = @err +abs(@@error)
--没错就提交
if @err=0
commit
--否则回滚
else
rollback
--视图
create view view_name
as
select * from sql语句
9.存储过程
--存储过程
create proc proc_name
@id int,
@name varchar(20)
as
select * from tmp where [id] =@id and [name] =@name
10.触发器
--触发器
create trigger trigger_name
on table_name
for insert / delete/update
as
Sql语句块
11.逻辑语句
--1条件:
if(@age>90)
--语句块
else
--语句块
if(条件)
begin
--语句1
--语句2
.......
end
else
begin
--语句1
--语句2
.......
end
--2 循环语句
while(@age > 90)
begin
语句1
语句2
.......
end
--3 case 多分支语句
select stuno, case
when age1=90 then 结果1
when age1=80 then 结果2
end
from stum
12.waitfor
--例 等待1 小时2 分零3 秒后才执行SELECT 语句
waitfor delay ’01:02:03’
select * from table_name
--例 等到晚上11 点零8 分后才执行SELECT 语句
waitfor time ’23:08:00’
select * from table_name
select * from tmp where id = 1 and
name = 'str_name'
name like '% find this %'
name like '[a-zA-Z]%' --------- ([]指定值的范围)
name like '[^F-M]%' --------- (^排除指定范围)
--------- 只能在使用like关键字的where子句中使用通配符)
14.distinct
--distinct指定检索独有的列值,不重复
select distinct name from tmp
15.常用函数(function)
转换函数
convert(数据类型,值,格式)
统计函数
AVG --求平均值
COUNT --统计数目
MAX --求最大值
MIN --求最小值
SUM --求和
--AVG 例子
use pangu
select avg(e_wage) as dept_avgWage
from employee
group by dept_id
--MAX 求工资最高的员工姓名
use pangu
select e_name
from employee
where e_wage =(select max(e_wage) from employee)
字符串函数
ASCII() ------函数返回字符表达式最左端字符的ASCII 码值
CHAR() ------函数用于将ASCII 码转换为字符
------如果没有输入0 ~ 255 之间的ASCII 码值CHAR 函数会返回一个NULL 值
LOWER() ------函数把字符串全部转换为小写
UPPER() ------函数把字符串全部转换为大写
STR() ------函数把数值型数据转换为字符型数据
LTRIM() ------函数把字符串头部的空格去掉
RTRIM() ------函数把字符串尾部的空格去掉
LEFT(),RIGHT(),SUBSTRING() --函数返回部分字符串
CHARINDEX(),PATINDEX() --函数返回字符串中某个指定的子串出现的开始位置
数据类型转换函数
CAST() 函数语法如下
CAST() ( AS [ length ])
CONVERT() 函数语法如下
CONVERT() ([ length ], [, style])
select cast(100+99 as char) convert(varchar(12), getdate())
日期函数
DAY() ------函数返回date_expression 中的日期值
MONTH() ------函数返回date_expression 中的月份值
YEAR() ------函数返回date_expression 中的年份值
DATEADD( , ,)
-----函数返回指定日期date 加上指定的额外日期间隔number 产生的新日期
DATEDIFF( , ,)
-----函数返回两个指定日期在datepart 方面的不同之处
DATENAME( , ------函数以字符串的形式返回日期的指定部分
DATEPART( , ------函数以整数值的形式返回日期的指定部分
GETDATE() ------函数以DATETIME 的缺省格式返回系统当前的日期和时间
系统函数
APP_NAME() ------函数返回当前执行的应用程序的名称
COALESCE() -----函数返回众多表达式中第一个非NULL 表达式的值
COL_LENGTH(<'table_name'>, <'column_name'> ----函数返回表中指定字段的长度值
COL_NAME(, ----函数返回表中指定字段的名称即列名
DATALENGTH() -----函数返回数据表达式的数据的实际长度
DB_ID(['database_name']) ------函数返回数据库的编号
DB_NAME(database_id) ------函数返回数据库的名称
HOST_ID() -----函数返回服务器端计算机的名称
HOST_NAME() -----函数返回服务器端计算机的名称
IDENTITY([, seed increment]) [AS column_name])
ISDATE() ----函数判断所给定的表达式是否为合理日期
ISNULL(), --函数将表达式中的NULL 值用指定值替换
ISNUMERIC() ----函数判断所给定的表达式是否为合理的数值
NEWID() ----函数返回一个UNIQUEIDENTIFIER 类型的数值
NULLIF(),
----NULLIF 函数在expression1 与expression2 相等时返回NULL 值若不相等时则返回xpression1 的值