??xml version="1.0" encoding="utf-8" standalone="yes"?>
下列语句部分是Mssql语句Q不可以在access中用?
SQL分类Q?
DDL—数据定义语a(CREATEQALTERQDROPQDECLARE)
DML—数据操U语a(SELECTQDELETEQUPDATEQINSERT)
DCL—数据控制语a(GRANTQREVOKEQCOMMITQROLLBACK)
首先,要介l基语句Q?br />
1、说明:(x)创徏数据?br />
CREATE DATABASE database-name
2、说明:(x)删除数据?br /> drop database dbname
3、说明:(x)备䆾sql server
--- 创徏 备䆾数据?device
USE master
EXEC sp_addumpdevice ’disk’, ’testBack’,
’c:mssql7backupMyNwind_1.dat’
--- 开?备䆾
BACKUP DATABASE pubs TO testBack
4、说明:(x)创徏新表
create table tabname(col1 type1 [not null]
[primary key],col2 type2 [not null],..)
Ҏ(gu)已有的表创徏新表Q?
AQcreate table tab_new like tab_old (使用旧表创徏新表)
BQcreate table tab_new as select col1,col2… from
tab_old definition only
5、说明:(x)
删除新表Qdrop table tabname
6、说明:(x)
增加一个列QAlter table tabname add column col type
注:(x)列增加后不能删除。DB2中列加上后数据类型也不能改变Q唯一能改变的是增加varcharcd的长度?/p>
7、说明:(x)
d主键QAlter table tabname add primary key(col)
说明Q?br />
删除主键QAlter table tabname drop primary key(col)
8、说明:(x)
创徏索引Qcreate [unique] index idxname on tabname(col….)
删除索引Qdrop index idxname
注:(x)索引是不可更改的Q想更改必须删除重新建?/p>
9、说明:(x)
创徏视图Qcreate view viewname as select statement
删除视图Qdrop view viewname
10、说明:(x)几个单的基本的sql语句
选择Qselect * from table1 where 范围
插入Qinsert into table1(field1,field2) values(value1,value2)
删除Qdelete from table1 where 范围
更新Qupdate table1 set field1=value1 where 范围
查找Qselect * from table1 where field1 like ’%value1%’ ---like的语法很_֦Q查资料!
排序Qselect * from table1 order by field1,field2 [desc]
LQselect count * as totalcount from table1
求和Qselect sum(field1) as sumvalue from table1
q_Qselect avg(field1) as avgvalue from table1
最大:(x)select max(field1) as maxvalue from table1
最:(x)select min(field1) as minvalue from table1
11、说明:(x)几个高查询q算?br />
AQ?UNION q算W?
UNION q算W通过l合其他两个l果表(例如 TABLE1 ?TABLE2Qƈ消去表中M重复行而派生出一个结果表。当 ALL ?UNION 一起用时Q即 UNION ALLQ,不消除重复行。两U情况下Q派生表的每一行不是来?TABLE1 是来自
TABLE2?br />
BQ?EXCEPT q算W?
EXCEPT q算W通过包括所有在 TABLE1 中但不在 TABLE2 中的行ƈ消除所有重复行而派生出一个结果表。当 ALL ?EXCEPT 一起用时 (EXCEPT ALL)Q不消除重复行?
CQ?INTERSECT q算W?br />
INTERSECT q算W通过只包?TABLE1 ?TABLE2 中都有的行ƈ消除所有重复行而派生出一个结果表。当 ALL ?INTERSECT 一起用时 (INTERSECT ALL)Q不消除重复行?br />
注:(x)使用q算词的几个查询l果行必L一致的?/p>
12、说明:(x)使用外连?
A、left outer joinQ?
左外q接Q左q接Q:(x)l果集几包括q接表的匚w行,也包括左q接表的所有行?
SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
BQright outer join:
叛_q接(双?Q结果集既包括连接表的匹配连接行Q也包括双接表的所有行?br />
CQfull outer joinQ?
全外q接Q不仅包括符可接表的匹配行Q还包括两个q接表中的所有记录?/p>
其次Q大家来看一些不错的sql语句
1、说明:(x)复制?只复制结?源表名:(x)a 新表名:(x)b) (Access可用)
法一Qselect * into b from a where 1<>1
法二Qselect top 0 * into b from a
2、说明:(x)拯?拯数据,源表名:(x)a 目标表名Qb) (Access可用)
insert into b(a, b, c) select d,e,f from b;
3、说明:(x)跨数据库之间表的拯(具体数据使用l对路径) (Access可用)
insert into b(a, b, c) select d,e,f from b in
‘具体数据?#8217; where 条g
例子Q?.from b in ’"&Server.MapPath(".")&"data.mdb" &"’ where..
4、说明:(x)子查?表名1Qa 表名2Qb)
select a,b,c from a where a IN (select d from b )
或? select a,b,c from a where a IN (1,2,3)
5、说明:(x)昄文章、提交h和最后回复时?br />
select a.title,a.username,b.adddate from table
a,(select max(adddate) adddate from table where
table.title=a.title) b
6、说明:(x)外连接查?表名1Qa 表名2Qb)
select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT
OUT JOIN b ON a.a = b.c
7、说明:(x)在线视图查询(表名1Qa )
select * from (SELECT a,b,c FROM a) T where t.a >
1;
8、说明:(x)between的用?between限制查询数据范围时包括了边界?not between不包?br />
select * from table1 where time between time1 and time2
select a,b,c, from table1 where a not between 数? and 数?
9、说明:(x)in 的用方?br />
select * from table1 where a [not] in (‘?’,’?’,’?’,’?’)
10、说明:(x)两张兌表,删除主表中已l在副表中没有的信息
delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )
11、说明:(x)四表联查问题Q?br />
select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....
12、说明:(x)日程安排提前五分钟提?br />
SQL: select * from 日程安排 where datediff(’minute’,f开始时?getdate())>5
13、说明:(x)一条sql 语句搞定数据库分?br />
select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段
14、说明:(x)?0条记?br />
select top 10 * form table1 where 范围
15、说明:(x)选择在每一lb值相同的数据中对应的a最大的记录的所有信?cMq样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成l排?{等.)
select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)
16、说明:(x)包括所有在 TableA 中但不在 TableB和TableC 中的行ƈ消除所有重复行而派生出一个结果表
(select a from tableA ) except (select a from tableB) except (select a from tableC)
17、说明:(x)随机取出10条数?br />
select top 10 * from tablename order by newid()
18、说明:(x)随机选择记录
select newid()
19、说明:(x)删除重复记录
Delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)
20、说明:(x)列出数据库里所有的表名
select name from sysobjects where type=’U’
21、说明:(x)列出表里的所有的
select name from syscolumns where id=object_id(’TableName’)
22、说明:(x)列示type、vender、pcs字段Q以type字段排列Qcase可以方便地实现多重选择Q类似select 中的case?br />
select type,sum(case vender when ’A’ then pcs else 0 end),sum(case vender when ’C’ then pcs else 0 end),sum(case vender when ’B’ then pcs else 0 end) FROM tablename group by type
昄l果Q?br />
type vender pcs
?sh)?A 1
?sh)?A 1
光盘 B 2
光盘 A 2
手机 B 3
手机 C 3
23、说明:(x)初始化表table1
TRUNCATE TABLE table1
24、说明:(x)选择?0?5的记?br />
select top 5 * from (select top 15 * from table order by id asc) table_别名 order by id desc
随机选择数据库记录的Ҏ(gu)Q用Randomize函数Q通过SQL语句实现Q?br />
对存储在数据库中的数据来_(d)随机数特性能l出上面的效果,但它们可能太慢了些。你不能要求ASP“找个随机?#8221;然后打印出来。实际上常见的解x案是建立如下所C的循环Q?br />
Randomize
RNumber = Int(Rnd*499) +1
While Not objRec.EOF
If objRec("ID") = RNumber THEN
... q里是执行脚?...
end if
objRec.MoveNext
Wend
q很Ҏ(gu)理解。首先,你取??00范围之内的一个随机数Q假?00是数据库内记录的LQ。然后,你遍历每一记录来测试ID
的倹{检查其是否匚wRNumber。满x件的话就执行由THEN
关键字开始的那一块代码。假如你的RNumber
{于495Q那么要循环一遍数据库q旉可就长了。虽?00q个数字看v来大了些Q但相比更ؓ(f)E_的企业解x案这q是个小型数据库了,后者通常在一个数据库内就包含了成千上万条记录。这时候不死定了Q?
采用SQLQ你可以很快地扑և准确的记录ƈ且打开一个只包含该记录的recordsetQ如下所C:(x)
Randomize
RNumber = Int(Rnd*499) + 1
SQL = "SELECT * FROM Customers WHERE ID = " &
RNumber
set objRec = ObjConn.Execute(SQL)
Response.WriteRNumber & " = " & objRec("ID") & " "
& objRec("c_email")
不必写出RNumber 和IDQ你只需要检查匹配情况即可。只要你对以上代码的工作满意Q你自可按需操作“随机”记录。Recordset没有包含其他内容Q因此你很快p扑ֈ你需要的记录q样大大降低了处理旉?br />
再谈随机?/p>
现在你下定决心要榨干Random 函数的最后一滴a(b)Q那么你可能?x)一ơ取出多条随录或者想采用一定随围内的记录。把上面的标准Random
CZ扩展一下就可以用SQL应对上面两种情况了?br />
Z取出几条随机选择的记录ƈ存放在同一recordset内,你可以存储三个随机数Q然后查询数据库获得匚wq些数字的记录:(x)
SQL = "SELECT * FROM Customers WHERE ID = " &
RNumber & " OR ID = " & RNumber2 & " OR ID = " &
RNumber3
假如你想选出10条记录(也许是每ơ页面装载时?0条链接的列表Q,你可以用BETWEEN 或者数学等式选出W一条记录和适当数量的递增记录。这一操作可以通过好几U方式来完成Q但?SELECT
语句只显CZU可能(q里的ID 是自动生成的L(fng)Q:(x)
SQL = "SELECT * FROM Customers WHERE ID BETWEEN " & RNumber & " AND " & RNumber & "+ 9"
注意Q以上代码的执行目的不是(g)查数据库内是否有9条ƈ发记录?br />
随机d若干条记录,试q?br />
Access语法QSELECT top 10 * From 表名 ORDER BY Rnd(id)
Sql server:select top n * from 表名 order by newid()
mysql select * From 表名 Order By rand() Limit n
Access左连接语?最q开发要用左q接,Access帮助什么都没有,|上没有Access的SQL说明,只有自己试, 现在C以备后查)
语法 select table1.fd1,table1,fd2,table2.fd2 From table1 left join table2 on table1.fd1,table2.fd1 where ...
使用SQL语句 ?..代替q长的字W串昄
语法Q?br />
SQL数据库:(x)select case when len(field)>10 then left(field,10)+’...’ else field end as news_name,news_id from tablename
Access数据库:(x)SELECT iif(len(field)>2,left(field,2)+’...’,field) FROM tablename;
Conn.Execute说明
ExecuteҎ(gu)
该方法用于执行SQL语句。根据SQL语句执行后是否返回记录集Q该Ҏ(gu)的用格式分Z下两U:(x)
1Q执行SQL查询语句Ӟ返回查询得到的记录集。用法ؓ(f)Q?br />
Set 对象变量?q接对象.Execute("SQL 查询语言")
ExecuteҎ(gu)调用后,?x)自动创录集对象Qƈ查询结果存储在该记录对象中Q通过SetҎ(gu)Q将记录集赋l指定的对象保存Q以后对象变量就代表了该记录集对象?br />
2Q执行SQL的操作性语aӞ没有记录集的q回。此时用法ؓ(f)Q?br />
q接对象.Execute "SQL 操作性语? [, RecordAffected][, Option]
·RecordAffected
为可选项Q此出可攄一个变量,SQL语句执行后,所生效的记录数?x)自动保存到该变量中。通过讉K该变量,可知道SQL语句队多条记录q行了操作?br />
·Option
可选项Q该参数的取值通常为adCMDTextQ它用于告诉ADOQ应该将ExecuteҎ(gu)之后的第一个字W解释ؓ(f)命o(h)文本。通过指定该参敎ͼ可执行更高效?br />
·BeginTrans、RollbackTrans、CommitTransҎ(gu)
q三个方法是q接对象提供的用于事务处理的Ҏ(gu)。BeginTrans用于开始一个事物;RollbackTrans用于回滚事务QCommitTrans用于提交所有的事务处理l果Q即认事务的处理?br />
事务处理可以一l操作视Z个整体,只有全部语句都成功执行后Q事务处理才成功;若其中有一个语句执行失败,则整个处理就失败,q恢复到处里前的状态?br />
BeginTrans和CommitTrans用于标记事务的开始和l束Q在q两个之间的语句Q就是作Z务处理的语句。判断事务处理是否成功,可通过q接对象的Error集合来实玎ͼ若Error集合的成员个C?Q则说明有错误发生,事务处理p|。Error集合中的每一个Error对象Q代表一个错误信息?br />
Reader和W(xu)riter
JavaE序语言使用Unicode来表C字W串和字W?br />Reader和W(xu)riterq两个抽象类主要用来d字符?br />
java.io包中Reader的类层次
-------------------------------------------------------------------------------
------------
Java API:
------------
java.io
c?Reader
java.lang.Object
java.io.Reader
所有已实现的接口:(x)
Closeable, Readable
直接已知子类Q?
BufferedReader, CharArrayReader, FilterReader, InputStreamReader, PipedReader, StringReader
public abstract class Reader
extends Object
implements Readable, Closeable
用于d字符的抽象cR子cdd现的Ҏ(gu)只有 read(char[], int, int) ?close()。但是,多数子类重写此处定义的一些方法,以提供更高的效率?或其他功能?
从以下版本开始:(x)
JDK1.1
-------------------------------------------------------------------------------
------------
Java API:
------------
java.io
c?BufferedReader
java.lang.Object
java.io.Reader
java.io.BufferedReader
所有已实现的接口:(x)
Closeable, Readable
直接已知子类Q?
LineNumberReader
public class BufferedReader
extends Reader
从字W输入流中读取文本,~冲各个字符Q从而提供字W、数l和行的高效d?
可以指定~冲区的大小Q或者可使用默认的大。大多数情况下,默认值就_大了?
通常QReader 所作的每个dh都会(x)D对基字符或字节流q行相应的读取请求。因此,?BufferedReader 包装所有其 read() 操作可能开销很高?ReaderQ如 FileReader ?InputStreamReaderQ。例如,
BufferedReader in
= new BufferedReader(new FileReader("foo.in"));
缓冲指定文件的输入。如果没有缓Ԍ则每ơ调?read() ?readLine() 都会(x)D从文件中d字节Qƈ其转换为字W后q回Q而这是极其低效的?
可以对?DataInputStream q行按原文输入的E序q行本地化,Ҏ(gu)是用合适的 BufferedReader 替换每个 DataInputStream?
从以下版本开始:(x)
JDK1.1
-------------------------------------------------------------------------------
------------
Java API:
------------
java.io
c?InputStreamReader
java.lang.Object
java.io.Reader
java.io.InputStreamReader
所有已实现的接口:(x)
Closeable, Readable
直接已知子类Q?
FileReader
public class InputStreamReader
extends Reader
InputStreamReader 是字节流通向字符的桥梁Q它使用指定?charset d字节q将其解码ؓ(f)字符。它使用的字W集可以由名U指定或昑ּl定Q否则可能接受^台默认的字符集?
每次调用 InputStreamReader 中的一?read() Ҏ(gu)都会(x)D从基输入读取一个或多个字节。要启用从字节到字符的有效{换,可以提前从基读取更多的字节Q其超q满_前读取操作所需的字节?
Z辑ֈ最高效率,可要考虑?BufferedReader 内包?InputStreamReader。例如:(x)
BufferedReader in
= new BufferedReader(new InputStreamReader(System.in));
从以下版本开始:(x)
JDK1.1
java.io包中Writer的类层次
-------------------------------------------------------------------------------
------------
Java API:
------------
java.io
c?Writer
java.lang.Object
java.io.Writer
所有已实现的接口:(x)
Closeable, Flushable, Appendable
直接已知子类Q?
BufferedWriter, CharArrayWriter, FilterWriter, OutputStreamWriter, PipedWriter, PrintWriter, StringWriter
public abstract class Writer
extends Object
implements Appendable, Closeable, Flushable
写入字符的抽象cR子cdd现的Ҏ(gu)仅有 write(char[], int, int)、flush() ?close()。但是,多数子类重写此处定义的一些方法,以提供更高的效率?或其他功能?
从以下版本开始:(x)
JDK1.1
-------------------------------------------------------------------------------
------------
Java API:
------------
java.io
c?BufferedWriter
java.lang.Object
java.io.Writer
java.io.BufferedWriter
所有已实现的接口:(x)
Closeable, Flushable, Appendable
public class BufferedWriter
extends Writer
文本写入字W输出流Q缓冲各个字W,从而提供单个字W、数l和字符串的高效写入?
可以指定~冲区的大小Q或者接受默认的大小。在大多数情况下Q默认值就_大了?
该类提供?newLine() Ҏ(gu)Q它使用q_自己的行分隔W概念,此概는pȝ属?line.separator 定义。ƈ非所有^台都使用新行W?('\n') 来终止各行。因此调用此Ҏ(gu)来终止每个输要优于直接写入新行符?
通常 Writer 其输出立即发送到基础字符或字节流。除非要求提C出,否则?BufferedWriter 包装所有其 write() 操作可能开销很高?WriterQ如 FileWriters ?OutputStreamWritersQ。例如,
PrintWriter out
= new PrintWriter(new BufferedWriter(new FileWriter("foo.out")));
缓?PrintWriter Ҏ(gu)件的输出。如果没有缓Ԍ则每ơ调?print() Ҏ(gu)?x)导致将字符转换为字节,然后立即写入到文Ӟ而这是极其低效的?
从以下版本开始:(x)
JDK1.1
-------------------------------------------------------------------------------
------------
Java API:
------------
java.io
c?OutputStreamWriter
java.lang.Object
java.io.Writer
java.io.OutputStreamWriter
所有已实现的接口:(x)
Closeable, Flushable, Appendable
直接已知子类Q?
FileWriter
public class OutputStreamWriter
extends Writer
OutputStreamWriter 是字W流通向字节的桥梁Q用指定的 charset 要向其写入的字W编码ؓ(f)字节。它使用的字W集可以由名U指定或昑ּl定Q否则可能接受^台默认的字符集?
每次调用 write() Ҏ(gu)都会(x)针对l定的字W(或字W集Q调用编码{换器。在写入基础输出之前,得到的这些字节会(x)在缓冲区累积。可以指定此~冲区的大小Q不q,默认的缓冲区对多数用途来说已_大。注意,传递到?write() Ҏ(gu)的字W是未缓冲的?
Z辑ֈ最高效率,可考虑?OutputStreamWriter 包装?BufferedWriter 中以避免频繁调用转换器。例如:(x)
Writer out
= new BufferedWriter(new OutputStreamWriter(System.out));
代理?是一个字W,它由两个 char 值序列表C:(x)?代理的范围?'\uD800' ?'\uDBFF'Q它后面跟着范围?'\uDC00' ?'\uDFFF' 的低 代理V如果由代理对表示的字W无法由l定的字W集~码Q则把依赖于字符集的替代序列 写入输出?
错误代理元素 指的是后面不跟低代理的高代理项Q或前面没有高代理项的低代理V尝试写入包含错误代理元素的字符是非法的。写入错误代理元素时Q此cd例的行ؓ(f)是不定的?
从以下版本开始:(x)
JDK1.1
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
Demo1Q通过字符将字符串写入指定文件?br />-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
q行l果Q字W串"-------------------------------------------------------------------------------
Demo2Q通过字符将字符串写入指定文Ӟ同时d字符?br />-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
q行l果Q字W串" 然后被读取出来?br />-------------------------------------------------------------------------------
Demo3Q通过字符接收数据,然后输出到控制台?br />-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
q行l果Q控制台输出输入的内宏V?br />-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
Demo4Q通过字符接收数据,然后输出到控制台Q同时将输入内容写入
指定的文件中?br />-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
q行l果Q控制台输出输入的内容,同时输入的内容被写入指定的文件中?br />-------------------------------------------------------------------------------