SQL查寻的语句大全.docx
- 文档编号:17986590
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:33
- 大小:38.65KB
SQL查寻的语句大全.docx
《SQL查寻的语句大全.docx》由会员分享,可在线阅读,更多相关《SQL查寻的语句大全.docx(33页珍藏版)》请在冰点文库上搜索。
SQL查寻的语句大全
--语句功能
--数据操作
SELECT--从数据库表中检索数据行和列
INSERT--向数据库表添加新数据行
DELETE--从数据库表中删除数据行
UPDATE--更新数据库表中的数据
--数据定义
CREATETABLE--创建一个数据库表
DROPTABLE--从数据库中删除表
ALTERTABLE--修改数据库表结构
CREATEVIEW--创建一个视图
DROPVIEW--从数据库中删除视图
CREATEINDEX--为数据库表创建一个索引
DROPINDEX--从数据库中删除索引
CREATEPROCEDURE--创建一个存储过程
DROPPROCEDURE--从数据库中删除存储过程
CREATETRIGGER--创建一个触发器
DROPTRIGGER--从数据库中删除触发器
CREATESCHEMA--向数据库添加一个新模式
DROPSCHEMA--从数据库中删除一个模式
CREATEDOMAIN--创建一个数据值域
ALTERDOMAIN--改变域定义
DROPDOMAIN--从数据库中删除一个域
--数据控制
GRANT--授予用户访问权限
DENY--拒绝用户访问
REVOKE--解除用户访问权限
--事务控制
COMMIT--结束当前事务
ROLLBACK--中止当前事务
SETTRANSACTION--定义当前事务数据访问特征
--程序化SQL
DECLARE--为查询设定游标
EXPLAN--为查询描述数据访问计划
OPEN--检索查询结果打开一个游标
FETCH--检索一行查询结果
CLOSE--关闭游标
PREPARE--为动态执行准备SQL语句
EXECUTE--动态地执行SQL语句
DESCRIBE--描述准备好的查询
---局部变量
declare@idchar(10)
--set@id='10010001'
select@id='10010001'
---全局变量
---必须以@@开头
--IFELSE
declare@xint@yint@zint
select@x=1@y=2@z=3
if@x>@y
print'x>y'--打印字符串'x>y'
elseif@y>@z
print'y>z'
elseprint'z>y'
--CASE
usepangu
updateemployee
sete_wage=
case
whenjob_level=’1’thene_wage*1.08
whenjob_level=’2’thene_wage*1.07
whenjob_level=’3’thene_wage*1.06
elsee_wage*1.05
end
--WHILECONTINUEBREAK
declare@xint@yint@cint
select@x=1@y=1
while@x<3
begin
print@x--打印变量x的值
while@y<3
begin
select@c=100*@x+@y
print@c--打印变量c的值
select@y=@y+1
end
select@x=@x+1
select@y=1
end
--WAITFOR
--例等待1小时2分零3秒后才执行SELECT语句
waitfordelay’01:
02:
03’
select*fromemployee
--例等到晚上11点零8分后才执行SELECT语句
waitfortime’23:
08:
00’
select*fromemployee
***SELECT***
select*(列名)fromtable_name(表名)wherecolumn_nameoperator
value
ex:
(宿主)
select*fromstock_informationwherestockid=str(nid)
stockname='str_name'
stocknamelike'%findthis%'
stocknamelike'[a-zA-Z]%'---------([]指定值的范围)
stocknamelike'[^F-M]%'---------(^排除指定范围)
---------只能在使用like关键字的where子句中使用通配符)
orstockpath='stock_path'
orstocknumber<1000
andstockindex=24
notstock***='man'
stocknumberbetween20and100
stocknumberin(10,20,30)
orderbystockiddesc(asc)---------排序,desc-降序,asc-升序
orderby1,2---------by列号
stockname=(selectstocknamefromstock_informationwhere
stockid=4)
---------子查询
---------除非能确保内层select只返回一个行的值,
---------否则应在外层where子句中用一个in限定符
selectdistinctcolumn_nameformtable_name---------
distinct指定检索独有的列值,不重复
selectstocknumber,"stocknumber+10"=stocknumber+10from
table_name
selectstockname,"stocknumber"=count(*)fromtable_name
groupbystockname
---------groupby将表按行分组,指定列中有相同的值
havingcount(*)=2---------having选定指定的组
select*
fromtable1,table2
wheretable1.id*=table2.id--------
左外部连接,table1中有的而table2中没有得以null表示
table1.id=*table2.id--------右外部连接
selectstocknamefromtable1
union[all]-----union合并查询结果集,all-保留重复行
selectstocknamefromtable2
***insert***
insertintotable_name(Stock_name,Stock_number)value
("xxx","xxxx")
value(selectStockname,Stocknumberfrom
Stock_table2)---value为select语句
***update***
updatetable_namesetStockname="xxx"[whereStockid=3]
Stockname=default
Stockname=null
Stocknumber=Stockname+4
***delete***
deletefromtable_namewhereStockid=3
truncatetable_name-----------删除表中所有行,仍保持表的完整性
droptabletable_name---------------完全删除表
***altertable***---修改数据库表结构
altertabledatabase.owner.table_nameaddcolumn_namechar
(2)
null.....
sp_helptable_name----显示表已有特征
createtabletable_name(namechar(20),agesmallint,lname
varchar(30))
insertintotable_nameselect.........-----实现删除列的方法(创建新表)
altertabletable_namedropconstraintStockname_default----
删除Stockname的default约束
***function(/*常用函数*/)***
----统计函数----
AVG--求平均值
COUNT--统计数目
MAX--求最大值
MIN--求最小值
SUM--求和
--AVG
usepangu
selectavg(e_wage)asdept_avgWage
fromemployee
groupbydept_id
--MAX
--求工资最高的员工姓名
usepangu
selecte_name
fromemployee
wheree_wage=
(selectmax(e_wage)
fromemployee)
--STDEV()
--STDEV()函数返回表达式中所有数据的标准差
--STDEVP()
--STDEVP()函数返回总体标准差
--VAR()
--VAR()函数返回表达式中所有值的统计变异数
--VARP()
--VARP()函数返回总体变异数
----算术函数----
/***三角函数***/
SIN(float_expression)--返回以弧度表示的角的正弦
COS(float_expression)--返回以弧度表示的角的余弦
TAN(float_expression)--返回以弧度表示的角的正切
COT(float_expression)--返回以弧度表示的角的余切
/***反三角函数***/
ASIN(float_expression)--返回正弦是FLOAT值的以弧度表示的角
ACOS(float_expression)--返回余弦是FLOAT值的以弧度表示的角
ATAN(float_expression)--返回正切是FLOAT值的以弧度表示的角
ATAN2(float_expression1,float_expression2)
--返回正切是float_expression1/float_expres-sion2的以弧度表示的角
DEGREES(numeric_expression)
--把弧度转换为角度返回与表达式相同的数据类型可为
--INTEGER/MONEY/REAL/FLOAT类型
RADIANS(numeric_expression)--把角度转换为弧度返回与表达式相同的数据类型可为
--INTEGER/MONEY/REAL/FLOAT类型
EXP(float_expression)--返回表达式的指数值
LOG(float_expression)--返回表达式的自然对数值
LOG10(float_expression)--返回表达式的以10为底的对数值
SQRT(float_expression)--返回表达式的平方根
/***取近似值函数***/
CEILING(numeric_expression)--返回>=表达式的最小整数返回的数据类型与表达式相同可为
--INTEGER/MONEY/REAL/FLOAT类型
FLOOR(numeric_expression)--返回<=表达式的最小整数返回的数据类型与表达式相同可为
--INTEGER/MONEY/REAL/FLOAT类型
ROUND(numeric_expression)--返回以integer_expression
为精度的四舍五入值返回的数据
--类型与表达式相同可为INTEGER/MONEY/REAL/FLOAT类型
ABS(numeric_expression)--返回表达式的绝对值返回的数据类型与表达式相同可为
--INTEGER/MONEY/REAL/FLOAT类型
SIGN(numeric_expression)--测试参数的正负号返回0零值1正数或-1负数返回的数据类型
--与表达式相同可为INTEGER/MONEY/REAL/FLOAT类型
PI()--返回值为π即3.1415926535897936
RAND([integer_expression])--用任选的[integer_expression]做种子值得出0-1
间的随机浮点数
MSSQL数据库导出和导入
SQLServer导出导入数据方法
2004-02余枫
一、导出导入SQLServer里某个数据库
1.在SQLServer企业管理器里选中要转移的数据库,按鼠标右键,选所有任务->备份数据库。
2.备份选数据库-完全,目的备份到按添加按钮文件名在SQLServer服务器硬盘下输入一个自定义的备份数据库文件名(后缀一般是bak)重写选重写现有媒体最后按确定按钮。
如果生成的备份数据库文件大于1M,要用压缩工具压缩后再到Internet上传输。
3.通过FTP或者remotedesktop或者pcanywhere等方法把第二步生成的备份数据库文件或者其压缩后的文件传到目的SQLServer数据库,如果有压缩要解压。
4.目的SQLServer数据库如果还没有此数据库,先创建一个新的数据库;然后选中这个新创建的数据库,按鼠标右键,选所有任务->还原数据库还原->从设备->选择设备->磁盘->添加(找到要导入的备份数据库文件名)->确定还原备份集->数据库-完全最后按确定按钮。
完全的数据库导入成功了。
(如果在已经存在的SQLServer数据库上还原数据库可能遇到有还有其它人正在使用它而恢复操做失败,可以去看->管理->当前活动->锁/对象->找到数据库下锁的进程号->到查询分析器里用kill进程号杀掉这些锁,然后再做还原)注意:
如果在原有的目的SQLServer数据库上从备份文件(*.bak)还原数据库会把已经存在的表、存储过程等数据库对象全部替换成最近这次导入的备份数据库里的内容。
如果一定要还原备份文件(*.bak)里部分数据,需要另外建一个新数据库,其逻辑名称和数量同备份文件(*.bak)里数据库的逻辑名称和数量一致;新数据库的物理文件名称取得一定要和备份文件(*.bak)里数据库的物理文件不一样才行。
二、导出导入SQLServer里某个表
1.没有防火墙,同一个局域网里或不在同一个局域网里,但通过Internet可以互相访问在SQLServer企业管理器里选中目的数据库,按鼠标右键,选所有任务->导入数据->弹出数据转换服务导入/导出向导窗口->下一步->选数据源->数据源(用于SQLServer的MicrofostOLEDB提供程序)->服务器(可选择局域网内能访问到的所有SQLServer服务器,或者直接输入IP地址)->选择使用windows身份验证还是使用SQLServe身份验证(输入数据库的用户名和密码)->数据库(可选择上面选中SQLServer服务器上所有权限范围内的数据库)->下一步->选择目的->目的(用于SQLServer的MicrofostOLEDB提供程序)->服务器(默认为上一步里选中的导出服务器,也可以选其它局域网内能访问到的所有SQLServer服务器,或者直接输入IP地址)->目的数据库(可选择上面选中SQLServer服务器上所有权限范围内的数据库)->下一步->制定表复制或查询->选从源数据库复制表和视图(也可以选择用一条查询指定要传输的数据)->下一步->选择源表和视图->在要导入的表和视图前面选中源->目的出现同样的表名(可以手工修改成别的表名)->转换->列映射和转换里面可以修改源表和目的表之间字段的对应关系,修改目的表字段的类型和长度等,并可以选择创建目的表,在目的表中增加行,除去并重新创建目的表,启用标志插入等选项->确定->下一步->保存、调度和复制包->时间->立即运行(如果要实现隔一段时间自动导出导入数据,选调度DTS包以便以后执行)->保存(可以不选)->[保存DTS包(如果以后还要转移这批相同的数据,可以把本次导出导入的内容和步骤保存起来,存到SQLServer即可,保存的时候要输入DTS的包名及详细描述)->下一步->]->完成正在执行包->图形界面显示创建表及插入记录的步骤和状态->完成
2.经过防火墙,不在同一个局域网里
①、导出表里的数据到文本文件:
在SQLServer企业管理器里选中目的数据库,按鼠标右键,选所有任务->导入数据->弹出数据转换服务导入/导出向导窗口->下一步->选数据源->数据源(用于SQLServer的MicrofostOLEDB提供程序)->服务器(可选择局域网内能访问到的所有SQLServer服务器)->选择使用windows身份验证还是使用SQLServe身份验证(输入数据库的用户名和密码)->数据库(可选择上面选中SQLServer服务器上所有权限范围内的数据库)->下一步->选择目的->目的(文本文件)->文件名(在自己的电脑硬盘中生成一个自定义的文本文件)->下一步->制定表复制或查询->选从源数据库复制表和视图(也可以选择用一条查询指定要传输的数据)->下一步->选择目的文件格式->源(选择要导出的表)->用默认的带分隔符->选第一行包含有列名称选项->下一步->保存、调度和复制包->时间->立即运行(如果要实现隔一段时间自动导出到文本文件,选调度DTS包以便以后执行)->保存(可以不选)->[保存DTS包(保存的时候要输入DTS的包名及详细描述)->下一步->]->完成正在执行包->图形界面显示表到文本文件的步骤和状态->完成如果生成的文本文件大于1M,要用压缩工具压缩后再到Internet上传输。
②、通过FTP或者remotedesktop或者pcanywhere等方法把第①步生成的文本文件或者其压缩后的文件传到目的SQLServer数据库,如果有压缩要解压。
③、把文本文件导入目的SQLServer数据库直接把文本文件导入目的SQLServer数据库里跟文本文件同名的新表名时,默认的会把所有字段类型都变成字符串。
所以我们要这样做:
在源SQLServer数据库上先生成创建表的sql语句在SQLServer查询分析器里->选中源数据库里表名->按右键->在新窗口中编写对象脚本->创建->复制下新窗口内创建表名的sql语句到目标SQLServer数据库上查询分析器里执行创建表名的sql语句,生成空表结构。
(如果已经存在这样的表名,修改建表的sql语句,在表名后面加上导入时间的年月信息,例如table_0113)调用导入/导出工具->弹出数据转换服务导入/导出向导窗口->下一步->选数据源->数据源(文本文件)->文件名(已传到目的SQLServer数据库下要导入的文本文件,后缀可以不是*.txt,但是常规文本编辑器能打开的文件,文件类型选全部)->下一步->选择文件格式->用默认的带分隔符->选第一行包含有列名称选项->下一步->制定列分割符->逗号->下一步->选择目的->目的(用于SQLServer的MicrofostOLEDB提供程序)->服务器(可选择目标局域网内能访问到的所有SQLServer服务器)->选择使用windows身份验证还是使用SQLServe身份验证(输入数据库的用户名和密码)->数据库(可选择上面选中SQLServer服务器上所有权限范围内的数据库)->下一步->选择源表和视图->修改目的表名为刚才创建的表名->转换(在目的表中追加行)->下一步->保存、调度和复制包->时间->立即运行(如果要实现隔一段时间自动把文本文件导入,选调度DTS包以便以后执行)->保存(可以不选)->[保存DTS包(保存的时候要输入DTS的包名及详细描述)->下一步->]->完成正在执行包->图形界面显示文本文件到表的步骤和状态->完成如果要更改导入时间的年月信息的表名,例如table_0113到原来的表名,在企业管理器里把原来的表名改成table_old_0113,table_0113改名成table。
这会对应用程序里频繁访问的表照成一定的中断。
注意:
源表上的建的索引和主键约束不能用上面介绍的1和2方法转移过来,还需要手工来建索引和主键。
标志种子和notnull的约束可以继承过来。
导入视图时会把源视图里所有的真实数据导入成一个新表,而不是视图。
三、SQLServer存储过程或用户定义的函数导出导入
1、导出存储过程或用户定义的函数成*.sql文件在SQLServer企业管理器里选中源数据库,存储过程->单选或者多选中要转移的存储过程->用户定义的函数->单选或者多选中要转移的函数->按鼠标右键,选所有任务->生成SQL脚本->确定->在自己的电脑硬盘中生成一个自定义的*.sql文件->保存->正在生成SQL脚本->成功
2、如果目的数据库经过防火墙,不在同一个局域网里,要通过FTP或者remotedesktop或者pcanywhere等方法把第1步生成的*.sql文件传到目的SQLServer数据库服务器上。
3、用查询分析器进入SQLServer目的数据库,从菜单里选文件->打开->打开查询文件->选中第1步生成的*.sql文件->点执行查询的绿色倒三角型快捷键
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQL 查寻 语句 大全