Sql2005应用
来源:互联网 发布:网络歌手格子兮照片 编辑:程序博客网 时间:2024/05/03 18:59
–判断存储过程是否存在,sysobjects对象中查询,条件是p(produce),和存储过程的名字
–默认设置的情况下创建数据库
–指定新创建的数据库:名字,文件名,大小,最大容量,增加速度
–设置日志文件
-数据库快照
–创建表
–创建临时表
–创建程序集
–程序集的名称.[ 命名空间.类名 ]
EXTERNAL NAME EmailAddress.[EmailNameSpace.EmailClass]
—可以查查 索引的类型
–非群集索引,当Create Index语句中没有指定关键字时默认使用nonclustered模式
–索引中包含的列,我们可能经常会发现要查询表中的非键列,
–SQL Server 2005允许在非群集索引中包含非键列
–群集索引,SQL Server只允许你对每个表创建一个群集索引
–UNIQUE索引,
–索引视图
–XML索引
———————–索引的名字 ——————————在该列上进行索引
CREATE INDEX IdxTerritoryID ON Sales.SalesPerson (TerritoryID)
———————–修饰索引的
CREATE NONCLUSTERED INDEX IdxTerritoryID_Date
ON Sales.SalesPerson (TerritoryID)
INCLUDE (ModifiedDate)
CREATE CLUSTERED INDEX IdxPersonTerr
ON Sales.SalesPerson (SalesPersonID, TerritoryID) —–在两列上进行索引
–你可以查询数据类型为xml的列内容中的xml部分,分为:主索引和副索引
–主索引覆盖列中的所有元素
–副索引覆盖到路径、值和属性
CREATE PRIMARY XML INDEX IdxXmlData ON Sales.SalesPerson(xml_Data)
————————-OrderQty为列名,或者别名数据类型,
–下面的语句限制了,指定了该列的默认值
CREATE DEFAULT OrderQty AS ‘100′
——————————————–OrderQty为列名,或者别名数据类型
–指定该列所能接受的值
CREATE RULE OrderQty
AS
@list IN (’100′, ‘250′, ‘500′)
———————-创建试图
–保存关于视图的几个系统表
–sys.view
–sys.columns
–sys.sql_modules
–sys.sql_dependencies
CREATE VIEW StorePersonnel
AS SELECT SalesPersonID, Name FROM AdventureWorks.Sales.Store
WHERE SalesPersonID > 250
————————-同名对象——————————————————-
–同名对象是可以为您的对象创建的别名,
–同名对象可以帮助简化远程对象,或者另一个数据库或者模式中的对象的命名
–同名对象允许你调换底层的对象,而不会影响引用这些对象的代码
CREATE SYNONYM RetailLocation FOR AdventureWorks.Sales.Store
CREATE PROCEDURE Sales.usp_GetSalesPerson
AS
–as后面是存储过程的主程序
SELECT SalesPersonID, Name FROM Sales.Store
CREATE PROCEDURE Sales.usp_GetOneStore
(@InID int,
@OutName nvarchar(50) OUTPUT)
AS
Set @OutName =
(SELECT Name
FROM Sales.Store
WHERE CustomerID = @inID)
CREATE ASSEMBLY usp_GetSalesPerson
FROM ‘C:/temp/usp_GetSalesPerson.dll’
CREATE PROCEDURE usp_GetSalesPerson
EXTERNAL NAME usp_GetSalesPerson.
[usp_GetSalesPerson.StoredProcedures].usp_GetSalesPerson
–创建函数
–创建函数时,需要:1、指定函数的名称。2、指定Returns子句
——-自定义函数,根据返回值来区分的话属于标量函数。返回的是普通类型
CREATE FUNCTION ufnGetHouseName
( @House int )
RETURNS char(50) ———返回值—-函数和存储过程的区别
AS
–as后面是主函数的内容
BEGIN
RETURN
(SELECT HouseName FROM Sales.Warehouse WHERE HouseID > @House)
END
——–自定义函数,根据返回值来区分的话属于表值函数,返回一个Table类型
CREATE FUNCTION Sales.fn_PersonPerStore (@PersonID int)
RETURNS TABLE —-是Returns,不是Return
AS
–as后面是主函数的内容
RETURN
(SELECT * FROM Sales.Store WHERE SalesPersonID = @PersonID)
CREATE ASSEMBLY ufn_GetDataAsString
FROM ‘C:/temp/ufn_GetDataAsString.dll’
CREATE FUNCTION ufn_GetDateAsString()
RETURNS nvarchar(256)
EXTERNAL NAME
ufn_GetDateAsString.UserDefinedFunctions.ufn_GetDateAsString
———-传统的触发器,Insert,Alter,Drop Table 的时候进行触发的
———-Insert,alter,drop table
CREATE TRIGGER NoTableUpdate
ON DATABASE FOR DROP_TABLE, ALTER_TABLE ——FOR后面有几种情况????????????
AS
PRINT ‘DROP TABLE and ALTER TABLE statements are not allowed’
ROLLBACK
—————————————————————————————————————————
–安全性问题
–1、创建登陆
–创建登陆,可以让用户进行入服务器,对于访问服务器中的数据库,需要创建User
–4种登陆:SQL Server登陆;Windows登陆;证书映射登陆;非对称密钥映射登陆
CREATE LOGIN TecaGuest WITH PASSWORD = ‘iMsoiLwR4E’ MUST_CHANGE ——登陆后必须要进行密码的修改
—————————–凭证与登陆相关,使用Windows用户身份Teca01Guest,创建一个名为AlternateGuest的凭证
CREATE CREDENTIAL AlternateGuest WITH IDENTITY = ‘Teca01Guest’
—————————–使用上面的凭证创建一个登陆
CREATE LOGIN Teca02Guest WITH PASSWORD = ‘MBSim1tl’,
CREDENTIAL = AlternateGuest
–User对象用于让用户访问到服务器上的数据库,create user可以将新的数据库用户映射到登陆,你可以限制其映射
CREATE USER TecaRestrictedUser WITHOUT LOGIN —不允许映射任何登陆,不允许连接到其它数据库
–角色的创建
CREATE ROLE Payroll
–模式的创建
CREATE SCHEMA MonthSales
—————————-主密钥
–每个数据库都有一个主密钥
–它是数据库中所有密钥,证书和数据的根加密对象,
CREATE MASTER KEY ENCRYPTION BY PASSWORD = ‘l1y47l%9dwvyb2ayup9#$Nn’
—————————-非对称密钥,算法是RAS,位数有512,1024,2048
CREATE ASYMMETRIC KEY AsymKeySales WITH ALGORITHM = RSA_2048
—————————-证书的创建
CREATE CERTIFICATE TecaCert09
WITH SUBJECT = ‘TCert08 certificate in master database’,
EXPIRY_DATE = ‘01/31/2008′
CREATE LOGIN TCert08 FROM CERTIFICATE TecaCert08;
–对称密钥
CREATE SYMMETRIC KEY SymKeySales WITH ALGORITHM = AES_256
ENCRYPTION BY PASSWORD ‘cNIu284ry$bd%JDqT’
—-FULLTEXT全文本目录
—-CREATE FULLTEXT CATALOG语句文数据库创建一个全文本目录,他被限制为120个字符
—-并且不能在主数据库,模型数据库或者tempdb数据库中创建
CREATE FULLTEXT CATALOG StoreSearch
select Name
from Sale.Store
where contains(Name,’”*cycls*”‘)
————————————————————————————————————-
–基本检索操作Select
use adventureworks
go
SELECT * FROM HumanResources.Department
SELECT DepartmentID, Name FROM HumanResources.Department
Where DepartmentID = 7
—————设置列的别名
SELECT DepartmentID As ID, Name As Title FROM HumanResources.Department
Where DepartmentID BETWEEN 5 AND 10
—————对查询的结果,在按照Name列来排序
SELECT DepartmentID, Name
FROM HumanResources.Department
ORDER By Name
—————这个不用Distinct,就是按照GroupName列的内容不同进行分组,不会出现重复
SELECT GroupName, Count(*) As Departments
FROM HumanResources.Department
GROUP BY GroupName
SELECT Distinct GroupName
FROM HumanResources.Department
—————-#name,这种命名方式是建立一个临时的表
SELECT * INTO #TempDepartment
FROM HumanResources.Department
Where GroupName LIKE ‘%Ex%’
SELECT * FROM #TempDepartment
—————–声明一个变量的时候,变量的名字前面加@,在前面,类型在后面
DECLARE @MyTop INT
SET @MyTop = 5
SELECT TOP (@MyTop) DepartmentID, Name FROM HumanResources.Department
—检索的数据存在于两个表以上的情况
—使用的方法:
—
—JOIN的种类
SELECT e.EmployeeID, c.FirstName, c.LastName, e.Title,
d.Name AS Department
FROM HumanResources.Employee e
INNER JOIN Person.Contact c
ON c.ContactID = e.ContactID
INNER JOIN HumanResources.EmployeeDepartmentHistory h
ON e.EmployeeID = h.EmployeeID
INNER JOIN HumanResources.Department d
ON h.DepartmentID = d.DepartmentID
Where h.EndDate IS NOT Null
——————-使用UNION组合相关数据
——————-为了实现UNION,要组合的数据必须满足2个条件:
——————-1、列的数量和顺序必须相同。
——————-2、类型要一样
SELECT *
INTO dbo.FirstHalfDept
FROM HumanResources.Department
WHERE DepartmentID <= 8
GO
SELECT *
INTO dbo.SecondHalfDept
FROM HumanResources.Department
WHERE DepartmentID > 8
GO
SELECT *
FROM dbo.FirstHalfDept
UNION
SELECT *
FROM dbo.SecondHalfDept
ORDER BY DepartmentID;
GO
————————-join
SELECT FirstName, LastName, e.Title
FROM Person.Contact c
Join HumanResources.Employee e
On e.ContactID = c.ContactID
WHERE EmployeeID IN
(SELECT EmployeeID FROM
HumanResources.Employee WHERE Title = ‘Tool Designer’)
DECLARE @ThisDept INT
DECLARE DeptCursor CURSOR FOR —-注意一下,声明游标的格式,要紧跟一个Select语句
SELECT DepartmentID from HumanResources.Department——游标所操作的行就是Select语句定义的
OPEN DeptCursor ————–在定义游标之后,我们使用Open语句将游标打开
WHILE @@FETCH_STATUS = 0 —遍历游标
BEGIN
PRINT ‘Processing Department: ‘ + RTRIM(CAST(@ThisDept AS VARCHAR(10)))
FETCH NEXT FROM DeptCursor INTO @ThisDept
END
CLOSE DeptCursor
DEALLOCATE DeptCursor
USE AdventureWorks
WITH EmployeeChart(EmployeeID, ManagerID, Title)
AS
(SELECT EmployeeID, ManagerID, Title
FROM HumanResources.Employee
WHERE EmployeeID = 3
UNION ALL
SELECT L2.EmployeeID, L2. ManagerID, L2.Title
FROM HumanResources.Employee AS L2
JOIN EmployeeChart
ON L2.ManagerID = EmployeeChart.EmployeeID)
SELECT * FROM EmployeeChart
SELECT VendorID, [244] AS POCount1, [231] AS POCount2, [266] AS POCount3
FROM
(SELECT PurchaseOrderID, EmployeeID, VendorID
FROM Purchasing.PurchaseOrderHeader) p
PIVOT
(
COUNT (PurchaseOrderID)
FOR EmployeeID IN
( [244], [231], [266] )
) AS pvt
ORDER BY VendorID
- Sql2005应用
- sql2005增强功能综合应用
- SQL2005
- sql2005
- SQL2005
- SQL2005
- sql2005
- SQL2005
- sql2005
- 推荐一个 SQL2005 应用常见问题解答网站
- SQL2005/2008中的CTE应用--递归查询
- SQL2005/2008中的CTE应用--递归查询
- SQL2005/2008中的CTE应用--递归查询
- SQL2005/2008中的CTE应用--递归查询
- SQL2005/2008中的CTE应用--递归查询
- SQL2005/2008中的CTE应用--递归查询
- SQL2005/2008中的CTE应用--递归查询
- SQL2005-深入了解SSIS中记录集的应用
- 派生类 构造函数
- undefined reference to `__aeabi_unwind_cpp_pr0'
- EBS中lookup设置
- 6410开发版烧录Android映像 && IMG说明 && MTK平台解包和打包 boot.img/system.img
- Android porting (s3c6410)
- Sql2005应用
- [转载]tslib-1.4交叉编译详细笔记
- wince6.0 printf VS console window
- 详解Linux命令行下常用svn命令
- java性能优化技巧
- 如何 使用Kubuntu的Windows文件共享
- 网站优化技巧:关键词该放在网页的什么地方 网页教学网出处
- 创建线程的方法一:继承Thread类
- 最简单的硬盘安装方法:win7 硬盘安装工具 nt6 hdd installer