欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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>