sql代码1.docx
《sql代码1.docx》由会员分享,可在线阅读,更多相关《sql代码1.docx(19页珍藏版)》请在冰豆网上搜索。
sql代码1
--回顾我们之前的创建数据库和表的代码我们会发现
createdatabasemyOffice--创建数据库(默认创建的是C盘)
dropdatabasemyOffice--删除数据库
createdatabasemyOfficeonprimary--创建主数据库文件(可以创建到我们指定的地方)
(--每个数据库都有一个主数据库也是唯一的一个
name='myOffice_DB',
--命名方式有:
驼峰式例如stuName,stuId首字母小写,其他字母都大写。
--帕斯卡式例如StuInfo首字母全都大写
filename='D:
\lolly\myOffice_DB.mdf',--主数据库文件的后缀名是.mdf
size=5mb,--初始大小最小5mb
maxsize=1000mb,--最大范围
filegrowth=15%--文件的自动增长(不能大于最大范围)
),(
name='myOfficeNDB',---创建此数据库文件,一个数据库可以有多个次数据库文件
filename='D:
\lolly\myOfficeNDB.ndf',--次数据库的文件的后缀名为.ndf
size=5mb,
maxsize=500mb,
filegrowth=30mb
)
logon--创建日志文件(一个数据库可以有多个日志文件)
(
name='myOffice_log',--文件的名称
filename='D:
\lolly\myOffice_log.ldf',--日志文件的后缀名是.ldf
size=2mb,--初始大小
maxsize=1000mb,--最大尺寸
filegrowth=20mb--文件的自动增长
)
go
--修改数据库
alterdatabasemyOffice
modifyfile(name=myOffice_DB,size=40mb,maxsize=400mb)
go
usemyOffice--使用数据库
go
sp_spaceused--存储过程
createtablestudent--创建表
(
stuIdintprimarykeyidentity(1,1)notnull,--主键和自动增长列
stuNamevarchar(8)notnull
)
--DQL
select*fromstudent--查询所有信息
--===DML
insertintostudentvalues('wangwu')--插入语句
insertintostudentvalues('lisi')
insertintostudentvalues('zhangsan')
insertintostudentvalues('zhaoliu')
--更新语句
updatestudentsetstuName='王小六'wherestuId=3
--删除表数据
deletestudentwherestuId=1
--------------------------注视,单行注视和多行注释
/*
在创建表的时候我们也是需要考虑数据类型的,分为
结构化,半结构化,非结构化的数据类型
*/
--数据类型--数值,字符串,日期和时间,二进制
declare@anvarchar(4)
set@a='a'
select@aas'日期'
--charvarcharncharnvarchar的区别
--查询数据2.5页
/*
char:
它用于将固定长度字符数据储存在变量中,
char(50)---10-----40(浪费)
varchar:
它用于将可变长度字符数据存储在变量中,
它在变量声明的时候不保存内存空间。
相反
它根据存储在变量中的数据大小分配内存。
varchar(100)50就生成50个字符的空间,
不会有内存损失
nchar:
它支持固定长度最长为4000个字符的unicode数据。
它需要的存储空间是char数据类型所需存储空间的两倍。
nvarchar:
它分配类似于varchar数据类型的内存。
但是,它只存储unicode字符。
他需要的是varchar所需存储空间的两倍。
其中所说的Unicode是国际码,表示字符的行业通用计算标准。
它为每个字符分配唯一的数字,以使此类字符在不同的平台和语言中
以相同方式表示。
-------国际化(WEB)
*/
-----检索特定属性----------------------------------------------
USEAdventureWorks--数据库中不区分大小写,但是规则是以大写为准
GO
SELECT*FROMHumanResources.Employee--回顾查询全部信息
GO
selectcount(*)fromHumanResources.Employee
GO
--查看部分列信息
SELECTk.EmployeeID,k.NationalIDNumber
FROMHumanResources.Employeeask
go
SELECTEmployeeID,ContactID,LoginID,Title
FROMHumanResources.Employee
GO
--使用AS起别名
--首先给表起别名
/*SELECT*FROMHumanResources.DepartmentASa
select'姓名'=a.Name,'----------->''指示','fff'=a.GroupName
fromHumanResources.Departmenta
selectt.GroupName+'----->'+t.Name'看一看'
fromHumanResources.Departmentt
*/
--部分列信息查看可以使用多种方法
--使用as其别名通过‘.’操作符调用对应的列名比较方便。
selecta.DepartmentID,a.GroupName
fromHumanResources.Departmentasa
go
--给类添加列头
selecta.DepartmentID'部门编号',a.GroupName'部门名称'
fromHumanResources.Departmenta--此时as可以省略
go
--小练习,查询员工表employee表中的所有信息(查询数据2.9)
--小练习,并查询任意三列信息
--小练习,给这三列分别添加中文列头
--通过字面值来进行标记显示字面值将在单独的列中打印
--字面值用于显示用途
--1
SELECT'部门编号'=DepartmentID,'DepartmentName'=Name
FROMHumanResources.Department
--2
SELECTDepartmentID'DepartmentNumber',Name'DepartmentName'
FROMHumanResources.Department
--3
SELECTDepartmentIDAS'DepartmentNumber',NameAS'DepartmentName'
FROMHumanResources.Department
go
----字面值-----自定义显示----显示用途
SELECTEmployeeID,'Designation-------》',Title
FROMHumanResources.Employee
go
--并置输出中的文本值--字符串类型
SELECTName+'departmentcomesunder--->'+GroupName+'group'
ASDepartment
FROMHumanResources.Department
selecte.ManagerID+e.EmployeeID
fromHumanResources.Employeee
go
/*
我们已经学过了关系运算符,现在开始学习
其它运算符包括
算术运算符,
比较运算符,
逻辑运算符,
范围运算符
*/
--算数运算符都能在
--select语句中以任何组合形式和数字常量一起使用
SELECTEmployeeID,Rate,Per_Day_Rate=8*Rate
FROMHumanResources.EmployeePayHistory
go
--比较运算符---
--在where子句中可以使用比较运算符来指定条件
--但是不能用在text,ntext,image
--数据类型表达式中
SELECT*FROMHumanResources.Department
WHEREGroupName<>'ResearchandDevelopment'
go
SELECTEmployeeID,NationalIDNumber,Title,VacationHours
FROMHumanResources.Employee
WHEREVacationHours<5
go
--逻辑运算符--检索满足一个或者多个条件的记录
SELECT*FROMHumanResources.Department
WHERE
GroupName='Manufacturing'ORGroupName='QualityAssurance'
go
--范围运算符--BETWEENAND
SELECTEmployeeID,VacationHours
FROMHumanResources.Employee
WHEREVacationHoursBETWEEN20AND50
go
SELECTEmployeeID,Title,LoginID
FROMHumanResources.Employee
WHERETitleIN('Recruiter','Stocker')
go
--模糊查询
SELECT*FROMHumanResources.Department
WHERENameLIKE'Pro%'
go
SELECTEmployeeID,EndDate
FROMHumanResources.EmployeeDepartmentHistory
WHEREEndDateISNULL
go
SELECTSalesPersonID,ISNULL(SalesQuota,0.00)AS'SalesQuota'
FROMSales.SalesPerson
go
SELECTEmployeeID,COALESCE(ResidenceOffice,Mobile_Number)
ASContact_NumberFROMPerson.ContactType
go
SELECTGroupName,DepartmentID,Name
FROMHumanResources.Department
ORDERBYGroupName,DepartmentID
go
SELECTTOP10*FROMHumanResources.Employee
go
-------2012新特征-----------------------------------------------------
SelectEmployeeID,NationalIDNumber,ContactID,HireDate
fromHumanResources.EmployeeOrderByEmployeeID
OFFSET15ROWSFETCHNEXT10ROWSONLY
go
SELECTDISTINCTTitleFROM
HumanResources.Employee
WHERETitleLIKE'PR%'--DISTINCT后面跟多个列名
go
-----------------------------------------------------------第二章---------------------
--内置函数
selectGETDATE()--内置函数
SELECThost_id()as'HostID'--系统函数
go
--排名函数
SELECTGroupName,DepartmentID,Name
FROMHumanResources.Department
ORDERBYGroupName,DepartmentID
--使用函数对记录进行排名
SELECT*FROMHumanResources.EmployeeASHE
go
SELECTEmployeeID,NationalIDNumber,ContactID,HireDate
FROMHumanResources.Employee
ORDERBYEmployeeID
OFFSET15ROWSFETCHNEXT10ROWSONLY
go
--检索不重复数据
SELECT*FROMHumanResources.EmployeeWHERETitleLIKE'PR%'
go
SELECTCOUNT(*)FROMHumanResources.EmployeeWHERETitleLIKE'PR%'
go
---字符串函数
SELECT'DepartmentName'=Upper(Name),DepartmentID,GroupName
FROMHumanResources.Department--以大写的形式显示
SELECT'DepartmentName'=XXX(xxx),DepartmentID,GroupName
FROMHumanResources.Department--以大写的形式显示
--使用转换函数
--声明变量和常量的概念---已知数和未知数的区别
DECLARE@ggeography;
SET@g=geography:
:
Parse('LINESTRING(-122.36047.656,-122.34347.656)');
SELECT@g.ToString()
--=检索特定位置中的属性=
SelectEmployeeID,NationalIDNumber,ContactID,HireDate
fromHumanResources.Employee
OrderByEmployeeIDOFFSET15ROWSFETCHNEXT10ROWSONLY
-----------------------
SELECTTOP3*FROMSales.SalesPersonWHEREBonusBETWEEN4000AND6000
SELECTEmployeeID,upper(Title)ASDesignation,datediff(yy,Birthdate,getdate())ASAge
FROMHumanResources.EmployeeWHERETitle='MarketingManager'ORTitle='MarketingSpecialist'
go
SELECTSalesOrderID,ProductID,'AverageOrderQuantity'=avg(OrderQty)FROMSales.SalesOrderDetail
GROUPBYProductID,SalesOrderID
go
--使用日期函数--
SELECTGETDATE()
go
SELECTDATEDIFF(YY,BirthDate,GETDATE())as'age'
FROMHumanResources.Employee
go
SELECTTitle,DATEPART(YY,HireDate)AS'YEAROFJOINING'
FROMHumanResources.Employee
go
/*SELECTRegion,Department,AVG(SAL),
AverageSalary
FROMEmpTableGROUPBYGROUPINGSETS
(
(Region,Department),
(Region),
(Department)
)
*/
--------------------------上机练习----------------------
--1.--参考表Sales.Customer需要的知识点在书--查询数据2.9
--查询表里的全部数据
SELECT*FROMSales.Customer
selectcount(c.CustomerID)fromSales.Customerc
SELECTdistinct(s.TerritoryID)FROMSales.Customers
SELECTcount(distinct(s.TerritoryID))FROMSales.Customers
--2.
SELECT'CreditCardID'=CreditCardID,'CreditCardType'=CardType,'CreditCardNumber'=CardNumber,'ExpiryYear'=ExpYearfromSales.CreditCard
--3.
SELECTCustomerID,AccountNumberFROMSales.CustomerWHERETerritoryID=4
--4.
SELECT*FROMSales.SalesOrderDetailWHERELineTotal>2000.00
--5-.
SELECT*FROMSales.SalesOrderDetailWHEREProductID=843
--6.
SELECT*FROMSales.SalesOrderHeader
WHEREOrderDate='06-06-2004'
--7.
SELECT'OrderID'=SalesOrderID,'OrderQuantity'=OrderQty,
'UnitPrice'=UnitPrice,'TotalCost'=OrderQty*UnitPriceFROMSales.SalesOrderDetail
--8
SELECT*FROMSales.SalesOrderDetail
WHERELineTotalBETWEEN2000AND2100
--9
SELECTName,CountryRegionCode,SalesYTDFROMSales.SalesTerritoryWHERETerritoryID=1
--10
SELECT*FROMSales.SalesOrderHeaderWHERETaxAmt>=10000
--11
SELECT*FROMSales.SalesTerritoryWHERENameIN('Canada','France','Germany')
--12
SELECT'SalesPersonID'=SalesPersonID,'TerritoryID'=TerritoryIDFROMSales.SalesTerritoryHistoryWHERETerritoryID=2ORTerritoryID=4
--13
SELECT*FROMSales.CreditCardWHERECardType='Vista'ANDExpYear='2006'
--14
SELECT*FROMSales.SalesOrderHeaderWHEREShipDate>'2004-07-12'
--15
SELECT'OrderNumber'=SalesOrderID,'OrderDate'=OrderDate,Status,'TotalCost'=TotalDueFROMSales.SalesOrderHeader
WHEREOrderDate='07-01-2001'ANDTotalDue>10000
--16
SELECT*FROMSales.SalesOrderHeaderWHEREOnlineOrderFlag=1
--17
SELECT'OrderID'=SalesOrderID,'TotalDue'=TotalDueFROMSales.SalesOrderHeaderORDERBYTotalDueDESC
--18
SELECTSalesOrderID,TaxAmtFROMSales.SalesOrderHeader
WHERETotalDue<2000
ORDERBYTotalDueASC
--19
SELECTSalesOrderID,TotalDueFROMSales.SalesOrderHeader
ORDERBYTotalDueASC
--20
SELECT*FROMSales.CurrencyWHERENameLIKE'%Dollar%'
--21
SELECT*FROMSales.SalesTerritoryWHERENameLIKE'N%'
--22
SELECT'SalesPersonID'=SalesPersonID,'TerritoryID'=TerritoryID,'SalesQuota'=SalesQuotaFROMSales.SalesPersonWHERESalesQuotaISNOTNULL
--23
SELECTTOP3*FROMSales.SalesPersonORDERBYbonusDESC
--24
SELECT*FROMSales.StoreWHERENameLIKE'%bike%'
--25
SELECTDISTINCTCardTypeFROMSales.CreditCard
--26
SelectEmployeeId,LogInId,Title
fromHumanResources.Employee
OrderByEmployeeI