sql常用查询语句格式及例子说明,sql语句大全
SQL分类:
DDL—数据定义语言(创建、更改、删除、声明)
DML—数据操作语言(选择、删除、更新、插入)
DCL—数据控制语言(授权、撤销、提交、回滚)
首先简单介绍一下基本说法:
1.描述:创建数据库。
创建数据库数据库名称
2.描述:删除数据库。
删除数据库数据库名
3.描述:备份sql server
-用于创建备份数据的设备
使用母版
EXEC sp_addumpdevice disk , testBack , c:/mssql7backup/MyNwind_1.dat
-开始备份
将数据库pub备份到testBack
4.描述:创建新表。
create table tabname(col 1 type 1[not null][主键],col2 type2 [not null],)
基于现有表格创建新表格:
答:创建表tab _ new like tab _ old(使用旧表创建新表)
b:将表tab_new创建为select col1,col2…仅从tab_old定义
5.描述:删除新表drop table tabname。
6.注意:添加一列。
更改表标签名添加列类型
注意:列添加后不能删除。在DB2中添加列之后,数据类型不能改变。唯一可以改变的就是增加varchar类型的长度。
7.描述:添加主键:alter table tabname添加主键(COL)
备注:Delete primary key:alter table tabname drop primary key(COL)
8.描述:Create index:在tabname (col …上创建[unique]索引idxname。)
删除索引:删除索引idxname
注意:索引不能更改。如果你想改变它,你必须删除它并重建它。
9.描述:创建视图视图名作为Select语句。
删除视图:删除视图视图名
10.描述:几个简单和基本的sql语句
选择:从表1中选择*其中范围
插入:将值(值1,值2)插入表1(字段1,字段2)
删除:从表1中删除where范围
更新:更新表1 setfield1=value1 where range
查:select * from table 1 where field 1 like % value 1% -like的语法很精致,查数据!
排序:select * from table1 order by field1,field2 [desc]
总计:从表1中选择count *作为总计
Sum:从表1中选择sum (field1)作为sum值
平均值:从表1中选择avg (field1)作为avgvalue
最大值:从表1中选择max (field1)作为最大值
最小值:从表1中选择最小值(字段1)作为最小值
1.描述:几个高级查询运算符。
答:联合运营商
UNION运算符通过组合另外两个结果表(如TABLE1和TABLE2)并消除表中的任何重复行来派生一个结果表。当一切接踵而至
当UNION一起使用时(即UNION ALL),不会消除重复的行。在这两种情况下,派生表的每一行都来自表1或表2。
除了接线员
EXCEPT运算符通过包含表1中的所有行(但不包含表2中的所有行)并消除所有重复行来导出结果表。当ALL与EXCEPT (EXCEPT ALL)一起使用时,不会消除重复行。
c:交集运算符
INTERSECT运算符通过仅包含表1和表2中的行并消除所有重复行来导出结果表。当ALL与INTERSECT (INTERSECT ALL)一起使用时,不会消除重复的线。
注意:使用运算符的几个查询结果行必须一致。
12.描述:使用外部连接。
a、左外部连接:
左外连接(left join):结果集包括连接表的匹配行和左连接表的所有行。
SQL:从a.a=b.c上的左外联接b中选择a.a,a.b,a.c,b.c,b.d,b.f
b:右外部连接:
右连接(Right join):结果集包括连接表的匹配连接行和右连接表的所有行。
c:完全外部连接:
完全外部连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。
其次,我们来看看一些好的sql语句。
1.描述:复制表(仅复制结构,源表名称:新表名称:b)(可访问)
方法1: select * into b from a where 1 1
方法2:从a中选择top 0 *进入b
2.描述:复制表(复制数据,源表名:A目标表名:b)(有访问权限)
插入b(a,b,c)从b中选择d,e,f;
3.描述:跨数据库表复制(绝对路径用于特定数据)(访问可用)
Into b (a,b,c) select d,e,f from b in concrete database where条件
示例:从“”server.mappath(“.”中的b)/data.mdb 其中.
4.描述:子查询(表名1: A和表名2: B)
Select a,b,c from a where a IN(select d from b)or:select a,b,c from a where a IN (1,2,3)
5.描述:显示文章,作者和最后回复时间。
select a . title a . username b . add date from table a,(select max(add date)add date from table where table . title=a . title)b
6.描述:外部连接查询(表名1: a表名2: b)
从a.a=b.c .上的左出联接b中选择a.a,a.b,a.c,b.c,b.d,b.f
7.描述:在线查看查询(表名1: A)
select * from(从a中选择a、b、c)T其中t.a
8.描述:between的用法。当between限制查询数据的范围时,它包括边界值,而between不包括边界值。
select * from table1,其中时间介于时间1和时间2之间
从表1中选择b,c,其中a不在值1和值2之间
9.描述:如何在中使用
Select * from table1,其中a [not] in(值1 ,值2 ,值4 ,值6 )
10.描述:两个关联的表,删除主表中不在次表中的信息。
从不存在的表1中删除(select * from table2,其中table1.field1=table2.field1)
11.注意:四表关联查询问题:
select * from a . a=b.b上的左内联接b . b右内联接c on a.a=c.c内联接d on a.a=d.d其中.
12.注意:日程安排要提前五分钟提醒。
SQL:select * from schedule where datediff( minute ,f start time,getdate()) 5
13.描述:一条sql语句可以完成数据库分页。
select top 10 b . * from(select top 20 primary key field,sort field from table name order by sort field desc)a,table name b其中b primary key field=a . primary key field order by a . sort field
14.描述:前10条记录
选择前10个*表单表1,其中范围
15.描述:选择每组B值相同的数据中A值最大的记录的所有信息(类似用法可用于论坛月度排名、月度热销产品分析、按主题评分排名等。)
select a,b,c from tablename ta其中a=(select max(a from tablename TB其中tb.b=ta.b)
16.描述:包括表a中的所有行,但不包括表b和表c中的所有行,并消除所有重复的行以导出结果表。
(从表a中选择A ) except(从表b中选择a)except(从表c中选择a)
17.注:随机抽取10个数据。
select top 10 * from tablename order by newid()
18.描述:随机选择记录。
选择newid()
9.描述:删除重复记录。
从id不在的表名中删除(select max(id)from tablename group by col 1,col2,)
20.描述:列出数据库中所有的表名。
从sysobjects中选择名称,其中type=U
21.描述:列出表格中的所有项目。
从syscolumns中选择名称,其中id=object_id(TableName )
22.描述:列出类型、供应商和pcs字段,并排列在类型字段中。case可以方便地实现多选,类似于select中的case。
挑选
type,sum(当‘A’时,案例供应商,然后pcs else 0结束),sum(当
c 则pcs else 0结束),sum(当 B 则pcs else 0结束时的情况卖方)
从表名按类型分组
显示结果:
供应商电脑类型
电脑A 1
电脑A 1
光盘B 2
光盘A 2
手机B 3
手机C 3
23.注意:初始化表table1。
截断表table1
24.描述:选择10到15条记录。
select top 5 * from(select top 15 * from table order by id ASC)table _ alias order by id desc
选择随机数据库记录的方法(使用Randomize函数,由SQL语句实现)
对于存储在数据库中的数据,随机数特性可以给出上述效果,但是它们可能太慢了。你不能要求ASP“找一个随机数”打印出来。事实上,常见的解决方案是建立如下所示的循环:
使不规则化
RNumber=Int(Rnd*499) 1
而不是objRec。文件结束
如果objRec(ID)=RNumber,则
.下面是执行脚本。
如果…就会结束
objRec。下一步
行
很好理解。首先,从1到500中取出一个随机数(假设数据库中的记录总数为500)。然后,检查每条记录来测试ID
的值,检查它是否与RNumber匹配。如果满足条件,则执行以THEN关键字开始的代码。如果你的号码
等于495,则需要很长时间在数据库中循环。虽然500这个数字看起来有点大,但与更稳定的企业解决方案(通常在一个中)相比,它仍然是一个小数据库
这个数据库里有成千上万条记录。这个时候不就死了吗?
使用SQL,您可以快速找到准确的记录,并打开只包含该记录的记录集,如下所示:
使不规则化
RNumber=Int(Rnd*499) 1
SQL= SELECT * FROM Customers WHERE ID= r number
设置objRec=ObjConn。执行(SQL)
回应。writer number = objRec( ID ) objRec( c _ email )
不用写RNumber和ID,只需要核对匹配即可。只要对以上代码满意,就可以根据需要操作“随机”记录。记录集不包含任何其他内容,因此您可以快速找到您需要的记录,这大大减少了处理时间。
关于随机数的再讨论
既然已经下定决心要把随机函数的最后一滴油榨干,那么可能会一次性拿出多条随机记录,或者想采用某个随机范围内的记录。通过扩展上面的标准随机示例,您可以使用SQL来处理以上两种情况。
为了取出几个随机选择的记录并将它们存储在同一个记录集中,可以存储三个随机数,然后查询数据库以获取与这些数字匹配的记录:
SQL=SELECT * FROM客户,其中ID= RNumber 或ID= RNumber2 或ID= RNumber3
如果您想要选择10条记录(可能是每次页面加载时10个链接的列表),您可以使用BETWEEN或数学等式来选择第一条记录和适当数量的增量记录。这个操作可以通过几种方式完成,但是SELECT语句只显示了一种可能性(这里的ID是自动生成的数字):
SQL=SELECT * FROM Customers,其中ID介于 RNumber 和 RNumber 9 之间
注意:上述代码的执行目的不是检查数据库中是否有9条并发记录。
随机读取几条记录,并对它们进行测试。
访问语法:SELECT top 10 * From table name ORDER BY Rnd(id)
服务器:select top n * from table name order by newid()
Mysqlelect * From表名Order By rand() Limit n
Access左连接语法(最近开发用左连接,Access没什么帮助,网上没有Access的SQL描述,只好自己测试了。现在记下来,以备将来参考)
语法elect table1.fd1,table1,fd2,table 2 . fd2 from table 1 left join table 2 on table 1 . fd1,table2.fd1 where.
使用SQL语句显示.而不是过长的字符串。
语法:
SQL数据库:select case when len(field)10 then left(field,10) . else字段以表名中的新闻名称、新闻标识结尾
访问数据库:选择IIF (len (field) 2,left (field,2) . ,字段)从tablename
控制室,执行指令
执行方法
此方法用于执行SQL语句。根据SQL语句执行后是否返回记录集,该方法的使用格式分为以下两种:
1.当执行SQL查询语句时,将返回查询获得的记录集。用法是:
set variable name=connect object . execute( SQL查询语言)
调用Execute方法后,将自动创建recordset对象,查询结果将存储在recordSet对象中。通过set方法,将记录集赋给指定的对象进行保存,然后object变量将代表记录集对象。
2.当执行SQL操作语言时,不返回任何记录集。此时的用法是:
连接对象。执行“SQL操作语句”[,RecordAffected][,Option]
RecordAffected是可选的,它可以放置一个变量。SQL语句执行后,有效记录的数量将自动保存到变量中。通过访问这个变量,可以知道SQL语句被操作了多少条记录。
选项是可选的。该参数的值通常是adCMDText,用于告诉ADO Execute方法之后的第一个字符应该被解释为命令文本。通过指定该参数,可以提高执行效率。
BeginTrans、RollbackTrans、CommitTrans方法
这三个方法是连接对象为事务处理提供的方法。BeginTrans用于开始某事;RollbackTrans用于回滚事务;CommitTrans用于提交所有交易结果,即确认交易处理。
事务处理可以把一组操作作为一个整体来对待,只有在所有语句都成功执行后,事务处理才能被认为是成功的;如果其中一个语句执行失败,整个过程将失败,并恢复到以前的状态。
BeginTrans和CommitTrans用于标记事务的开始和结束,它们之间的语句就是作为事务的语句。交易成功与否可以通过
连接对象的错误集。如果错误集的成员数不为0,则表示发生了错误,事务失败。错误集合中的每个错误对象表示一个
错误消息。
转自:http://blog..net/herian/archive/2007/09/21/1795442.aspx