SQL Server 2008基础教程 第七章 操纵数据
来源:互联网 发布:2017年京东抢购软件 编辑:程序博客网 时间:2024/04/27 03:44
创建books表
USE ElecTrravelCom
CREATE TABLE books(
ISBN NVARCHAR(128) NOT NULL,
title NVARCHAR(128) NOT NULL,
pressName NVARCHAR(32) NULL,
page INT NULL,
price DECIMAL (10,2) NULL,
publishDate DATETIME
)
GO
insert语句
INSERT INTO table_or_view_name
(column_list)
VALUES (expression)
向表中插入部分列的数据
USE ElecTravelCom
INSERT INTO books(title,pressName,ISBN)
VALUES ('N','数据库设计与开发教程',
‘N’,'清华大学出版社',
‘7-302-09350-9’)
GO
使用DEFAULT VALUES 子句
USE ElecTravelCom
INSERT INTO books
DEFAULT VALUES
GO
INSERT SELECT
USE ElecTravelCom
INSERT INTO books (ISBN,title,price)
SELECT productNumber,Name,ListPrice
FROM AdventureWorks,Production.Product
GO
使用BULK INSERT语句
USE ElecTravelCom
BULK INSERT ElecTravelCom.dbo.books
FROM 'C:\Temp\ch07.txt'
WITH (
FIELDTERMINATOR = ',',
ROWTERNINATOR = '\n')
GO
----------------------------------------------------------------------------------------------------------------------------------
UPDATE 语句
UPDATE语句的基本语法形式
UPDATE table_or_view_name
SET column_name = expression
WHERE search_condition
在UPDATE语句中使用FROM子句
USE AdventureWorks
UPDATE Sales.SalesPerson
SET SalesYTD = SalesYTD + SubTotal
FROM Sales.SalesPerson sp
JOIN Sales.SalesOrderHeader so
ON sp.SalesPersonID = so.SalesPersonID
AND so.OrderDate = ( SELECT MAX(OrderDate
FROM sales.SalesOrdereader
WHERE SalesPersonID = sp.SalesPersonID)
)
GO
----------------------------------------------------------------------------------------------------------------------------------
删除数据
DELETE
FROM table_or_name
WHERE search_condition
删除表中的数据
USE ElecTravelCom
DELETE FROM books
WHERE DATEDIFF (
YEAR ,
publishDate,GETDATE())> 5
GO
最基本的检索语句(网络显示形式)
USE AdventrueWorks
SELECT *
FROM Production。Product
GO
SELECT '产品 编码' = ProductNumber
Name AS 产品名称,
safetyStockLevel SSL
FROM Production.Product
GO
使用算术运算符
USE AdventureWorks
SELECT ProductNmuber ,
Name,
SSL = SafetyStockLevel,
minSSL = SafetyStockLevel * 0.81,
maxSSL = safetyStockLevel * 1.29
FROM Production.Product
GO
使用数学函数
SELECT '圆周率值' = PI(),
'PI/2 的余弦值' = SIN(PI() / 2.0)
SELECT 'PI/4的余弦值' = COS(PI()/4.0),
'PI/4正切值' = TAN(PI()/4.0)
GO
使用字符串函数
USE AdventureWorks
SELECT 'PRODUCT and ITS NUMBER' = 'The number of' + UPPER(SUBSTRING(Name, 1, 3)) + ‘ product is ’ + ProductNmber
FROM Production.Product
GO
使用 ALL 关键字
USE AdventureWorks
SELECT ALL Color
FROM Production.Product
GO
使用DISTINCT关键字
USE AdventureWorks
SELECT DISTINCT Color
FORM Production.Product
GO
使用一个列进行排序
USE AdventureWorks
SELECT Name,safetyStockLevel, ReorderPoint,StanddardCost
FROM Production.Product
ORDER BY SafetyStockLevel
使用3个列进行排序
USE AdventureWorks
SELECT Name,StandardCost,ListPrice,
SafetyStockLevel, ReorderPoint
FROM Production.Product
ORDER BY StandardCost DESC, ListPrice, SafetyStockLevel
GO
使用TOP(1) PERCENT 子句
USE AdventureWorks
SELECT TOP(1) SELECT PERCENT Name,StandardCost
FROM Production.Product
ORDER BY StandardCost DESC
GO
使用TOP(1) PERCENT WITH TIES 子句
USE AdventureWorks
Select TOP(1) PERCENT WITH TIES Name,StandardCost
FROM Production.Product
ORDER BY StandardCost DESC
GO
复合搜索条件
USE AdventureWorks
SELECT Name,StandardCost,ListPrice
FROM Production.Product
WHERE Name LIKE '%Ball'
OR StandardCost > 2000
GO
在SELECT子句中使用聚合函数
USE AdventureWorks
SELECT 表中数据量 = COUNT(*),
表中数据量 = COUNT(StandardCost),
表中标准成本不同的数据量 = COUNT(DISTINCT StandardCost),
表中产品颜色非空的数据量 = COUNT(Color)
FROM Production.Product
SELECT 标准成本的最大值 = MAX(StandardCost),
标准成本的最小值 = MIN(StandardCost),
标准成本的平均值 = AVG(StandardCost),
标准成本的标准偏差 = STDEV(StandardCost),
标准成本的方差 = VAR(StandardCost)
FROM Production.Prodect
GO
使用没有BY子句的COMPUTE子句
USE AdventureWorks
SELECT CustomerID,OrderDate,
FROM Sales.SalesOrderHeader
ORDER BY OrderDate
COMPUTE SUM(SubTotal), SUM(TotalDue)
使用有BY子句的COMPUTE子句
USE AdvenrureWorks
SELECT Sales[ersonID,CustomerID,OrderDate,SubTotal,TotalDue
FROM Sales.SalesOrderHeader
ORDER BY SalesPersonID, OrderDate
COMPUTE SUM(SubTotal),SUM(TotalDue), BY SalesPersonID
GO
没有分组 条件的分组语句
USE AdventureWorks
SELECT Color,
颜色相同产品的数量 = COUNT(*),
颜色相同产品的最大安全库存量 = MAX(SafetyStockLevel)
FROM Production.Product
WHERE Color IS NOT NULL
GROUP BY Color
GO
有分组条件的分组语句
USE AdventureWorks
SELECT Color,
颜色相同产品的数量 = COUNT(*),
颜色相同产品的最大安全库存量 = MAX(SafetyStockLevel)
FROM Production.Product
GROUP BY Color
HAVING COUNT(*) > 25
简单的分组
USE ElecTravelCom
SELECT ItemName,Color,Amount = SUM(Quantity)
FROM InvenTory
GROUP BY ItemName,Color
GO
使用ROLLUP关键字的分组
USE ElecTravelCom
SELECT ItemName,Color,Amount = SUM(Quantity)
FROM Inventory
GROUP BY ItemName,Color WITH ROLLUP
GO
使用CUBE关键字的分组
USE AdventureWorks
SELECT ItemName,Color,Amount = SUM(Quantity)
FROM Inventory
GROUP BY ItemName,Color WITH CUBE
GO
交叉连接
USE AdventureWorks
SELECT PP.ProductID,Name,ProductNumber,
LocationID,Quantity
FROM Production.Product PP
CROSS JOIN Production.ProductInventory PPI
GO
内连接
USE AdventureWorks
SELECT PP.ProductID,Name,ProductNumber,
SafetyStockLevel,
ReorderPoint,LocationID, Quantity
FROM Production.Product PP
INNER JOIN Production.ProductInventory PPI
ON PP.ProductID = PPI.ProductID
GO
左外连接
USE AdventureWorks
SELECT PP.Name,SOD.SalesOrderID
FROM Production.Product PP
LEFT OUTER JOIN Sale.SalesOrderDetail SOD
ON PP.ProductID = SOD.ProductID
ORDER BY PP.Name
GO
使用EXCEPT运算符
USE ElecTravelCom
SELECT col1 FROM T1
EXCEPT
SELECT col1 FROM T2
GO
EXCEPT运算符
EXCEPT运算符通过包括所有在TABLE1中但不在TABLE2中的行并消除所有重复行而派生出一个结果表。
当ALL随EXCEPT一起使用时(EXCEPT ALL)不消除重复行。
公用表表达式
CTE是定义在SELECT INESRT UPDATE DELETE 语句中临时命名的结果集,
CTE也可以用在视图的定义中。
在CTE中,可以包括对自身的引用,因此这种表达式也被称为递归CTE
USE AdventureWorks
WITH AmountOrder(SalesPersonID,AmountOrderOfPerson,MaxDate)
AS (SELECT SalesPersonID,COUNT(*),MAX(OrderDate)
FROM Sales.SalesOrderHeader
WHERE SalesPersonID IS NOT NULL
GROUP BY SalesPersonID )
SELECT SalesPersonID,AmountOrderOfPerson,MaxDate
FROM AmountOrder
ORDER BY SalesPersonID
GO
使用递归的CTE
USE AdventureWorks
WITH DirectReports(ManagerID, EmplyeeID,0 AS EmployeeLevel)
AS (SELECT ManagerID,EmployeeID, 0 AS EmplyeeLevel
FROM HumanResources.Employee
WHERE ManagerID IS NULL
UNION ALL
SELECT e.ManagerID, e.EmplyeeID, EmployeeLevel + 1
FROM HumanResources.Employee e
INNER JOIN DirectReports d
ON e.ManagerID = d.EmployeeID )
SELECT ManagerID , EmployeeID, EmloyeeLevel
FROM DirectReports
GO
PIVOT和UNPIVOT是从Microsoft SQL Server 2005 开始新增的关系运算符,提供了一种把列数据转换为行数据的方式。
PIVOT运算符把表达式中某一列中的数据转换为输出中的多个列,UNPIVOT运算符则相反。
- SQL Server 2008基础教程 第七章 操纵数据
- 第七章:操纵数据--20130914
- Hadoop基础教程-第11章 Hive:SQL on Hadoop(11.6 HQL:DML数据操纵)(草稿)
- SQL Server 2008基础教程 第一章
- PL SQL 操纵数据
- SQL Server 2005基础教程
- 《Python数据分析基础教程:Numpy学习指南》- 速记 - 第七章
- sql server 2016 第七章 ch02
- Sql server 2005 操纵语句的笔记
- jQuery基础教程第七章学习
- Python 基础教程(第七章)
- SQL基础(3):数据操纵
- SQL数据定义、数据查询、数据操纵、数据控制
- T-SQL基础教程:数据生命周期
- 《Microsoft Sql server 2008 Internals》读书笔记--第七章Special Storage(1)
- 《Microsoft Sql server 2008 Internals》读书笔记--第七章Special Storage(2)
- 《Microsoft Sql server 2008 Internals》读书笔记--第七章Special Storage(3)
- 《Microsoft Sql server 2008 Internals》读书笔记--第七章Special Storage(4)
- Andriod开发配置
- 应用程序-特定 权限设置未将 COM 服务器应用程序(CLSID 为 {BA126AD1-2166-11D1-B1D0-00805FC1270E} )的 本地 激活 权限授予用户 NT AUTHOR
- ScrollView嵌套ListView冲突问题的最优解决方案
- 使用DOM读取XML值
- 京东典型广告推广源码示例一
- SQL Server 2008基础教程 第七章 操纵数据
- 错误: Conversion to Dalvik format failed: Unable to execute dex
- 18.一次性计划任务
- spring+mybatis
- Linux Shell 1>/dev/null 2>&1 含义
- 完全卸载mysql步骤
- Yii框架学习(一)—–Yii的使用、配置及gii使用示例
- poj 3667Hotel(经典线段树)
- Android之基于XMPP协议即时通讯软件(一)