1、日期字段与时间字段合并为日期时间字段及一些SQL语句
alter table GasDataTable add 字段1 int --增加一列int型字段1
alter table GasDataTable alter column 字段1 DateTime --字段1的类型转为DateTime
update GasDataTable set 字段1=format(CDate(测量日期&' '&测量时间),"yyyy-mm-dd hh:nn:ss") --测量日期与测量时间合并到字段1里
--要注意合并的两项是否有可合并性。并且若出现用户占用提示需要将表关闭了(Access中执行SQL时)
alter table GasDataTable drop column 测量时间 --删除一列
create table TableName(姓名 varchar(20), 年龄 varchar(20), QQ varchar(20)) --创建表
insert into TableName(姓名, 年龄, QQ) values ('ZL', '20', '1111111117') --增加数据
delete from TableName where 姓名 not in('ZL') --删除姓名列不是ZL的
update TableName set 姓名 = 'ZhLe' where 姓名 = 'ZL' --把原来叫ZL的改为ZhLe
select * from TableName where 姓名 like '赵%' --查找数据(%为多字符(Access软件里要用*),?为一个字符)
delete from GasDataTable where ID=1 --根据ID删除一行
delete from (select * from (select * from GasDataTable where TimeValue(日期时间) between #02:00:00# and #04:00:00#) where DateValue(日期时间) between #2013-10-01# and #2013-10-10#) --删除日期从#2013-10-01 - 2013-10-10#并且时间从#02:00:00 - 04:00:00#的数据,这种写法通过TimeValue与DateValue来定类型,所以日期时间字段为短文本的也可以选择出来。必须注意其与下面一句的区别
delete from (select * from GasDataTable where 日期时间 between #2013/10/1 2:00:00# and #2013/10/10 4:00:00#) --删除日期时间栏从#2013-10-01 02:00:00#到#2013-10-10 04:00:00#的数据,注意日期时间栏必须为Date/Time类型,否则无法达到效果
select count(*) from GasDataTable where 备注 --计算备注列有值的个数
select count(备注) from GasDataTable --计算备注列有值的个数
select count(*) from GasDataTable where 备注 = "123" --计算备注列有"123"值的个数
select distinct 仪器编号 from GasDataTable --选择仪器编号字段的不重复数据
select distinct 管道编号 from GasDataTable where 管道编号 like '??-0013' --选择管道编号字段里适合通配符的数据,一个问号是一个字符
select * from GasDataTable where (left(管道编号,2)='03') --筛选管道编号字段从左侧起为03的数据
select * from GasDataTable where 日期时间 between #2013-10-1 02:00# and #2013-10-10 04:00# and 仪器编号 = 100841 and 管道编号 like '03-*'
select * from GasDataTable where 日期时间 between #2013/10/1 2:00:00# and #2013/10/10 4:00:00# and 仪器编号=100841 and 管道编号='00-0210'
select * from GasDataTable where 测量日期 = #2013/10/11# --选择测量日期为2013/10/11的数据
"update GasDataTable set 管道转换=管道编号" --列复制
update GasDataTable set 管道编号='B'& mid(管道编号,4) where (left(管道编号,2)='03') --根据管道编号字段的前两位来将其更改为相应的编号。比如'03-1234'就改为'B1234'。mid(管道编号,4)是保留从第四位开始往后的字符串。
update GasDataTable set 管道编号='G'& CStr(CDbl(mid(管道编号,4))) where (left(管道编号,2)='11') --跟上面相类似,CStr(CDbl(mid(管道编号,4)))是把从第四位往后的字符串先转换数字,再转换为字符串。(也可以不转为字符串直接与‘G’相连)
select min(日期时间) from GasDataTable --选择日期时间字段的最小值
update GasDataTable set 管道编号='D'& CDbl(mid(管道编号,5)) & '-' & right(left(管道编号,2),1) & right(left(管道编号,4),1) where (left(管道编号,1)='0')
select avg(CH4) from GasDataTable --求字段的平均值
select stdev(CH4) from GasDataTable --求字段的标准差
select last(CH4) from GasDataTable --求字段的最后一个值
select max(CH4) from GasDataTable --求字段的最值
alter table GasDataTable alter column ID counter(10,1) --ID字段为自增字段,初始值为10,步长为1(执行它之前,如果字段类型已经是自增字段了,那么必须先将此字段改为其它类型,比如int,然后再执行此sql。否则将出现"无效字段类型")
select * from SourceDataTable where 仪器编号 is null --选择仪器编号字段某个数据为空的数据行
select * into a from b --复制表b到表a
drop table GasDataTable --删除GasDataTable表
2、Access sql语句创建表及字段类型(转)
创建一张空表: Sql="Create TABLE [表名]"
创建一张有字段的表: Sql="Create TABLE [表名]([字段名1] MEMO NOT NULL, [字段名2] MEMO, [字段名3] COUNTER NOT NULL, [字段名4] DATETIME, [字段名5] TEXT(200), [字段名6] TEXT(200))
字段类型:
2 : "SmallInt", // 整型
3 : "Int", // 长整型
4 : "Real", // 单精度型
5 : "Float", // 双精度型
6 : "Money", // 货币
7 : "DateTime", // 日期时间
11 : "Bit", // 是否
13 : "TimeStamp",
17 : "TinyInt", // 字节
72 : "UniqueIdentifier", // 同步复制 ID
128 : "Binary",
129 : "Char",
130 : "NChar",
131 : "Decimal", // 小数
133 : "DateTime",
135 : "SmallDateTime",
200 : "VarChar",
201 : "Text",
202 : "VarChar", // 文本
203 : "Text", // 备注
204 : "Binary", // 二进制
205 : "Image" // OLE 对象
以下字段为无编码字段(NChar、NVarchar、NText型) 8,128,130,202,203,204,205 以下字段为按当前系统内码编码的字段(Asp中可用CodePage=936纠正为gb2312内码) 129,200,201
在现有的表中增加字段:
Sql="alter table [表名] add column [字段名] varchar(200)"
修改字段类型:
Sql="alter table [表名] Alter COLUMN 字段名] varchar(50)"
删除表:
Sql="Drop table [表名]"
删除字段:
sql="alter table [表名] drop [字段名]"
修改字段:
Alter TABLE [表名] Alter COLUMN [字段名] 类型(大小) NULL
新建约束:
Alter TABLE [表名] ADD CONSTRAINT 约束名 CHECK ([约束字段] <= '2007-1-1')
删除约束:
Alter TABLE [表名] Drop CONSTRAINT 约束名
新建默认值:
Alter TABLE [表名] ADD CONSTRAINT 默认值名 DEFAULT 'Gziu.CoM' FOR [字段名]
删除默认值:
Alter TABLE [表名] Drop CONSTRAINT 默认值名
=======================================
conn.open connstr sql="alter table [tablename] add hehe char(20)" conn.execute(sql) response.write("添加成功")
ACCESS新建数据库和表还不简单,有了表字段初始化就更简单
=======================================
<%
session("tablen")="news"
'news是已存在的表名
session("fieldsn")="c"
'要添加的字段名
connectionstring="provider=microsoft.jet.oledb.4.0;data source="&server.MapPath("data/qq.mdb")
set conn=server.createobject("adodb.connection")
conn.OPEN connectionstring
jhsql = " Alter Table "&session("tablen")&" add column "&session("fieldsn")&" real "
conn.execute(jhsql)
%>
================================
生成数据表,添加字段,其中id字段为自动增加,测试通过~~
Sub GenAutoIncrementFld()
set cn=server.CreateObject("ADODB.Connection")
set clx=server.CreateObject("ADOX.Column")
set cat=server.CreateObject("ADOX.Catalog")
set tblnam=server.CreateObject("ADOX.Table")
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\网站制作\asp操作mdb\db\test.mdb"
Set cat.ActiveConnection = cn
tblnam.Name = "Test"
clx.ParentCatalog = cat
clx.Type = 3
clx.Name = "Id"
clx.Properties("AutoIncrement") = true
tblnam.Columns.Append clx
tblnam.Columns.Append "DataField",130,20
cat.Tables.Append tblnam
Set clx = Nothing
Set cat = Nothing
cn.Close
Set cn = Nothing End Sub
call GenAutoIncrementFld
===================================
字段类型对应数值
''---- DataTypeEnum Values ----
Const adEmpty = 0
Const adTinyInt = 16
Const adSmallInt = 2
Const adInteger = 3
Const adBigInt = 20
Const adUnsignedTinyInt = 17
Const adUnsignedSmallInt = 18
Const adUnsignedInt = 19
Const adUnsignedBigInt = 21
Const adSingle = 4
Const adDouble = 5
Const adCurrency = 6
Const adDecimal = 14
Const adNumeric = 131
Const adBoolean = 11
Const adError = 10
Const adUserDefined = 132
Const adVariant = 12
Const adIDispatch = 9
Const adIUnknown = 13
Const adGUID = 72
Const adDate = 7
Const adDBDate = 133
Const adDBTime = 134
Const adDBTimeStamp = 135
Const adBSTR = 8
Const adChar = 129
Const adVarChar = 200
Const adLongVarChar = 201
Const adWChar = 130
Const adVarWChar = 202
Const adLongVarWChar = 203
Const adBinary = 128
Const adVarBinary = 204
Const adLongVarBinary = 205
Const adChapter = 136
Const adFileTime = 64
Const adPropVariant = 138
Const adVarNumeric = 139
Const adArray = &H2000
97-2003版本
EXCEL
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=文件位置;Extended Properties=Excel 8.0;HDR=Yes;IMEX=1
ACCESS
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=文件位置;Jet OLEDB:Database Password=密码;
2007版本
EXCEL
Provider=Microsoft.Ace.OleDb.12.0;Data Source=文件位置;Extended Properties=Excel 12.0;HDR=Yes;IMEX=1
ACCESS
Provider=Microsoft.Ace.OleDb.12.0;Data Source=文件位置;Jet OLEDB:Database Password=密码;
【其他说明】
HDR=Yes/NO 表示是否将首行做标题。
IMEX 表示是否强制转换为文本
特别注意
Extended Properties='Excel 8.0;HDR=yes;IMEX=1'
A: HDR ( HeaDer Row )设置
若指定值为Yes,代表 Excel 档中的工作表第一行是栏位名称
若指定值為 No,代表 Excel 档中的工作表第一行就是資料了,沒有栏位名称
B:IMEX ( IMport EXport mode )设置
IMEX 有三种模式,各自引起的读写行为也不同,容後再述:
0 is Export mode
1 is Import mode
2 is Linked mode (full update capabilities)
我这里特别要说明的就是 IMEX 参数了,因为不同的模式代表著不同的读写行为:
当 IMEX=0 时为“汇出模式”,