dim cn as adodb.connection .........private sub addtable() dim strsql as string strsql="Create Table student" & _ " id integer, " & _ " stunaem char(30)" & _ " Primary key (id) cn.excute strsql end subprivate sub addnewrec() dim rstmp as recordset set rstmp=cn.excute("select * from student") rstmp.add rs!id=1 rs!stuname="张三" rs.save set rstmp=nothing end sub private sub findrec dim rstmp as recordset set rstmp=cn.excute("select * from student where id=1") rstmp.stuname="李四" rstmp.save set rstmp=nothing end sub
1、建表格: CREATE TABLE table_name( column1 DATATYPE [NOT NULL] [NOT NULL PRIMARY KEY], column2 DATATYPE [NOT NULL], ...) 说明: DATATYPE --是资料的格式,详见表。 NUT NULL --可不可以允许资料有空的(尚未有资料填入)。 PRIMARY KEY --是本表的主键。1、增加资料: INSERT INTO table_name (column1,column2,...) VALUES ( value1,value2, ...) 说明: 1.若没有指定column 系统则会按表格内的栏位顺序填入资料。 2.栏位的资料形态和所填入的资料必须吻合。 3.table_name 也可以是景观 view_name。INSERT INTO table_name (column1,column2,...) SELECT columnx,columny,... FROM another_table 说明:也可以经过一个子查询(subquery)把别的表格的资料填入。2、查询资料: 基本查询 SELECT column1,columns2,... FROM table_name 说明:把table_name 的特定栏位资料全部列出来 SELECT * FROM table_name WHERE column1 = xxx [AND column2 > yyy] [OR column3 <> zzz] 说明: 1.'*'表示全部的栏位都列出来。 2.WHERE 之後是接条件式,把符合条件的资料列出来。SELECT column1,column2 FROM table_name ORDER BY column2 [DESC] 说明:ORDER BY 是指定以某个栏位做排序,[DESC]是指从大到小排列,若没有指明,则是从小到大 排列组合查询 组合查询是指所查询得资料来源并不只有单一的表格,而是联合一个以上的 表格才能够得到结果的。 SELECT * FROM table1,table2 WHERE table1.colum1=table2.column1 说明: 1.查询两个表格中其中 column1 值相同的资料。 2.当然两个表格相互比较的栏位,其资料形态必须相同。 3.一个复杂的查询其动用到的表格可能会很多个。整合性的查询: SELECT COUNT (*) FROM table_name WHERE column_name = xxx 说明: 查询符合条件的资料共有几笔。 SELECT SUM(column1) FROM table_name 说明: 1.计算出总和,所选的栏位必须是可数的数字形态。 2.除此以外还有 AVG() 是计算平均、MAX()、MIN()计算最大最小值的整合性查询。 SELECT column1,AVG(column2) FROM table_name GROUP BY column1 HAVING AVG(column2) > xxx 说明: 1.GROUP BY: 以column1 为一组计算 column2 的平均值必须和 AVG、SUM等整合性查询的关键字 一起使用。 2.HAVING : 必须和 GROUP BY 一起使用作为整合性的限制。复合性的查询 SELECT * FROM table_name1 WHERE EXISTS ( SELECT * FROM table_name2 WHERE conditions ) 说明: 1.WHERE 的 conditions 可以是另外一个的 query。 2.EXISTS 在此是指存在与否。 SELECT * FROM table_name1 WHERE column1 IN ( SELECT column1 FROM table_name2 WHERE conditions ) 说明: 1. IN 後面接的是一个集合,表示column1 存在集合里面。 2. SELECT 出来的资料形态必须符合 column1。 其他查询 SELECT * FROM table_name1 WHERE column1 LIKE 'x%' 说明:LIKE 必须和後面的'x%' 相呼应表示以 x为开头的字串。 SELECT * FROM table_name1 WHERE column1 IN ('xxx','yyy',..) 说明:IN 後面接的是一个集合,表示column1 存在集合里面。 SELECT * FROM table_name1 WHERE column1 BETWEEN xx AND yy 说明:BETWEEN 表示 column1 的值介於 xx 和 yy 之间。 更新记录 Update 表名 set 字段='XXXX' Where ............
請你到sql server版裡面問吧!!!
--*******************Transact_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 --描述準備好的查詢---局部變數 declare @id char(10) --set @id = '10010001' select @id = '10010001'---總體變數 ---必須以@@開頭--IF ELSE declare @x int @y int @z int select @x = 1 @y = 2 @z=3 if @x > @y print 'x > y' --列印字串'x > y' else if @y > @z print 'y > z' else print 'z > y'--CASE use pangu update employee set e_wage = case when job_level = ’1’ then e_wage*1.08 when job_level = ’2’ then e_wage*1.07 when job_level = ’3’ then e_wage*1.06 else e_wage*1.05 end--WHILE CONTINUE BREAK declare @x int @y int @c int select @x = 1 @y=1 while @x < 3 begin print @x --列印變數x 的值 while @y < 3 begin select @c = 100*@x + @y print @c --列印變數c 的值 select @y = @y + 1 end select @x = @x + 1 select @y = 1 end--WAITFOR --例 等待1 小時2 分零3 秒後才執行SELECT 語句 waitfor delay ’01:02:03’ select * from employee --例 等到晚上11 點零8 分後才執行SELECT 語句 waitfor time ’23:08:00’ select * from employee***SELECT***select *(列名) from table_name(表名) where column_name operator value ex:(宿主) select * from stock_information where stockid = str(nid) stockname = 'str_name' stockname like '% find this %' stockname like '[a-zA-Z]%' --------- ([]指定值的範圍) stockname like '[^F-M]%' --------- (^排除指定範圍) --------- 只能在使用like關鍵字的where子句中使用通配符) or stockpath = 'stock_path' or stocknumber < 1000 and stockindex = 24 not stocksex = 'man' stocknumber between 20 and 100 stocknumber in(10,20,30) order by stockid desc(asc) --------- 排序,desc-降冪,asc-昇冪 order by 1,2 --------- by列號 stockname = (select stockname from stock_information where stockid = 4) --------- 子查詢 --------- 除非能確保內層select只返回一個行的值, --------- 否則應在外層where子句中用一個in限定符 select distinct column_name form table_name --------- distinct指定檢索獨有的列值,不重複 select stocknumber ,"stocknumber + 10" = stocknumber + 10 from table_name select stockname , "stocknumber" = count(*) from table_name group by stockname --------- group by 將表按行分組,指定列中有相同的值 having count(*) = 2 --------- having選定指定的組select * from table1, table2 where table1.id *= table2.id -------- 左外部連接,table1中有的而table2中沒有得以null表示 table1.id =* table2.id -------- 右外部連接 select stockname from table1 union [all] ----- union合併查詢結果集,all-保留重複行 select stockname from table2***insert***insert into table_name (Stock_name,Stock_number) value ("xxx","xxxx") value (select Stockname , Stocknumber from Stock_table2)---value為select語句***update***update table_name set Stockname = "xxx" [where Stockid = 3] Stockname = default Stockname = null Stocknumber = Stockname + 4***delete***delete from table_name where Stockid = 3 truncate table_name ----------- 刪除表中所有行,仍保持表的完整性 drop table table_name --------------- 完全刪除表***alter table*** --- 修改資料庫表結構alter table database.owner.table_name add column_name char(2) null ..... sp_help table_name ---- 顯示表已有特徵 create table table_name (name char(20), age smallint, lname varchar(30)) insert into table_name select ......... ----- 實現刪除列的方法(創建新表) alter table table_name drop constraint Stockname_default ---- 刪除Stockname的default約束***function(/*常用函數*/)***----統計函數---- AVG --求平均值 COUNT --統計數目 MAX --求最大值 MIN --求最小值 SUM --求和--AVG use pangu select avg(e_wage) as dept_avgWage from employee group by dept_id--MAX --求工資最高的員工姓名 use pangu select e_name from employee where e_wage = (select max(e_wage) from employee)--STDEV() --STDEV()函數返回運算式中所有資料的標準差--STDEVP() --STDEVP()函數返回總體標準差--VAR() --VAR()函數返回運算式中所有值的統計變異數--VARP() --VARP()函數返回總體變異數----算術函數----/***三角函數***/ SIN(float_expression) --返回以弧度表示的角的正弦 COS(float_expression) --返回以弧度表示的角的余弦 TAN(float_expression) --返回以弧度表示的角的正切 COT(float_expression) --返回以弧度表示的角的餘切 /***反三角函數***/ ASIN(float_expression) --返回正弦是FLOAT 值的以弧度表示的角 ACOS(float_expression) --返回余弦是FLOAT 值的以弧度表示的角 ATAN(float_expression) --返回正切是FLOAT 值的以弧度表示的角 ATAN2(float_expression1,float_expression2) --返回正切是float_expression1 /float_expres-sion2的以弧度表示的角 DEGREES(numeric_expression) --把弧度轉換為角度返回與運算式相同的資料類型可為 --INTEGER/MONEY/REAL/FLOAT 類型 RADIANS(numeric_expression) --把角度轉換為弧度返回與運算式相同的資料類型可為 --INTEGER/MONEY/REAL/FLOAT 類型 EXP(float_expression) --返回運算式的指數值 LOG(float_expression) --返回運算式的自然對數值 LOG10(float_expression)--返回運算式的以10 為底的對數值 SQRT(float_expression) --返回運算式的平方根 /***取近似值函數***/ CEILING(numeric_expression) --返回>=運算式的最小整數返回的資料類型與運算式相同可為 --INTEGER/MONEY/REAL/FLOAT 類型 FLOOR(numeric_expression) --返回<=運算式的最小整數返回的資料類型與運算式相同可為 --INTEGER/MONEY/REAL/FLOAT 類型 ROUND(numeric_expression) --返回以integer_expression 為精度的四捨五入值返回的資料 --類型與運算式相同可為INTEGER/MONEY/REAL/FLOAT 類型 ABS(numeric_expression) --返回運算式的絕對值返回的資料類型與運算式相同可為 --INTEGER/MONEY/REAL/FLOAT 類型 SIGN(numeric_expression) --測試參數的正負號返回0 零值1 正數或-1 負數返回的資料類型 --與運算式相同可為INTEGER/MONEY/REAL/FLOAT 類型 PI() --返回值為π 即3.1415926535897936 RAND([integer_expression]) --用任選的[integer_expression]做種子值得出0-1 間的隨機浮點數
.........private sub addtable()
dim strsql as string
strsql="Create Table student" & _
" id integer, " & _
" stunaem char(30)" & _
" Primary key (id)
cn.excute strsql
end subprivate sub addnewrec()
dim rstmp as recordset
set rstmp=cn.excute("select * from student")
rstmp.add
rs!id=1
rs!stuname="张三"
rs.save
set rstmp=nothing
end sub
private sub findrec
dim rstmp as recordset
set rstmp=cn.excute("select * from student where id=1")
rstmp.stuname="李四"
rstmp.save
set rstmp=nothing
end sub
CREATE TABLE table_name(
column1 DATATYPE [NOT NULL] [NOT NULL PRIMARY KEY],
column2 DATATYPE [NOT NULL],
...)
说明:
DATATYPE --是资料的格式,详见表。
NUT NULL --可不可以允许资料有空的(尚未有资料填入)。
PRIMARY KEY --是本表的主键。1、增加资料:
INSERT INTO table_name (column1,column2,...)
VALUES ( value1,value2, ...)
说明:
1.若没有指定column 系统则会按表格内的栏位顺序填入资料。
2.栏位的资料形态和所填入的资料必须吻合。
3.table_name 也可以是景观 view_name。INSERT INTO table_name (column1,column2,...)
SELECT columnx,columny,... FROM another_table
说明:也可以经过一个子查询(subquery)把别的表格的资料填入。2、查询资料:
基本查询
SELECT column1,columns2,...
FROM table_name
说明:把table_name 的特定栏位资料全部列出来
SELECT *
FROM table_name
WHERE column1 = xxx
[AND column2 > yyy] [OR column3 <> zzz]
说明:
1.'*'表示全部的栏位都列出来。
2.WHERE 之後是接条件式,把符合条件的资料列出来。SELECT column1,column2
FROM table_name
ORDER BY column2 [DESC]
说明:ORDER BY 是指定以某个栏位做排序,[DESC]是指从大到小排列,若没有指明,则是从小到大
排列组合查询
组合查询是指所查询得资料来源并不只有单一的表格,而是联合一个以上的
表格才能够得到结果的。
SELECT *
FROM table1,table2
WHERE table1.colum1=table2.column1
说明:
1.查询两个表格中其中 column1 值相同的资料。
2.当然两个表格相互比较的栏位,其资料形态必须相同。
3.一个复杂的查询其动用到的表格可能会很多个。整合性的查询:
SELECT COUNT (*)
FROM table_name
WHERE column_name = xxx
说明:
查询符合条件的资料共有几笔。
SELECT SUM(column1)
FROM table_name
说明:
1.计算出总和,所选的栏位必须是可数的数字形态。
2.除此以外还有 AVG() 是计算平均、MAX()、MIN()计算最大最小值的整合性查询。
SELECT column1,AVG(column2)
FROM table_name
GROUP BY column1
HAVING AVG(column2) > xxx
说明:
1.GROUP BY: 以column1 为一组计算 column2 的平均值必须和 AVG、SUM等整合性查询的关键字
一起使用。
2.HAVING : 必须和 GROUP BY 一起使用作为整合性的限制。复合性的查询
SELECT *
FROM table_name1
WHERE EXISTS (
SELECT *
FROM table_name2
WHERE conditions )
说明:
1.WHERE 的 conditions 可以是另外一个的 query。
2.EXISTS 在此是指存在与否。
SELECT *
FROM table_name1
WHERE column1 IN (
SELECT column1
FROM table_name2
WHERE conditions )
说明:
1. IN 後面接的是一个集合,表示column1 存在集合里面。
2. SELECT 出来的资料形态必须符合 column1。 其他查询
SELECT *
FROM table_name1
WHERE column1 LIKE 'x%'
说明:LIKE 必须和後面的'x%' 相呼应表示以 x为开头的字串。
SELECT *
FROM table_name1
WHERE column1 IN ('xxx','yyy',..)
说明:IN 後面接的是一个集合,表示column1 存在集合里面。
SELECT *
FROM table_name1
WHERE column1 BETWEEN xx AND yy
说明:BETWEEN 表示 column1 的值介於 xx 和 yy 之间。
更新记录
Update 表名 set 字段='XXXX' Where ............
--資料操作
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 --描述準備好的查詢---局部變數
declare @id char(10)
--set @id = '10010001'
select @id = '10010001'---總體變數
---必須以@@開頭--IF ELSE
declare @x int @y int @z int
select @x = 1 @y = 2 @z=3
if @x > @y
print 'x > y' --列印字串'x > y'
else if @y > @z
print 'y > z'
else print 'z > y'--CASE
use pangu
update employee
set e_wage =
case
when job_level = ’1’ then e_wage*1.08
when job_level = ’2’ then e_wage*1.07
when job_level = ’3’ then e_wage*1.06
else e_wage*1.05
end--WHILE CONTINUE BREAK
declare @x int @y int @c int
select @x = 1 @y=1
while @x < 3
begin
print @x --列印變數x 的值
while @y < 3
begin
select @c = 100*@x + @y
print @c --列印變數c 的值
select @y = @y + 1
end
select @x = @x + 1
select @y = 1
end--WAITFOR
--例 等待1 小時2 分零3 秒後才執行SELECT 語句
waitfor delay ’01:02:03’
select * from employee
--例 等到晚上11 點零8 分後才執行SELECT 語句
waitfor time ’23:08:00’
select * from employee***SELECT***select *(列名) from table_name(表名) where column_name operator value
ex:(宿主)
select * from stock_information where stockid = str(nid)
stockname = 'str_name'
stockname like '% find this %'
stockname like '[a-zA-Z]%' --------- ([]指定值的範圍)
stockname like '[^F-M]%' --------- (^排除指定範圍)
--------- 只能在使用like關鍵字的where子句中使用通配符)
or stockpath = 'stock_path'
or stocknumber < 1000
and stockindex = 24
not stocksex = 'man'
stocknumber between 20 and 100
stocknumber in(10,20,30)
order by stockid desc(asc) --------- 排序,desc-降冪,asc-昇冪
order by 1,2 --------- by列號
stockname = (select stockname from stock_information where stockid = 4)
--------- 子查詢
--------- 除非能確保內層select只返回一個行的值,
--------- 否則應在外層where子句中用一個in限定符
select distinct column_name form table_name --------- distinct指定檢索獨有的列值,不重複
select stocknumber ,"stocknumber + 10" = stocknumber + 10 from table_name
select stockname , "stocknumber" = count(*) from table_name group by stockname
--------- group by 將表按行分組,指定列中有相同的值
having count(*) = 2 --------- having選定指定的組select *
from table1, table2
where table1.id *= table2.id -------- 左外部連接,table1中有的而table2中沒有得以null表示
table1.id =* table2.id -------- 右外部連接 select stockname from table1
union [all] ----- union合併查詢結果集,all-保留重複行
select stockname from table2***insert***insert into table_name (Stock_name,Stock_number) value ("xxx","xxxx")
value (select Stockname , Stocknumber from Stock_table2)---value為select語句***update***update table_name set Stockname = "xxx" [where Stockid = 3]
Stockname = default
Stockname = null
Stocknumber = Stockname + 4***delete***delete from table_name where Stockid = 3
truncate table_name ----------- 刪除表中所有行,仍保持表的完整性
drop table table_name --------------- 完全刪除表***alter table*** --- 修改資料庫表結構alter table database.owner.table_name add column_name char(2) null .....
sp_help table_name ---- 顯示表已有特徵
create table table_name (name char(20), age smallint, lname varchar(30))
insert into table_name select ......... ----- 實現刪除列的方法(創建新表)
alter table table_name drop constraint Stockname_default ---- 刪除Stockname的default約束***function(/*常用函數*/)***----統計函數----
AVG --求平均值
COUNT --統計數目
MAX --求最大值
MIN --求最小值
SUM --求和--AVG
use pangu
select avg(e_wage) as dept_avgWage
from employee
group by dept_id--MAX
--求工資最高的員工姓名
use pangu
select e_name
from employee
where e_wage =
(select max(e_wage)
from employee)--STDEV()
--STDEV()函數返回運算式中所有資料的標準差--STDEVP()
--STDEVP()函數返回總體標準差--VAR()
--VAR()函數返回運算式中所有值的統計變異數--VARP()
--VARP()函數返回總體變異數----算術函數----/***三角函數***/
SIN(float_expression) --返回以弧度表示的角的正弦
COS(float_expression) --返回以弧度表示的角的余弦
TAN(float_expression) --返回以弧度表示的角的正切
COT(float_expression) --返回以弧度表示的角的餘切
/***反三角函數***/
ASIN(float_expression) --返回正弦是FLOAT 值的以弧度表示的角
ACOS(float_expression) --返回余弦是FLOAT 值的以弧度表示的角
ATAN(float_expression) --返回正切是FLOAT 值的以弧度表示的角
ATAN2(float_expression1,float_expression2)
--返回正切是float_expression1 /float_expres-sion2的以弧度表示的角
DEGREES(numeric_expression)
--把弧度轉換為角度返回與運算式相同的資料類型可為
--INTEGER/MONEY/REAL/FLOAT 類型
RADIANS(numeric_expression) --把角度轉換為弧度返回與運算式相同的資料類型可為
--INTEGER/MONEY/REAL/FLOAT 類型
EXP(float_expression) --返回運算式的指數值
LOG(float_expression) --返回運算式的自然對數值
LOG10(float_expression)--返回運算式的以10 為底的對數值
SQRT(float_expression) --返回運算式的平方根
/***取近似值函數***/
CEILING(numeric_expression) --返回>=運算式的最小整數返回的資料類型與運算式相同可為
--INTEGER/MONEY/REAL/FLOAT 類型
FLOOR(numeric_expression) --返回<=運算式的最小整數返回的資料類型與運算式相同可為
--INTEGER/MONEY/REAL/FLOAT 類型
ROUND(numeric_expression) --返回以integer_expression 為精度的四捨五入值返回的資料
--類型與運算式相同可為INTEGER/MONEY/REAL/FLOAT 類型
ABS(numeric_expression) --返回運算式的絕對值返回的資料類型與運算式相同可為
--INTEGER/MONEY/REAL/FLOAT 類型
SIGN(numeric_expression) --測試參數的正負號返回0 零值1 正數或-1 負數返回的資料類型
--與運算式相同可為INTEGER/MONEY/REAL/FLOAT 類型
PI() --返回值為π 即3.1415926535897936
RAND([integer_expression]) --用任選的[integer_expression]做種子值得出0-1 間的隨機浮點數