Sql命令详解Word文件下载.docx
《Sql命令详解Word文件下载.docx》由会员分享,可在线阅读,更多相关《Sql命令详解Word文件下载.docx(21页珍藏版)》请在冰豆网上搜索。
例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应
使用下面语句格式加以限定:
SELECTusername,citytable.cityid
FROMusertable,citytable
WHEREusertable.cityid=citytable.cityid
在FROM子句中可用以下两种格式为表或视图指定别名:
表名as别名
表名别名
例如上面语句可用表的别名格式表示为:
SELECTusername,b.cityid
FROMusertablea,citytableb
WHEREa.cityid=b.cityid
SELECT不仅能从表或视图中检索数据,它还能够从其它查询语句所返回的结果集合中查询数据。
SELECTa.au_fname+a.au_lname
FROMauthorsa,titleauthorta
(SELECTtitle_id,title
FROMtitles
WHEREytd_sales>
10000
)ASt
WHEREa.au_id=ta.au_id
ANDta.title_id=t.title_id
此例中,将SELECT返回的结果集合给予一别名t,然后再从中检索数据。
(三)使用WHERE子句设置查询条件
WHERE子句设置查询条件,过滤掉不需要的数据行。
例如下面语句查询年龄大于20的数据:
FROMusertable
WHEREage>
20
WHERE子句可包括各种条件运算符:
比较运算符(大小比较):
>
、>
=、=、、!
、!
<
范围运算符(表达式值是否在指定的范围):
BETWEEN…AND…
NOTBETWEEN…AND…
列表运算符(判断表达式是否为列表中的指定项):
IN(项1,项2……)
NOTIN(项1,项2……)
模式匹配符(判断值是否与指定的字符通配格式相符):
LIKE、NOTLIKE
空值判断符(判断表达式是否为空):
ISNULL、NOTISNULL
逻辑运算符(用于多条件的逻辑连接):
NOT、AND、OR
1、范围运算符例:
ageBETWEEN10AND30相当于age>
=10ANDage、>
=、、!
。
3、自然连接:
在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询
结果集合中所包括的列,并删除连接表中的重复列。
例,下面使用等值连接列出authors和publishers表中位于同一城市的作者和出版社:
FROMauthorsASaINNERJOINpublishersASp
ONa.city=p.city
又如使用自然连接,在选择列表中删除authors和publishers表中重复列(city和state):
SELECTa.*,p.pub_id,p.pub_name,p.country
(二)外连接
内连接时,返回查询结果集合中的仅是符合查询条件(WHERE搜索条件或HAVING条件)和连接条件
的行。
而采用外连接时,它返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左外
连接时)、右表(右外连接时)或两个边接表(全外连接)中的所有数据行。
如下面使用左外连接将论坛内容和作者信息连接起来:
SELECTa.*,b.*FROMluntanLEFTJOINusertableasb
ONa.username=b.username
下面使用全外连接将city表中的所有作者以及user表中的所有作者,以及他们所在的城市:
SELECTa.*,b.*
FROMcityasaFULLOUTERJOINuserasb
(三)交*连接
交*连接不带WHERE子句,它返回被连接的两个表所有数据行的笛卡尔积,返回到结果集合中的数
据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。
例,titles表中有6类图书,而publishers表中有8家出版社,则下列交*连接检索到的记录数将等
于6*8=48行。
SELECTtype,pub_name
FROMtitlesCROSSJOINpublishers
ORDERBYtype
第一部分创建和管理数据库
一、
创建数据库:
1、
格式:
Createdatabase数据库名
On[Primary]
(Name=逻辑文件名,
Filename=物理文件名,
Size=文件起始大小,
Maxsize=文件最大容量,
Filegrowth=文件增量),
……
Filegroup文件组名
Filegrowth=文件增长容量)
……
Logon
说明:
(1)Primary:
指定下面文件为主文件组的文件。
可省略。
(2)Filename:
指定文件的实际存储位置。
(3)Size:
指定文件的起始大小。
(4)Maxsize:
指定文件可达到的最大容量。
(5)Filegrowth:
定义的文件的增量。
文件的增量设置不能超过Maxsize设置。
可以指定一个确切的增长数值,也可以指定增长的百分比(起始值的百分比),默认为10%。
(6)Logon:
指定下面为日志文件。
2、
实例:
(1)创建只有一个数据文件和一个日志文件的数据库
Createdatabasestudent
OnPrimary
(Name=student_mdf,
Filename='
d:
\sql\student_mdf.mdf'
Size=2,
Maxsize=10,
Filegrowth=1
)
(Name=student_ldf,
\sql\student_ldf.ldf'
Size=1,
Maxsize=5,
(2)创建有多个数据文件和日志文件的数据库
Createdatabasescore
(Name=score_mdf,
\sqlserver\score_mdf.mdf'
Size=5MB,
Maxsize=50MB,
Filegrowth=5MB),
(Name=score_ndf1,
\sqlserver\score_ndf1.ndf'
Size=3MB,
Maxsize=30MB,
Filegrowth=20%),
(Name=score_ndf2,
\sqlserver\score_ndf2.ndf'
Size=6,
Maxsize=50,
Filegrowth=4)
(Name=score_ldf1,
\sqlserver\score_ldf1.ldf'
Size=8MB,
Maxsize=100MB,
(Name=score_ldf2,
\sqlserver\score_ldf2.ldf'
Size=10,
Maxsize=100,
Filegrowth=10)
(3)创建带有多个文件组的数据库
Createdatabasebook
(Name=book_mdf,
Filename='
\books\book_mdf.mdf'
Size=3,
Maxsize=30,
Filegrowth=3),
Filegroupgroup1
(Name=book_ndf1,
\books\book_ndf1.ndf'
Size=2MB,
Maxsize=20MB,
Filegrowth=25%),
Filegroupgroup2
(Name=book_ndf2,
\books\book_ndf2.ndf'
Size=4,
Filegrowth=4)
(Name=book_ldf1,
\books\book_ldf1.ldf'
Size=5,
Maxsize=40,
Filegrowth=5),
(Name=book_ldf2,
\books\book_ldf2.ldf'
Size=6,
Maxsize=60,
Filegrowth=30%)
二、
修改和删除数据库:
修改数据库:
(1)添加数据文件:
a)
Alterdatabase数据库名AddFile
(Name=逻辑文件名,
Filegrowth=文件增量)
[ToFileGroup文件组名]
b)
说明:
ToFileGroup:
指定添加的数据文件到哪个文件组中,该文件组必须存在,默认为主文件组。
c)
Alterdatabasestudent
addfile
(Name=student_ndf,
\sql\student_ndf.ndf'
Size=1,
Maxsize=5,
Filegrowth=1)
(2)添加日志文件:
Alterdatabase数据库名AddLogFile
AddLogFile
(Name=student_ldf1,
\sql\student_ldf1.ldf'
Filegrowth=15%)
(3)添加文件组:
Alterdatabase数据库名AddFilegroup文件组名。
AlterdatabasestudentAddFilegroupgroup1
向该文件组中添加文件
AlterdatabasestudentAddFile
(Name=student_ndf2,
\sql\student_ndf2.ndf'
Size=3,
Maxsize=30,
Filegrowth=3)
ToFilegroupgroup1
(4)修改文件(数据文件和日志文件):
Alterdatabase数据库名ModifyFile
[Size=新的文件大小,]
[Maxsize=将要达到的容量,]
[Filegrowth=修改后的增量])
修改数据文件和日志文件的格式是相同的,但逻辑文件名和物理文件名不能修改。
在修改文件时,必须指定文件的逻辑名,用来标识将要修改的文件。
而不必指定文件的物理名,否则将出现错误。
如果指定修改文件的Size,则新的文件大小必须比当前文件大小要大。
而修改文件的Maxsize和Filegrowth时,数值可以增大,也可以和原来的相同,也可以减小。
AlterdatabasestudentModifyFile
(Name=student_ldf1,
Filegrowth=20%)
(5)删除文件:
Alterdatabase数据库名RemoveFile文件名
不能删除主要数据文件和主要日志文件。
AlterdatabasestudentRemoveFilestudent_ldf1
(6)删除文件组:
Alterdatabase数据库名RemoveFilegroup文件组名
要删除的文件组中不能包含数据文件。
AlterdatabasestudentRemoveFilestudent_ndf2
AlterdatabasestudentRemoveFilegroupgroup1
删除数据库:
(1)
Dropdatabase数据库名
(2)
Dropdatabasestudent
三、
设置数据库选项:
SP_dboption数据库名[,‘选项名’[,ture|false]]
SP_dboption:
系统的存储过程,可以通过它设置数据库选项,它支持对所有
可用的数据库选项进行设置。
如果只设置{SP_dboption数据库名},那么将显示在本数据库中设置为True的选项。
如果设置{SP_dboption数据库名,‘选项名’},那么将显示指定的选项当前处于什么状态(ON或者OFF)
3、
将student数据库的readonly选项设置为True,即打开此选项。
SP_dboptionstudent,'
readonly'
'
true'
四、
压缩数据库:
有时,人们可能为预期有一定程度活动的数据库分配了太多的空间,当意识到分配了太多空间时,可能决定压缩分配的空间大小。
SQLSERVER提供三种可以压缩数据库大小的方法,autoshrink数据库选项,“企业管理器”和“数据库一致性检查器(DBCC)”命令。
使用DBCCShrinkdatabase压缩数据库:
DBCCShrinkdatabase命令在默认情况下会对数据库的数据和日志部分都进行压缩。
如果您只想减少数据和日志部分,则您必须首先压缩整个数据库,然后使用Alterdatabase语句来增加数据库的数据或日志部分。
a)、格式:
DBCCShrinkdatabase(数据库名,压缩后可使用的百分比,
[NOTRUNCATE|TRUNCATEONLY])
b)、说明:
NOTRUNCATE:
不会将可用的空间释放给操作系统,而是留给数据库
文件。
TRUNCATEONLY:
将数据文件未用的空间释放给操作系统。
c)、实例:
DBCCShrinkdatabase(student,20,TRUNCATEONLY)
使用“企业管理器”压缩数据库:
有两种方式:
在企业管理器中,选中要压缩的数据库,点击鼠标右键,点击属性,从弹出的“数据库属性”的对话框中选中“选项”标签,在复选框中选中“自动压缩”选项即可。
在企业管理器中,选中要压缩的数据库,点击鼠标右键,选中“所有任务”,
点击“收缩数据库”,填充相应的选项即可。
第二部分存储数据
一、数据类型:
指定列、数据存储参数和局部变量的数据特性。
数据按照数据类型存储在列中。
数据类型可以分为两大类:
系统数据类型:
是SQLSERVER支持的内置数据类型。
1)
字符型:
char、nchar、varchar、nvarchar、text、ntext。
char:
固定长度的非Unicode字符数据,最大的长度为8000字符。
nchar:
固定长度的Unicode数据,最大的长度为4000字符。
varchar:
可变长度的非Unicode数据,最大的长度为8000字符。
d)
nvarchar:
可变长度的Unicode数据,最大的长度为4000字符。
e)
text:
可变长度的非Unicode数据,最大的长度为2^31-1个字符。
f)
ntext:
可变长度的Unicode数据,最大的长度为2^30-1个字符
对于定义为char或nchar的列,SQLSERVER将用字符串来填满指定的字节数。
定义为varchar或nvarchar的列只存储输入的实际长度,可能舍去尾部空间。
SQLSERVER处理尾部空间,取决于SETANSI_PADDING,以及该列是固定长度还是可变长度。
根据SETANSI_PADDING值处理尾部空间
ANSI_PADDING
char和nchar
Varchar和nvarchar
ON
串被空格填充到列的长度
串未被空格填充到列的长度,尾部空间被保留
OFF
串未被空格填充到列的长度,尾部空间被截掉
2)日期和时间型:
smalldatetime、datetime。
smalldatetime:
从1900年1月1日到2079年6月6日,精确到1分钟。
datetime:
从1753年1月1日到9999年12月31日,精确到三百分之
一秒,即3.33毫秒。
3)数值型数据类型:
A、整型:
smallint、int、tinyint。
a)smallint:
从-2^15到2^15-1。
b)int:
从-2^31到2^31-1。
c)tinyint:
从0到255。
B、近似数字数据类型:
float和real。
a)float:
浮点精度数字数据,从-1.79E+308到1.79E+308。
b)real:
:
浮点精度数字数据,从-3.40E+308到3.40E+308。
C、精确数字数据类型:
decimal和numeric。
decimal:
不带符号的整数,按10进位。
numeric:
decimal(十近制)的同义词。
D、货币数据类型:
money和smallmoney。
money:
从-2^63到2^63-1,精确到每个货币单位的万分之一。
smallmoney:
从-214,748.3648到+214,748.3647,精确到每个货币单位的万分之一。
4)逻辑数据类型:
bit。
Bit:
整形数据,值为1或0。
用户自定义类型:
用户可以通过两个系统存储过程创建和删除用户定义类型。
(它们不是真正的新数据类型,而像是一种复合型数据类型或结构。
)Sp_addtype过程创建用户定义的数据类型,Sp_droptype过程删除定义的数据类型。
创建自定义的数据类型:
(1)、格式:
Sp_addtype自定义数据类型名,系统的数据类型,’[null|notnull]’
(2)、说明:
A、用户自定义的数据类型是基于系统的数据类型创建的。
B、[null|notnull]:
指定该列是否为空。
默认为null。
C、如果系统数据类型包括圆括弧,必须用引号把它括起来。
(3)、实例:
Sp_addtypebirthday,datetime,’notnull’
Createtablestu1(sidint,s