重温SQL Server(T-SQL语言基础)
来源:互联网 发布:java中函数的调用 编辑:程序博客网 时间:2024/05/01 08:58
1.T-SQL语言
- CREATE:创建新对象,包括数据库、表、视图、过程、触发器和函数等常见数据库对象。
- ALTER:修改已有对象的结构。
- DROP:用来删除已有的对象。有些对象是无法删除的,因为它们是与模式捆绑的。如果表中包含的数据参与了一个关联,或者另一个对象依赖要删除的对象,就不能删除它。
1.1创建表
CREATE TABLE [dbo].[Student](
[StudentID] [int] NULL,
[Studentname] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[Class] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[Sex] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL
)
1.2创建视图
视图存储在数据库中,但并不保存数据,指示一个经过优化的SELECT查询。
CREATE VIEW [dbo].[View_Employee]
AS
SELECT dbo.Employees.LastName AS LName, dbo.EmployeeTerritories.EmployeeID AS EpID,dbo.EmployeeTerritories.TerritoryID AS TyID,
dbo.Employees.FirstName AS FName
FROM dbo.Employees INNER JOIN
dbo.EmployeeTerritories ON dbo.Employees.EmployeeID = dbo.EmployeeTerritories.EmployeeID
1.3创建存储过程
存储过程可以执行操作和业务功能,例如插入,更新,删除表数据。通过参数传递,判断是选择执行的操作。输入需在AS字符前定义。
CREATE PROCEDURE sqInsertOrUpdateProduct
@ProductName nvarchar(50)
,@ProductNumber nvarchar(25)
,@StdCost money
AS
IF EXISTS(SELECT * FROM Production.Product WHERE
ProductNumber = @ProductNumber)
Update Production.Product SET NAME = @ProductName,
StandardCost = @StdCost WHERE
ProductNumber = @ProcuctNumber
ELSE
INSERT INTO Production.Product
(Name,ProductNumber,StandardCost)
SELECT @ProdcutName
,@ProductNumber
,@StdCost
1.4创建触发器
触发器对表的记录执行特定的操作时执行。触发器通常应用特殊的业务规则来保证数据的完整性。触发器独有的特性包括赋予DML的操作、隐式事务控制,以及虚表引用。
CREATE TRIGGER Upd_JG ON dbo.sys_zzjg
FOR UPDATE
AS
if Update(jgid)
begin
update sys_yonghu set sys_yonghu.jgid=i.jgid
from sys_yonghu Sr,deleted d
,inserted i where Sr.jgid=d.jgid
End
1.5创建用户自定义函数
主要实现定制的业务逻辑。CREATE命令之后是函数名,函数名后的括号中包含对一个或多个参数的引用。每个参数后跟数据类型。Returns关键字后的文本表名函数返回的数据类型。
2.数据检索
DML(Data Manipulation Language)数据操纵语言。
子句
解释
SELECT
后跟一组列的列表,或者一个星号,表示要返回所有的列
FROM
后跟一个表或视图的名字,或者带有连接表达式的多个表
WHERE
后跟过滤规则
ORDER BY
后跟一组列的列表,用于对这些列进行排序
2.1列的选择
SELECT yhid,yhmc FROM Sys_Yonghu order by yhid
返回yhid,yhmc对应的列。用(*)来代表所有列执行查询会降低处理器的效率,一般尽量不是用(*)来返回所有列数据。
在执行多表查询的时候,如果表之间有相同名称的列,必须制定所属表。例如上例的yhid为Sys_Yonghu.yhid
2.2列的别名
别名的设置主要方便业务层,数据层编码人员对列明的理解和描述。常见别名方法有
语法
描述
列AS别名
列别名
别名=列
SELECT yhid as UserName FROM Sys_Yonghu
SELECT yhid UserName FROM Sys_Yonghu
SELECT UserName = yhid FROM Sys_Yonghu
2.3被计算和继承的列
SELECT UnitsInStock-UnitsOnOrder as margin from Products
Margin为被计算生成的新列
2.4行的过滤
行的过滤有两种方法:是用WHERE子句根据过滤条件来限制每个行,或使用TOP子句使列表中只包含指定数量的列。
2.5 WHERE子句
SQL Server在检索数据之前会先运行WHERE子句,节省内存和I/O资源。
select yhmc from sys_yonghu where sex='女'
2.51比较运算符
比值与限定值通常可总结为:一个值等于、小于或大于另一个值。
运算符
描述
=
等于。可用于几乎所有数据类型
<>或者!=
不等于
<
小于。用于数值与日期
>
大于
!<
不小于
!>
不大于
<=
小于等于
>=
大于等于
Like
用于对字符型的值进行通配符匹配
select yhmc from sys_yonghu where sfqy!=0
select yhmc from sys_yonghu where jgid like '0102%'
对于Like运算常用的通配符有
运算符
说明
%
0个或多个字符
_
单个字符
[]
在指定范围或集合内的单个字符
[^]
不在指定范围或集合内的单个字符
找出以某个值结束的字符串,只需把通配符放在字符串的开头
select jgid from sys_yonghu where jgid like '%02'
运行结果:0102
找出包含某个字符串的值,在开头和结尾使用通配符
select jgid from sys_yonghu where jgid like '%104%'
运行结果:0104
找出包含某个字符串的值,使用下划线
select jgid from sys_yonghu where jgid like '_104'
运行结果:0104
找出单个字符在指定范围或集合中的值,可以使用方括号
select jgid from sys_yonghu where jgid like '010[24]'
运行结果:0104,0102
在一个范围内搜索,在字母之间添加短横线
select jgid from sys_yonghu where jgid like '010[0-4]'
运行结果:0104,0102
搜索不包含某些字符的值,使用^符号
select jgid from sys_yonghu where jgid like '010[^4]'
运行结果:0102
查找不类似某规则的字段,使用NOT
select jgid from sys_yonghu where jgid not like '0102%'
运行结果:01,0104
2.52逻辑比较
逻辑门分为三种:与(And)、或(Or)、非(Not)
And运算符:如果整个表达式的结果是真,则表达式中的每个语句都必须是真。只有匹配where后面两个过滤器才能查询得到。
Or运算符:只要执行匹配任何一个条件,就会被返回。
NOT运算符:该运算符不是独立的,它是一个可以放在任何逻辑表达式前面的修饰符,能得到与结果相反的结果。NOT运算符通常效率比较低,SQL Server实际上将衔处理基本表达式,然后才提取不包含在原结果中的行。
select yhmc from sys_yonghu where jgid like '0102%' and Not sex='女'
2.53 NULL
Null值不等于任何值,甚至它自己。可用IS运算符来测试Null。也可以使用IS NOT来测试非NULL值。
select yhmc from sys_yonghu where yhkl is null
2.54被扩展的过滤技术
select ProductName from Products where UnitPrice>10 and UnitPrice<19
一般为日期和数值的范围匹配。
2.55 BETWEEN运算符
简化范围表达式,在值范围之间,并包括值范围的边界。
2.56 IN()函数
可也把一个字段与列表中的数值进行匹配。
elect ProductName from Products where UnitPrice in (10,11,12,18,19)
in函数也可以用于子查询。
2.57运算符优先级
NOT运算符最先被处理,其次是AND,然后是OR,最后才考虑运算符。
2.58使用括号
使用括号来分隔表达式,以制定运算符的优先次序。处理多个运算时,使用括号就不用关心运算符的正常优先级。
2.59结果排序
排序规则:如果希望行以某种顺序返回,就必须使用ORDER BY 子句来强制排序。ORDER BY 子句总是放在WHERE子句后面,它可以包含一个或多个列,每个列之间用括号分割。默认为升序ASC,如果需要降序则使用DESC
select ProductID,ProductName from Products where UnitPrice>18 order by ProductID DESC
2.510排在前面的值
返回排序排在前面的值,可以指定固定数量的行或者指定总行数的百分比。
select top 5 ProductID,ProductName from Products where UnitPrice>18 order by ProductID DESC
WITH TIES语句:把所有和最后一行相同的已排序记录都加到结果集中。
select top 5 WITH TIES UnitPrice from Products order by ProductID DESC
百分比:用百分比来指定整个结果集的百分比,SQL SERVER对记录进行计算,并圆整为最近的整数。
select top 5 PERCENT UnitPrice from Products order by ProductID DESC
- 重温SQL Server(T-SQL语言基础)
- sql server T-SQL 基础
- SQL Server 2008技术内幕:T-SQL语言基础 笔记
- T-SQL语言基础
- T-sql 语言基础
- 重温SQL Server(SQL函数)
- SQL Server----语言基础
- SQL Server 2000 重温笔记
- SQL Server 2008技术内幕:T-SQL语言基础 笔记(转)
- Microsoft SQL Server 2008技术内幕:T-SQL语言基础 第二章课后练习答案
- 导图 SQL Server之SQL语言基础
- T-SQL 语言基础(一)
- SQL Server 2008 对 T-SQL 语言的增强
- SQL Server 2008对T-SQL语言的增强
- SQL Server 2008对T-SQL语言的增强
- SQL Server 2008 对 T-SQL 语言的增强
- SQL Server 2008 对 T-SQL 语言的增强
- SQL Server 之T-SQL语言的学习
- 设计模式之责任链模式(Chain of Responsibility)
- 设计模式之中介者模式(Mediator)
- 设计模式之享元模式(Flyweight)
- 设计模式之解释器模式(interpreter)
- 设计模式之访问者模式(Visitor1)
- 重温SQL Server(T-SQL语言基础)
- 当你开始正式学习建站之前,要做好哪些基本准备才能更好的坚持下去
- 重温SQL Server(SQL函数)
- 重温SQL Server(事务处理与高级查询)
- silverlight系列(Button、HyperlinkButton、Checkbox、Combox、ListBox、Slider、RadionButton)
- 你的眼神完美
- silverlight系列(Calender、DatePicker、TextBlock、ProgressBar、AutoCompleteBox、PasswordBox、TextBox)
- silverlight系列(DataGrid、DataPager、TreeView、MediaElement)
- silverlight系列(Grid、Border、Sharp、Brush)