【网学网提醒】:网学会员鉴于大家对十分关注,论文会员在此为大家搜集整理了“超实用SQL语法脚本”一文,供大家参考学习
---------------------------------------------------------------------简单查询数据库中的表----------------------------------------------------------------
select*fromsysobjects
----------------------------------------------------------------------查看某表的表结构----------------------------------------------------------------
sp_columns't_gridstyleproj_web'--语法:sp_columns'表名'
------------------------------------------------------------------------删除存储过程---------------------------------------------------------------------
ifexists(selectnamefromsysobjectswherename='hlzh_proc'andtype='p')
dropprocedurehlzh_proc--如果有系统中有hlzh_proc这个存储过程则删除它
------------------------------------------------------------------------删除表---------------------------------------------------------------------
ifexists(selectnamefromsysobjectswherelower(name)='aaa'andtype='u')
begin
droptableaaa
end--如果系统中有aaa这个表则删除它(更多type=''可到经典SQL脚本上查找Type)
------------------------------------------------------------------------定义字段---------------------------------------------------------------------
set@sql=('selecttop256*intoaaafrom()b')
exec(@sql)---大于256行数据将无法转换
------------------------------------------------------------------------查用户的存储过程---------------------------------------------------------------------
select*fromsysobjectswheretype='P'
go
selecttextfromsyscommentswhereid=object_id('proc_name')--查询用户的存储过程
-----------------------------------------------------------------------数据库的导入表---------------------------------------------------------------------
把数据库A的t1表导入数据库B中去?
useB
go
select*into表名fromA.dbo.t1--表名为存放在数据库B中的表(自定义名称)
go
------------------------------------------------------------------------新增修改列---------------------------------------------------------------------
altertable表名ADD列名数据类型--修改列
altertable表名ADD列名数据类型---新增列
EXECsp_rename'表名','新表名'--重命名表名
EXECsp_rename'表名.旧列名','新列名','COLUMN'--重命名列名
------------------------------------------------------------------------nocount---------------------------------------------------------------------
nocount的用法
语法
setnocount{on|off}
注释
当setnocount为on时,不返回计数(表示受transact-sql语句影响的行数)。
当setnocount为off时,返回计数。
例:
setnocounton--执行
createtablelxc(FIDint,FCodevarchar(10),FNamevarchar(50))
insertintolxcvalues(1,001,'ss')--执行
-----------------输出-------------------
命令已成功完成。
set
nocountoff--执行
createtablelxc(FIDint,FCodevarchar(10),FNamevarchar(50))
insertintolxcvalues(1,001,'ss')--执行
-----------------输出-------------------
(所影响的行数为1行)
------------------------------------------------------------------------cast--------------------------------------------------------------------
cast用法
定义
将某种数据类型的表达式显式转换为另一种数据类型。
语法
CAST(expressionASdata_type)
如果@sint把它转成字符,可以这样cast(@sasvarchar)
-----------------------------------------------------------------------default---------------------------------------------------------------------
default用法
语法
CREATEDEFAULTdefault
ASconstant_expression
参数
default
默认值的名称。默认值名称必须符合标识符的规则。可以选择是否指定默认值所有者名称。
例:
createtabledemo--demo译为调制解调器DEMO
(
idint,
namechar(10),
contentint,--content译为容量
cityvarchar(10)default'beijing'--default出现,city的默认值为‘beijing’
)
select*fromdemo
demo表如下:
__________________________
|id|name|content|city|
--插入数据
insertintodemo
values(1,'zhangsan',110,'shanghai')
--成功添加了一条记录
insertintodemo(id,name,content)
--要使用default值必须在表的后面指定一下要加添的列
values(2,'lisi',119)
--后面一列的城市并没有添加,因为设置了默认值,所以它的值会自动变成了'beijing'
select*fromdemo--测试
输出结果:
idnamecontentcity
------------------------------------------
1zhangsan110shanghai
2lisi119beijing--默认自动生成的‘beijing’
----------------------------------------------------------------------Ltrim和Rtrim--------------------------------------------------------------------
LTRIM和RTRIM用法
LTRIM
定义
删除起始空格后返回字符表达式。
语法
LTRIM(character_expression)
例:
SELECTLTRIM('test')--test的左右边都有空格
输出:
------
test--test后面有个空格,而前面的被删了
RTRIM
定义
截断所有尾随空格后返回一个字符串。
语法
RTRIM(character_expression)
例:
SELECTRTRIM('test')--test的左右边都有空格
输出:
------
test--test前面有个空格,而后面的被删了
---------------------------------------------------------------------space---------------------------------------------------------------------
SPACE用法
定义
返回由重复的空格组成的字符串。
语法
SPACE(integer_expression)
参数
integer_expression
是表示空格个数的正整数。如果integer_expression为负,则返回空字符串。
例:
显示作者的姓氏并串联一个逗号
、两个空格和作者的名字。
createtableauthors(au_IDint,au_lnamevarchar(20),au_fnamevarchar(20))
insertintoauthorsvalues(1,'林','贤聪')
SELECTRTRIM(au_lname)+','+space(2)+LTRIM(au_fname)
FROMauthors
ORDERBYau_lname,au_fname
输出:
-------------------------------------------
林,贤聪
-----------------------------------------------------------------------into---------------------------------------------------------------------
SELECTINTO用法
定义
SELECTINTO语句从一个表中选取数据,然后把数据插入另一个表中。
SELECTINTO语句常用于创建表的备份复件或者用于对记录进行存档。
SQLSELECTINTO语法
您可以把所有的列插入新表:
SELECT*
INTOnew_table_name
FROMold_tablename
或者
只把希望的列插入新表:
SELECTcolumn_name(s)
INTOnew_table_name
FROMold_tablename
例:
创建一个名为"Persons_Order_Backup"的新表,其中包含了从Persons和Orders两个表中取得的信息:
createtablePersons(id_Pint,LastNamevarchar(20))
createtableOrders(id_Pint,OrderNovarchar(10))
insertintoPersonsvalues(1,'林贤聪')
insertintoOrdersvalues(1,'01')
SELECTPersons.LastName,Orders.OrderNo
INTOPersons_Order_Backup
FROMPersons
INNERJOINOrders
ONPersons.Id_P=Orders.Id_P
select*fromPersons
select*fromOrders
select*fromPersons_Order_Backup
--表Persons
id_PLastName
-------------------------------
1林贤聪
--表Orders
id_POrderNo
---------------------
101
--表Persons_Order_Backup
LastNameOrderNo
------------------------------
林贤聪01
------------------------------------------------------------Groupby--------------------------------------------------------------------
GROUPBY用法
定义
语句用于结合合计函数,根据一个或多个列对结果集进行分组。
语法
SELECTcolumn_name,aggregate_function(column_name)
FROMtable_name
WHEREcolumn_nameoperatorvalue
GROUPBYcolumn_name
例:
createtablet1(IDint,FDatedatetime,FPricefloat,FCustomervarchar(20))
insertintot1values(1,'2008/12/29',1000,'Bush')
insertintot1values(2,'2008/11/23',1600,'Carter')
insertintot1values(3,'2008/10/05',700,'Bush')
insertintot1values(4,'2008/09/28',300,'Bush')
insertintot1values(5,'2008/08/06',2000,'Adams')
insertintot1values(6,'2008/07/21',100,'Carter')
select*fromt1
结果
IDFDateFPriceFCustomer
-----------------------------------------------------------------------------------------------
11900-01-0600:00:00.0001000.0Bush
22008-11-2300:00:00.0001600.0Carter
32008-10-0500:00:00.000700.0Bush
42008-09-2800:00:00.000300.0Bush
5
2008-08-0600:00:00.0002000.0Adams
62008-07-2100:00:00.000100.0Carter
--现在,我们希望查找每个客户的总金额(总订单)。
--我们想要使用GROUPBY语句对客户进行组合。
SELECTFCustomer,SUM(FPrice)as'sum(FPrice)'FROMt1
GROUPBYFCustomer
结果
FCustomersum(FPrice)
--------------------------------------
Adams2000.0
Bush2000.0
Carter1700.0
union和unionall用法
定义
sql语句查询结果合并
语法
--合并重复行
select*fromA
union
select*fromB
--不合并重复行
select*fromA
unionall
select*fromB
例:
createtableA(FIDint,FCodevarchar(10),FNamevarchar(10),FClassvarchar(15))
insertintoAvalues(1,'01','林','二')
insertintoAvalues(2,'02','贤','一')
insertintoAvalues(3,'03','聪','二')
insertintoAvalues(4,'04','lxc','二')
createtableB(FIDint,FCodevarchar(10),FNamevarchar(10),FSexvarchar(2))
insertintoBvalues(1,'01','林','二')
insertintoBvalues(2,'02','贤','一')
insertintoBvalues(3,'03','聪','二')
insertintoBvalues(4,'04','lxc','男')
select*fromB
select*fromA
-----------返回结果---------------
FIDFCodeFNameFSex
-----------------------------------
101林二
202贤一
303聪二
404lxc男
(所影响的行数为4行)
FIDFCodeFNameFClass
----------------------------------------------
101林二
202贤一
303聪二
404lxc二
(所影响的行数为4行)
select*fromA
union
select*fromB
---------返回结果-----------
FIDFCodeFNameFClass
----------------------------------------------
101林二
202贤一
303聪二
404lxc二
404lxc男
(所影响的行数为5行)
------------------------------------------------------------Identity--------------------------------------------------------------------
IDENTITY用法
定义
可增加一个标识列,每个表只允许指定一个标识列
语法
selectIDENTITY(数据类型,seed,increment)AS列名
参数
seed
标识数,该值等于上一个IDENTITY值加上increment值。如为100,下个为100+increment
increment
用来添加到seed值以获得表中连续行的增量。
例:
在Table1中增加一个以2开头且名为ID的递增列。(注:之前并无Table1)
selectIDENTITY(int,2,1)ASid
intotable1
id
-----------
2
(所影响的行数为1行)
altertabletable1ADDfcodevarchar(5)---
新增列
altertabletable1ADDfnamevarchar(5)
altertabletable1ADDfsexvarchar(2)
updatetable1setfcode='01',fname='林林',fsex='男'whereid=2--更新列
insertintotable1values('02','林林1','男')--新增数据(数据ID那列必须为空)
insertintotable1values('03','林林2','男')
insertintotable1values('04','林林3','男')
结果
idfcodefnamefsex
--------------------------------
302林林1男
403林林2男
504林林3男
201林林男
(所影响的行数为4行)
例:
创建个表,自动递增以100开头的列
createtabletable1(
idintnotnullidentity(100,1),codevarchar(5),namevarchar(5),sexvarchar(2)
)
insertintotable1values('01','林林','男')--增加数据(数据ID那列必须为空)
insertintotable1values('02','林林1','男')
insertintotable1values('03','林林2','男')
insertintotable1values('04','林林3','男')
结果
idcodenamesex
-----------------------------------
10001林林男
10102林林1男
10203林林2男
10304林林3男
(所影响的行数为4行)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------EXECL函数技巧----------------------------------------------------------------------------------------------
=IF((COUNTIF(C16:C154,"=~~"))=0,"",COUNTIF(C16:C154,"=~~"))--统计C16:C154中等于~~的数量,如果统计结果等于0时,则那个单元格则为空即“”,如果不等于0则还是显示统计结果
-----------------------------------------------------------------------------------------英文字母大小写转换-------------------------------------------------------------------------------------
1小写转换为大写:选择A1,在B1中填入公式:=UPPER(A1),其中(A1)是指定需要转换的小写字母所在的单元格。
2大写转换为小写:选择A1,在B1中填入公式:=LOWER(A1),其中(A1)是指定需要转换的大写字母所在的单元格。
----------------------------------------------------------------------------------批量一次性把字母添加到数字前面去-----------------------------------------------------------------------
1选中该列除产权编号单元格以为的,单击鼠标右键——配置单元格格式——数字——自定义,类型处
输进"FJK"G/通用格式
2在D2输进="FJK"&;C2,将公式复制下去。开头可以用挑选性粘贴为数值。