SQL语句命令.docx
- 文档编号:17779546
- 上传时间:2023-08-03
- 格式:DOCX
- 页数:20
- 大小:23.91KB
SQL语句命令.docx
《SQL语句命令.docx》由会员分享,可在线阅读,更多相关《SQL语句命令.docx(20页珍藏版)》请在冰点文库上搜索。
SQL语句命令
SQL语句命令
SELECT-------------------------------------------------数据查询
CREATE(创建)、DROP(删除)、ALTER(修改)-------------数据概念
INSERT(出入)、UPDATE(修改)、DELETE(删除)----------数据操纵
DRANT(授权)、REVOKE恢复)---------------------------数据控制
创建数据库
CREATEDATABASE〈数据库文件名〉
ON[PRIMARY]
(NAME=数据库逻辑文件名,
FILENAME=‘数据库文件名后缀及存取路径’
[,SIZE=初始容量值
[,MAXSIZE=最大容量值|UNLIMITED]
[,FILEGROWTH=增加值])[,…]
[LOGON
(NAME=数据库逻辑文件名,
FILENAME=‘数据库文件名后缀及存取路径’
[,SIZE=初始容量值
[,MAXSIZE=最大容量值|UNLIMITED]
[,FILEGROWTH=增加值])[,…]
[FORLOAD|FORATTACH]
1数据库名是新概念数据库的文件名称,最多由128个字符组成,其文件后缀是MDF
2ON[PRIMARY]子句用来指定数据库文件信息,能够用逗号分开列出多个文件及文件组文件,默许第一个为主文件
3SIZE用数值表示,单位是KB或MB,默以为1MB
4MAXSIZE用数值表示,单位是KB或MB,默以为MB;UNLIMITED则为整个磁盘容量
5LOGON子句概念多个事务日记文件若忽略该子句,默许生成一个与数据库文件同名后缀为LDF,容量为1/4数据库文件大小的事务日记文件
6FORATTACH子句能够为已经存在的数据库文件创建一个新的数据库
7FORLOAD子句能够将备份直接装入新建数据库
例1:
在指定路径“E:
\测试\”中,创建一个学生管理系统的数据库:
“学生”,主文件名为“学生”,初始大小为5MB,最大尺寸为无穷,增加速度为10%,;事务日记文件文件名为:
“”,初始大小为1MB,最大尺寸为3MB,增加速度为1MB.
在SQLServer2000中启动查询分析器,在查询窗口输入T-SQL命令:
CREATEDATABASE学生
ONPRIMARY
(NAME=′学生′,
FILENAME=‵E:
\测试\学生\′,
SIZE=5,
MAXSIZE=UNLIMITED,
FILEGROWTH=10%)
LOGON
(NAME=′学生-log′,
FILENAME=‵E:
\测试\学生\′,
SIZE=1,
MAXSIZE=3,
FILEGROWTH=1)
创建数据表
⑴SQLServer2000中
CREATETABLE[数据库名。
[所有者。
]|〈表名〉
〈列名〉〈数据类型〉[[DEFAULT初值]|[IDENTITY[(初值,增量)]]]
[ROWGUIDCOL][NULL]|NOTNULL]
PRIMARYKEY|UNIQUE][′…])
[CHECK(逻辑表达式)]
1表名是命令必需的,是用户要概念(创建)的新表名称
2在圆括号中概念表的各列,必需概念列名、数据类型、长度,各列之间用逗号分隔
3选项DEFAULT能够给定该列初始值
4选项IDENTITY能够指定该列为表的标识列,注意此选项不能与DEFAULT选项同时利用
5选项ROWGUIDCOL指定该列为该表的唯一标识行列
6选项NULL和NOTNULL只能任选其一
7选项PRIMARYKEY指定一列或多列组合为表的主码,一个表只有一个主码,系统会自动为此列或列组成立唯一索引
8选项UNIQUE指定一列或多列组合为表候选码,在表中指定列对于各行具有唯一性
9选项CHECK限定指定列的取值范围
⑵VisualFoxpro
CREATETABLE|DBF〈表名〉[FREE](〈字段名1〉〈类型〉(〈长度〉[′〈小数位数〉])[′〈字段名2〉〈类型〉(〈长度〉[′〈小数位数〉])……][NULL][NOTNULL][DEFAULT字段初始值][PRIMARYKEY][UNIQUE]
[CHECK(表的有效性规则)][ERROR“错误信息”]
例2:
成立学生数据表,其中有姓名XM、年龄NL、性别XB三个字段;其中姓名不为空,取值唯一
CREATETABLEXS(XMC(6)NOTNULLUNIQUE,NLN(4,1),XBL)
还能够对年龄字段的值增加有效性和初值,执行以下命令:
CREATETABLE
XS3(XMC(6)PRIMARYKEY,NLN(4,1)CHECK(NL>16ANDNL<26)ERROR“年龄值超出范围!
”DEFAULT18,XBL)
数据类型
⑴SQLServer2000中
1字符型
CHAR:
按固定长度寄存字符,每一个字符占一个字节,用CHAR(n)的形式概念,范围1-8000
VCHAR:
不按固定长度寄存,用VCHAR(n)的形式概念,范围1-8000
NCHAR:
与CHAR相同,但每一个字符占两个字节,最多寄存4000个字节
NVCHAR:
与VCHAR相同,但每一个字符占两个字节,最多寄存4000个字节
2整形数。
用于寄存整数
INT:
寄存-231-231-1之间的整数,一个整数占4个字节
SMALLINT:
寄存-215-215-1之间的整数,一个整数占2个字节
TINYINT:
寄存0-255之间的正整数,一个整数占1个字节
BIGINT:
-263-263-1之间的整数,一个整数占8个字节
③浮点数。
用来寄存实数
REAL:
一个浮点数占4个字节,最大能够精准到7位
FLOAT:
默以为8个字节的浮点数,能够用FLOAT(n),精度15位
DECIMAL和NUMERIC:
这两个是同义的,一般利用DECIMAL,能够用DEC(p,s),精度38位.其中p表示精度位数(1-38),s表示小数位数(0-p)
④日期时刻。
寄存日期和时刻信息
DATETIME:
日期和时刻混合寄存,范围是1753年1月1日零时-9999年12月31日23时59分59秒,占8个字节
SMALLDATETIME:
只占4个字节寄存数据,范围1900年1月1日-2079年6月6日,精准到分
⑤货币型。
专门用于货币数据处置
MONEY:
按整数4个字节,小数4个字节的形式寄存,能够精准到万分之一
SMALLMONEY:
按整数2个字节,小数2个字节的形式寄存,精准到万分之一
⑥二进制数。
包括BINARY固定长度和VARBINARY可变长度两种概念类型
⑦文本和图形。
TEXT:
寄存大文本数据
NTEXT:
与TEXT相同,可是每一个字符占2个字节
IMAGE:
用于寄存照片、目录图片或图画等
⑧特殊类型。
TIMESTAMP:
时刻戳类型
UNIQUEIDENTIFIER:
全局标识代码
⑵VisualFoxpro
字符型(C);数值型(N);货币型(Y);日期型(D);日期时刻型(T);逻辑型(L),只有真(.T.)和假(.F.)两种;备注型(M);通用型(G),用于存储OLE对象的数据
修改表结构
⑴SQLServer2000中
ALTERTABLE表名
ADD|ALTERCOLUMN|DROPCOLUMN〈字段名1〉[类型[(长度)]]
[NULL][NOTNULL][…]
⑵VisualFoxpro中
ALTERTABLE〈表名〉
ADD|ALTER[COLUMN]〈字段名1〉〈类型〉(〈长度〉[,〈小数位数〉]
[NULL][NOTNULL]
例3:
在学生数据库中有一个STUDENT1表,先添加列:
院系YXCHAR(4),诞生日期CSPQDATETIME,备注BZNTEXT;再将XH列改成INT型数据,将XM列改成长度10,将NL列改成SMALLINT型数据;最后删除ZP列和RQ列。
SQLServer2000
USE学生
ALTERTABLESTUDENT1ADDYXCHAR(4),CSRQDATETIME,BZNTEXT
ALTERTABLESTUDENT1ALTERCOLUMNXHINT
ALTERTABLESTUDENT1ALTERCOLUMNXMCHAR(10)
ALTERTABLESTUDENT1ALTERCOLUMNNLSMALLINT
ALTERTABLESTUDENT1DROPCOLUMNRQ,ZP
VisualFoxpro中
例4:
要为学生数据表增加职称字段ZC,并将年龄字段NL的宽度改成两位小数
ALTERTABLEXSADDZCC(6)ALTERNLN(2,0)
表的删除
在SQLServer2000和VisualFoxpro中删除数据表的命令是一样的
DROPTABLE〈表名〉
数据的插入
SQLServer2000
INSERT[INTO]〈表名〉[(列名)]VALUES(表达式)
1列名是要插入数据表的每一个列名,各列名之间用逗号隔开,若是省略则表示所有列
2表达式是要插入的各列值,各列值之间用逗号隔开,顺序和数据类型必需与表列一致。
表达式能够是常量、变量、函数或运算式
例5:
在SQLServer2000中为STUDENT表插入3条记录,内容见表
XH
XM
XB
NL
CJ
ZP
RQ
范志刚
男
21
91
当前日期
李明云
87
张岚
女
94
USE学生
INSERTSTUDENT(XH,XM,XB,NL,CJ,RQ)VALUES(′′,′范志刚′,′男′,21,91,NULL,GETDATE())
INSERTSTUDENT(XH,XM,CJ)VALUES(′′,′李明云′,87)
INSERTSTUDENT(XH,XM,XB,CJ)VALUES(′′,′张岚′,′女′,94)
VisualFoxpro中
INSERTINTO〈表名〉(〈字段名1〉,[,〈字段名2〉]……)VALUES〈表达式1〉[〈,表达式2〉]……)
例6:
在VisualFoxpro中,要在“学生”表XS中插入一条记录(李莉,20,女),再插入一条记录(王小明),最后再用数组插入一条记录(张勇敢,21,男)
INSERTINTOXS(XM,NL,XB)VALUES(“李莉”,20,.F.)
INSERTINTOXS(XM)VALUES“王小明”)
DIME(用来概念数组)XY[3]
XY[1]=“张勇敢”
XY[2]=21
XY[3]=.T.
INSERTINTOXS1FROMARRAYXY
数据的更新
SQLServer2000
UPDATE〈表名〉SET列名=〈表达式|DEFAULT|NULL〉[,…]
[WHERE〈条件〉]
例7:
将STUDENT表中NL值都更新为20岁,再将李明云的XH改成,成绩改成95分。
假定本班只有一个李性学生
USE学生
UPDATESTUDENTSETNL=20
UPDATESTUDENTSETXH=′′,CJ=95WHEREXMLIKE′李%′
例8:
对STUDENT表中XH列值前6位是201102,最后1位是1,倒数第2位是0、一、2的行中NL改成22岁,CJ改成99分
UPDATESTUDENTSETNL=22,CJ=99WHEREXHLIKE′201102[012]1′
VisualFoxpro中
UPDATE[库名!
]〈表名〉SET字段=〈表达式〉[,…]
[WHERE〈条件〉]
例9:
要将教师表中教授的工资都增加5%
UPDATEJZG1SETJBJZ=JBJZ*+1)WHEREZC=“教授”
通配字符
说明
%
代表0或多个任意字符
-(下划线)
代表一个任意字符
[a-d]
代表从a到d的任意一个字符
[aef]
代表字符a、e或f
[^a-d]
代表除a到d以外的任意一个字符
[^aef]
代表除a、e或f以外的任意一个字符
数据的删除
SQLServer2000
DELETE[FROM]〈表名〉[WHERE〈条件〉]
例10:
在SQLServer2000中删除表STUDENT中张岚的数据行
USE学生
DELETEFROMSTUDENTWHEREXM=′张岚′
VisualFoxpro中
DELETEFROM〈表名〉[WHERE〈条件〉]
索引的创建
CREATE[UNIQUE][CLUSTERED]INDEX〈索引名〉ON〈表名〉(列名[ASC|DESC][,…])[WITHDROP_EXISTING]
1选项UNIQUE指定为表创建唯一索引
2选项CLUSTERED指定为表创建聚集索引,忽略则创建非聚集索引
3选项ASC|DESC指定升序或降序,忽略时为升序
4选项WITHDROP_EXISTING对当前索引删除并重建
例11:
为表STUDENT1创建唯一性聚集索引SS1
USE学生
CREATEUNIQUECLUSTEREDINDEXSS1ONSTUDENGT1(XH)
例12:
为表STUDENT1在XM列上创建非聚集索引SS2,再在XB列和CJ列上创建复合索引SS3,要求XB升序CJ降序。
CREATEINDEXSS2ONSTUDENT1(XM);
CREATEINDEXSS3ONSTUDENT1(XB,CJDESC)
在VisualFoxpro中没有创建索引的SQL语句。
索引的删除
SQLServer2000
DROPINDEX〈表名〉.〈索引名〉[,…]
例12:
删除表STUDENT1中的SS2索引和SS3索引
USE学生
DROPINDEX,
视图的创建
SQLServer2000
CREATEVIEW〈视图名〉[(列名1,列名2[,…])]
[WITHENCRYPTION]
AS查询语句
[WITHCHECKOPTION]
说明:
WITHENCRYPTION能够使系统为创建的视图加密,选项WITHCHECKOPTION能够避免用户对视图进行增、删、该时的误操作。
VisualFoxpro中
CREATEVIEW〈视图名〉[(列名[,列名……])]AS任意SELECT语句
单表视图
例13:
要在SQLServer2000中成立STUDENT表的视图,若用户只关心学号XH、姓名XM、成绩CJ三列数据
创建一个视图“学生”
CREATEVIEW学生ASSELECTXH,XM,CJFROMSTUDENT
例14:
在VisualFoxpro中为学生表成立视图ST,其中包括职称字段ZC和姓名字段XM
CREATEVIEWSTASSELECTXM,ZCFROMXS
多表视图
例15:
要在SQLServer2000中成立STUDENT表和COURSE的视图,需要了解学生选课的信息。
先在STUDENT表中增加一新列KHCHAR(4),并输入所有学生选择的课程号(省略)
CREATEVIEW学生1ASSELECTXH,XM,KMFROMSTUDENT,COURSE
WHERE=COURSE,KH
例16:
在VisualFoxpro中将学生表STUDENT_JB和成绩表CJ联系起来,成立一个能够同时查看每一个人的籍贯和各科成绩的视图
CREATEVIEWABCASSELECTXM,JG,SX,WY,JSJFROMSTUDENT_JBASMM,STUDENT_CJASNNWHERE=
视图的删除
SQLServer2000
DROPVIEW〈视图名〉[……]能够同时删除多个视图
VisualFoxpro中
DROPVIEW〈视图名〉只能删除一个视图
数据查询功能
SELECT[ALL|DISTINCT]〈[表名.]列名表达式|[表名.]﹡〉[AS列题目][,..]
FROM〈表名或视图名〉[,..]
[WHERE〈条件表达式〉]
[ORDERBY〈列名〉[ASC|DESC]][,..]
[TOPn[PERCENT]
[GROUPBY〈列名〉[HAVING〈条件表达式〉]]
[INTO〈新表名〉]
[COMPUTE〈AVG|COUNT|SUM|MAX|MIN|VAR|VARP|STDEV|STDEVP〉(列名)[,..][BY〈列名〉[,..]]
说明:
1选项ALL指定包括重复的所有行,是默许设置。
DISTINCT指定不重复的所有行
2﹡表示显示输出所有列。
[AS列题目]可为该列指定一个新题目
3选项WHERE指定查询条件
4选项ORDERBY指定排序列名,若是是多列排序,应当用逗号分隔
5选项TOPn指定返回查询结果的前n行,[PERCENT]表示按n%行返回。
若是指定了ORDERBY,则返回排序后的n行或前n%行。
6选项GROUPBY可指定按列名值分组,可指定多个列名按级分组
7选项HAVING必需与GROUPBY一路利用,表示按给定条件挑选分组记录
8选项COMPUTE可计算指定列的给定聚合函数值(统计),其列名必需在SELECT列表名中出现过,且不能与INTO选项一路与利用
9选项INTO能够复制当前表的备份
10COMPUTEBY可分组统计,但必需与ORDERBY一路利用,且指定列个数应小于它
VisualFoxpro中
SELECT[ALL|DISTINCT][别名.]〈字段表达式〉[AS列名][,..]
FROM[库名!
]〈表或视图〉[[AS]本地别名][,
[[INNER|LEFT|RIGHT|FULLJOIN库名!
]〈表或视图〉[[AS]本地别名]…]
[WHERE〈连接表达式〉[AND〈连接表达式〉…][AND|OR〈挑选条件〉[AND|OR〈挑选条件〉]]]
[GROUPBY〈分组表达式〉[,〈分组表达式〉…]][HAVING〈条件表达式〉]
[ORDERBY〈字段名〉[ASC|DESC][,〈字段名〉[ASC|DESC]]…]
[UNION[ALL]〈SELECT命令〉]
[TOP〈数值表达式〉[PERCENT]]
[INTO〈输出目标〉]|[TOFILE〈文件〉[ADDITIVE]]|TOPRINTER[PROMPT]]|TOSCREEN]]
说明:
1必选项〈字段表达式〉指定输出列表中包括的表项,若是有多个表项应用逗号分隔。
若是要将所有文字作为输出表项,能够用﹡代替。
该选项一般为字段名,可是也能够是含字段名的表达式,别名是包括该字段的表名
2选项[AS列名]必需与〈字段表达式〉连用,使得输出列表中不用〈字段表达式〉作为列名,改用指定的“列名”输出
3必选项FROM给出查询的数据源,能够是一个或多个表(或视图),用数据库名指定非当前数据库的表。
选项[WHERE]肯定查询条件表达式,能够用逻辑运算符连接多个条件表达式
4选项[GGROUP]能够使输出列表分组显示,分组原则是〈分组表达式〉值相同的记录为一组。
〈分组表达式〉一般是字段名或表达式,并能够用多个表达式实现多级分组;选项[HAVING]与[GGROUP]连用,多分组记录按〈条件表达式〉进行挑选
5选项[ORDERBY]能够使输出列表按指定〈字段名〉排序,其中ASC为升序,DESC指定按降序排列
6选项[TOP〈数值表达式〉]必需与[ORDERBY]连用,用来知足条件的记录中指定记录数或百分比,[PERCENT]参数能够对〈数值表达式〉值向上取整
7选项INTO可肯定查询输出的目标位置,系统默许是在阅读框中输出列表
8选项[TO]与[INTO]类似,也能够肯定输出列表的方向,可是不能同时利用
9选项[ADDITIVE]指定将查询结果追加到FILE〈文件〉后面;[PROMPT]在打印前显示提示窗口。
简单查询
1、查询单表所有字段
例17:
在SQLServer2000中,查看STUDENT1表所有列的全数行
SELECT﹡FROMSTUDENT1
例18:
在VisualFoxpro中,查询课程表KC所有字段的全数记录
SELECT﹡FROMKC
2、查询数据表的指定列
例19:
在SQLServer2000中,查找表STUDENT1A中XH、XM、CJ三列的全数行,并将CJ列用“成绩”表示
SELECTXH,XM,CJAS成绩FROMSTUDENT1
在VisualFoxpro中,与上述相同。
3、利用列表达式查询
例20:
在SQLServer2000中,查询表STUDENT1中XM列及4门课程的平均成绩,还要查每人的诞生年份
SELECTXM,ROUND(CJ/4,1)AS平均成绩,YEAR(GETDATE())-NLAS诞生年份FROMSTUDENT1
例21:
在VisualFoxpro中,查询课程表KC的KH、KM、XF的全数记录,并将XF字段值加1用“总学分”表示
SELECTKH,KM,XF+1AS总学分FROMKC
4、不输出重复行的查询
例21:
在SQLServer2000中,查询表STUDENT1全数行的XB和NL列值;再查询其不含重复行的情形
SELECTXB,NLFROMSTUDENT1
再执行不含重复行的命令
SELECTDISTINCTXB,NLFROMSTUDENT1
VisualFoxpro与上述相同
五、查询结果排序输出
例22:
在SQLServer2000中,查询表STUDENT1时要求先按年龄由小到大,再按总平均成绩由大到小显示学生信息
SELECT﹡FROMSTUDENT1ORDERBYNL,CJ/4DESC
六、只输出部份行的查询
例23:
在SQLServer2000中,查询表STUDENT1时要求按年龄由小到大排序后显示前三条学生信息,或显示前60%记录
SELECTTOP3﹡FROMSTUDENT1ORDERBYNL
SELECTTOP60PERCENT﹡FROMSTUDENT1ORDERBYNL
例24:
在VisualFoxpro中,只显示KC表排序后的70%的记录,再显示前三条记录
SELECT﹡FROMKCORDERBYXFDESCTOP70PERCENT
SELECT﹡FROMKCORDERBYXFDESCTOP3
7、知足逻辑条件的查询
运算符号
说明
=、﹥、﹤、≧、≦、◇或!
=、!
﹤、!
﹥
比较运算◇或!
=是不等于;!
﹤是不小于
NOT(非)、AND(和、与、并且)、OR(或)
逻辑运算
例25:
在SQLServer2000中,查询表STUDENT1中总成绩大于等于300分的男学生
SELECT﹡FRO
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQL 语句 命令