SQLServer语句查询
程序员文章站
2024-02-22 23:09:46
...
<html>
<head>
<title>sqlserver语法查询^^^肖永鑫制作</title>
</head>
<body link="#0000ff" alike="#ff000" vlike="0000ff">
<a name="返回">
<center> <font color=red><h1>数据库常用语句</h1></font></center>
<br><marquee behavior=alternate><font color=blue>小鑫制作</font></marquee><br><hr><br></a>
<center>
<a href="#数据库">数据库</a>
<a href="#数据表">数据表</a>
<a href="#索引">索引</a>
<a href="#视图">视图</a>
<a href="#transact-sql">transact-sql</a>
<a href="#事务">事务</a>
<a href="#触发器">触发器</a>
<a href="#游标">游标</a>
<a href="#存储过程">存储过程</a>
<a href="#xml">xml</a>
<a href="#select语句">select语句</a>
<a href="#完整性">完整性</a>
<a href="#数据类型">数据类型</a>
</center>
<pre><a name="数据库"><font color=blueviolet><h4>
创建数据库
语法:
</h4></font></a><a href="#返回">返回</a>
<h3>
create database database_name
[ on
[ < filespec > [ ,...n ] ]
[ , < filegroup > [ ,...n ] ]
] </center>
[ log on { < filespec > [ ,...n ] } ]
[ for attach ]
< filespec > ::=
[ primary ]
( [ name = logical_file_name , ]
filename = 'os_file_name'
[ , size = size ]
[ , maxsize = { max_size | unlimited } ]
[ , filegrowth = growth_increment ] )
< filegroup > ::=
filegroup filegroup_name < filespec >
</h3><b>
解释:
</b>
on:指定数据文件
log on:指定日志文件
for attach:附加数据库
primary:指定主文件
name:指定文件的逻辑名称
filename:指定文件的物理名称
size:指定文件的大小
maxsize:指定文件最大的大小
filegrowth:文件的增长增量
filegroup:指定文件组
<b><font color=blueviolet><h4>
修改数据库
语法:
</h4></font></b><h3>
alter database database
{ add file < filespec > [ ,...n ] [ to filegroup filegroup_name ]
| add log file < filespec > [ ,...n ]
| remove file logical_file_name
| add filegroup filegroup_name
| remove filegroup filegroup_name
| modify file < filespec >
| modify name = new_dbname
| modify filegroup filegroup_name {filegroup_property | name=new_filegroup_name }}
</h3>
解释:
add file:指定要添加文件
to filegroup:指定要将指定文件添加到的文件组
add log file:指定要将日志文件添加到指定的数据库
remove file:从数据库系统中删除文件
add filegroup:指定要添加文件组
remove filegroup:从数据库中删除文件组:
modify file指定要更改给定的文件:
modify name:重命名数据库
modify filegroup:指定要修改的文件组
<b><font color=blueviolet><h4>
删除数据库
语法:
</h4></font></b><h3>
drop database database_name [ ,...n ]
</h3><hr><b><a name="数据类型"><font color=blueviolet><h4>
数据类型:
</h4></font></a><a href="#返回">返回</a></b>
<center>
<table border="1">
<tr><th> 分类</th> <th>数据类型</th></tr>
<tr><td> 整数数据类型</td> <td>bit、tinyint、smallint、int、bigint</td></tr>
<tr><td> 货币数据类型</td> <td>smallmoney、money</td></tr>
<tr><td> 浮点数据类型</td> <td>decimal、numeric、real、float</td></tr>
<tr><td> 日期/时间数据类型 </td><td>smalldatetime、datetime</td></tr>
<tr><td> 字符数据类型</td> <td>char、varchar、nchar、nvarchar</td></tr>
<tr><td> 二进制数据类型</td> <td>binary、varbinary</td></tr>
<tr><td> 图像和文本数据类型</td> <td>text、ntext、image</td></tr>
</table>
</center>
<hr><b><a name="完整性"><font color=blueviolet><h4>
数据完整性的机制:
</h4></font></a><a href="#返回">返回</a></b>
<h3>
特定标识属性(identity)
默认值(default)
约束
主键约束(primary key)
外键约束(foreign key)
惟一约束(unique)
检查约束(check)
非空约束(not null)
</h3><hr><b><a name="select语句"><font color=blueviolet><h4>
select语句的基本结构:
</h4></font></a><a href="#返回">返回</a></b>
<h3>
select[top n] [distinct(去掉重复)]select_list[as 别名]
from table_source
[group by 要分组的列名]
[compute {{ avg|count|max|min|sum}(expression)}[,...n][by expression [,...n]]
[having 可以加集合函数的类似where语句 ]
[ where search_condition(比较,范围,类表,模式,复合) ]
[ order by {order_expression [ asc | desc ]}[,...n] ]
</h3>
select:指定由查询返回的列
from:指定从其中检索行的表
where:指定用于限制返回的行的搜索条件
order by:指定结果集的排序
示范
select 学号,avg(课程成绩) as 平均成绩 from 成绩表 where 学号 is not null group by
学号 having avg(课程成绩)>92 order by 平均成绩
<b>
示例中sql语句的执行顺序
首选执行from子句,从成绩表组装数据源的数据
执行where子句,筛选成绩表中所有不为null的数据
执行group by子句,把成绩表按学号列进行分组
计算avg()聚合函数,按课程成绩求出平均成绩的具体数值
执行having子句,筛选平均成绩大于92分的学生信息
执行order by子句,把最后的结果按平均成绩进行排序
</b><hr><b><a name="数据表"><font color=blueviolet><h4>
创建数据表
</h4></font></a><a href="#返回">返回</a></b>
<h3>
create table 表名
(
列名 数据类型 [约束],
列名 数据类型 [约束],
…
)[on 文件组]
</h3><b><font color=blueviolet><h4>
修改数据表
</h4></font></b><h3>
alter table 表名
{
add 列名 数据类型 [约束] |
alter column 列名 新数据类型 [约束] |
drop column 列名
}
</h3><b><font color=blueviolet><h4>
删除数据表
</h4></font></b><h3>
drop table table_name
</h3><b><font color=blueviolet><h4>
向表插入数据
语法:
</h4></font></b><h3>
insert [into] 表名(字段名[,n]) values(数据[,n])
</h3><b><font color=blueviolet><h4>
修改表修改数据
语法:
</h4></font></b><h3>
update 表名 set 字段名=新数据 [where 条件]
</h3><b><font color=blueviolet><h4>
删除表数据
语法:
</h4></font></b><h3>
delete [from] 表名 [where 条件]
</h3><hr><b><a name="索引"><font color=blueviolet><h4>
索引的创建
语法:
</h4></font></a><a href="#返回">返回</a></b><h3>
create [ unique ] [ clustered | nonclustered ]
index index_name
on { table | view } ( column [ asc | desc ] [ ,...n ] )
</h3>
参数:
[ unique ] [ clustered | nonclustered ]
指定创建索引的类型,参数依次为惟一索引、聚集索引和非聚集索引。
当省略 unique 选项时,建立非惟一索引。
当省略 clustered|nonclustered 选项时,建立非聚集索引
<b><font color=blueviolet><h4>
索引的删除
语法:
</h4></font></b><h3>
drop index 'table.index | view.index' [ ,...n ]
</h3><hr><b><a name="视图"><font color=blueviolet><h4>
使用transact-sql创建视图
语法:
</h4></font></a><a href="#返回">返回</a></b><h3>
create view view_name
as select_statement
</h3>
参数:
view_name:视图的名称
as:视图要执行的操作
select_statement:定义视图的查询语句
<b><font color=blueviolet><h4>
视图的修改
语法:
</h4></font></b>
<h3>
alter view view_name
as select_statement
</h3>
参数:
view_name:要更改的视图的名称
as:视图要执行的操作
select_statement:定义视图的查询语句
<b><font color=blueviolet><h4>
视图的删除
语法:
</h4></font></b><h3>
drop view view_name[,…n]
</h3>
参数:
view_name:要删除的视图的名称
<hr><b><a name="transact-sql"><font color=blueviolet><h4>
transact-sql可以使用两种变量
</h4></font></a><a href="#返回">返回</a></b><h3>
声明局部变量
declare @局部变量名 数据类型 [,…n]
declare @x int
为局部变量赋值
set @x=500
select @x=max(课程成绩) from 成绩表
</h3><b>
常用的全局全量
@@connections:返回自上次启动sql server以来连接或试图连接的次数
@@error:返回最后执行的transact-sql语句的错误代码
@@identity:返回最后插入的标识值
@@rowcount:返回受上一语句影响的行数
@@version:返回sql server当前安装的日期、版本和处理器类型
</b>
<b><font color=blueviolet><h4>
流程控制
</h4></font></b>
<center>
<table border="1">
<tr><td> begin…end</td> <td>if…else</td><td> case</td></tr>
<tr><td> while </td><td>continue</td><td> break</td></tr>
<tr><td> return </td><td>goto</td><td> waitfor</td></tr>
</table>
</center><hr><b><a name="事务"><font color=blueviolet><h4>
事务
</h4></font></a><a href="#返回">返回</a></b>
<h3>
显式事务的应用
--开始事务
begin transaction
--向班级表中插入正确的数据
insert into class(class_id,class_name,class_place) values('1','三班','101')
--向班级表中插入错误的数据
insert into class(class_id,class_name,class_place) values('1','四班','102')
--判断当前事务中的t-sql语句是否出错
if(@@error!=0)
--回滚事务
rollback transaction
else
--提交事务
commit transaction
隐式事务的应用
--将连接设置为隐式事务模式
set implicit_transactions on
--向班级表中插入正确的数据
insert into class(class_id,class_name,class_place) values('1','三班','101')
--向班级表中插入错误的数据
insert into class(class_id,class_name,class_place) values('1','四班','102')
--判断当前事务中的t-sql语句是否出错
if(@@error!=0)
--回滚事务
rollback transaction
else
--提交事务
commit transaction
--取消隐式事务模式,恢复为自动提交事务模式
set implicit_transactions off
</h3><hr><b><a name="触发器"><font color=blueviolet><h4>
触发器
</h4></font></a><a href="#返回">返回</a></b>
<h3>
触发器的创建
create trigger trigger_name
on { table | view }
{ after | instead of }
{ [ insert ] [ , ] [ update ] [ , ] [ delete ] }
as { sql_statement }
触发器的删除
drop trigger trigger_name [ ,...n ]
</h3><hr><b><a name="游标"><font color=blueviolet><h2>
游标
</h2></font></a><a href="#返回">返回</a></b><font color=blueviolet><h4>
声明游标
</h4></font><h3>
declare cursor_name cursor
[ local | global ]
[ forward_only | scroll ]
[ static | keyset | dynamic | fast_forward ]
[ read_only | scroll_locks | optimistic ]
for select_statement [ for update [ of column_name [ ,...n ] ] ]
</h3>
local:当前游标只限于局部使用
global:当前游标可全局使用
forward_only:游标指针只能向下移动
scroll:游标指针可任意移动
static:静态游标
keyset:键集游标
dynamic:动态游标
fast_forward:只进游标
read_only:禁止通过该游标进行更新
scroll_locks:指定通过游标进行的更新或删除保证会成功
optimistic:如果游标读入的行已更新,则更新或删除不会成功
for update [ of column_name [ ,...n ] ] :定义游标中可更新的列
<font color=blueviolet><h4>
打开游标
</h4></font><h3>
open { [ global ] cursor_name }
</h3>
open 语句用来将它所引用的记录填充到游标中。
打开游标后,可以使用 @@cursor_rows 在上次打开的游标中接收合格行的数目
<font color=blueviolet><h4>
提取游标
</h4></font><h3>
fetch
[ next | prior | first | last | absolute n | relative n ]
from
{ { [ global ] cursor_name }
[ into @variable_name [ ,...n ] ]
</h3>
解释:
next:下一行
prior:上一行
first:第一行
last:最后一行
absolute n:从游标头开始的第 n 行
relative n:从当前行开始的第 n 行
into @variable_name [ ,...n ]:将提取的列数据放到局部变量中
@@fetch_status 报告上一个 fetch 语句的状态
<font color=blueviolet><h4>
关闭游标
</h4></font><h3>
close { [ global ] cursor_name }
</h3>
释放当前结果集,然后解除定位游标的行上的游标锁定,从而关闭一个开放的游标
<font color=blueviolet><h4>
删除游标
</h4></font><h3>
deallocate { [ global ] cursor_name }
</h3><hr><b><a name="存储过程">
存储过程
</a><a href="#返回">返回</a></b><font color=blueviolet><h4>
创建存储过程
语法:
</h4></font><h3>
create procedure procedure_name
[ { @parameter data_type } [ = default ] [ output ]] [ ,...n ]
[ with encryption ]
as sql_statement [ ...n ]
</h3>
参数:
procedure_name:存储过程的名称
@parameter:存储过程的参数
data_type:参数的数据类型
default:参数的默认值
output:表明参数是返回参数
with encryption:加密当前的存储过程
as:指定存储过程要执行的操作
sql_statement:过程中要包含的任意数目和类型的sql语句
<font color=blueviolet><h4>
执行存储过程
语法:
</h4></font><h3>
execute procedure_name [ @parameter ]
</h3><font color=blueviolet><h4>
删除存储过程
语法:
</h4></font><h3>
drop procedure procedure_name
</h3><hr><a name="xml"></a><a href="#返回">返回</a>
<h3>
创建xml数据类型的变量和列
--创建xml数据类型的变量
declare @x xml
set @x='<address id="1"><country>中国</country><city>北京</city></address>'
select @x
--创建xml数据类型的列
create table xmltest
(
id int primary key,
address xml,
)
</h3>
</pre>
</body>
</html>