當前位置:首頁 » 編程語言 » sql語句在線測試

sql語句在線測試

發布時間: 2022-12-22 07:55:06

㈠ 請朋友們幫忙寫出sql語句.感謝!在線等!!

--建立測試數據
create table tb
(姓名 varchar(20) null,
費用類型 varchar(20) null,
費用金額 decimal null
)

go

insert into tb
select 'XM1','交通費',50
union all
select 'XM1','交通費',40
union all
select 'XM1','餐飲費',60
union all
select 'XM1','餐飲費',60
union all
select 'XM1','辦公費',30
union all
select 'XM1','辦公費',30
union all
select 'XM2','辦公費',30
union all
select 'XM2','辦公費',60

go

--查詢語句
declare @sql varchar(8000)
set @sql = 'select 姓名 '
select @sql = @sql + ' , sum(case 費用類型 when ''' +費用類型+ ''' then 費用金額 else 0 end) [' + 費用類型 + ']'
from (select distinct 費用類型 from tb) as a
set @sql = @sql + ' from tb group by 姓名'
--print (@sql)
exec(@sql)

--------------------結果集------------------------------
姓名 辦公費 餐飲費 交通費
-------------------- ---------------------------------------- ---------------------------------------- ----------------------------------------
XM1 60 120 90
XM2 90 0 0

--刪除測試數據
drop table tb

㈡ SQL not in 兩個表找不同的問題 100分在線等……

SQLSERVER版本:

select * from t1 t where t.a1 in(
select a1 from t1 except select a1 from t2 )

附上我的測試sql:
create table #1(a1 varchar(10),a2 nvarchar(10),a3 varchar(10));
create table #2(a1 varchar(10),a2 nvarchar(10),a3 varchar(10));
insert into #1( a1,a2,a3)values('01','張三','90'),('02','李四','85'),('03','王五','89');
insert into #2( a1,a2,a3)values('01','張三','98'),('04','謝六','88'),('05','陳四','87');
select * from #1 t where t.a1 in(
select a1 from #1 except select a1 from #2 )
drop table #1;
drop table #2;

ORACLE版本:

select * from t1 t where t.a1 in(
select a1 from t1 minus select a1 from t2 );

附上測試sql:

create table t1(a1 varchar(10),a2 nvarchar2(10),a3 varchar(10));
create table t2(a1 varchar(10),a2 nvarchar2(10),a3 varchar(10));
insert into t1( a1,a2,a3) select * from (
select '01' a1 ,'張三' a2,'90' a3 from al
union
select '02' a1 ,'李四' a2,'85' a3 from al
union
select '03' a1 ,'李四' a2,'89' a3 from al);
insert into t2( a1,a2,a3) select * from (
select '01' a1 ,'張三' a2,'98' a3 from al
union
select '04' a1 ,'謝六' a2,'88' a3 from al
union
select '05' a1 ,'陳四' a2,'87' a3 from al);
select * from t1 t where t.a1 in(
select a1 from t1 minus select a1 from t2 );
drop table t1;
drop table t2;

㈢ 誰能幫忙寫個SQL查詢語句~急~!在線等~!

--以下在SQL2005測試通過,由於sql2005沒有number,我採用int替代,另外varchar2採用varchar替代。

create table #tbl_department(
departmentid int,
departmentname VARCHAR(80),
parentid int)
insert #tbl_department
select 1,'淮安公安局',0 union all
select 2,'清河分局',1 union all
select 3,'市交警大隊',1 union all
select 4,'清河交警大隊',2

create table #tbl_user(
userid int,
username VARCHAR(80),
mobilenumber VARCHAR(32),
departmentid int)
insert #tbl_user
select 1,'張一','13344455661',1 union all
select 2,'張二','13344455662',2 union all
select 3,'張三','13344455663',3 union all
select 4,'張四','13344455664',4

create table #tbl_sms(
mobilenumber VARCHAR(32),
smscontent VARCHAR(80))

----以上臨時數據,樓主自行添加補充。

--now,開始樓主想要的工作吧:

with tr(departmentid,username,mobilenumber) as
(
select u.departmentid,u.username,u.mobilenumber
from #tbl_user u join #tbl_department d on u.departmentid=d.departmentid
where d.departmentid=1
union all
select u2.departmentid,u2.username,u2.mobilenumber
from #tbl_user u2 join #tbl_department d2 on u2.departmentid=d2.departmentid
join tr on d2.parentid=tr.departmentid
)
insert #tbl_sms
select mobilenumber,'' as smscontent from tr

--測試是否成功:
--select * from #tbl_sms

--刪除臨時表
--drop table #tbl_department
--drop table #tbl_user
--drop table #tbl_sms

--滿意了沒有啊,樓主。

㈣ 求做一道SQL語句題

常用sql語句查詢
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_admpdevice '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、說明:幾個高級查詢運算詞

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、說明:使用外連接

A、left outer join:

左外連接(左連接):結果集幾包括連接表的匹配行,也包括左連接表的所有行。

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

B:right outer join:

右外連接(右連接):結果集既包括連接表的匹配連接行,也包括右連接表的所有行。

C:full outer join:

全外連接:不僅包括符號連接表的匹配行,還包括兩個連接表中的所有記錄。

其次,大家來看一些不錯的sql語句

1、說明:復製表(只復制結構,源表名:a 新表名:b) (Access可用)

法一:select * into b from a where 1<>1

法二:select top 0 * into b from a

2、說明:拷貝表(拷貝數據,源表名:a 目標表名:b) (Access可用)

insert into b(a, b, c) select d,e,f from b;

3、說明:跨資料庫之間表的拷貝(具體數據使用絕對路徑) (Access可用)

insert into b(a, b, c) select d,e,f from b in 『具體資料庫』 where 條件

例子:..from b in '"&Server.MapPath(".")&"\data.mdb" &"' where..

4、說明:子查詢(表名1:a 表名2:b)

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、說明:顯示文章、提交人和最後回復時間

select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b

6、說明:外連接查詢(表名1:a 表名2:b)

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、說明:在線視圖查詢(表名1:a )

select * from (SELECT a,b,c FROM a) T where t.a > 1;

8、說明:between的用法,between限制查詢數據范圍時包括了邊界值,not between不包括

select * from table1 where time between time1 and time2

select a,b,c, from table1 where a not between 數值1 and 數值2

9、說明:in 的使用方法

select * from table1 where a [not] in (『值1』,』值2』,』值4』,』值6』)

10、說明:兩張關聯表,刪除主表中已經在副表中沒有的信息

delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )

11、說明:四表聯查問題:

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、說明:日程安排提前五分鍾提醒

SQL: select * from 日程安排 where datediff('minute',f開始時間,getdate())>5

13、說明:一條sql 語句搞定資料庫分頁

select top 10 b.* from (select top 20 主鍵欄位,排序欄位 from 表名 order by 排序欄位 desc) a,表名 b where b.主鍵欄位 = a.主鍵欄位 order by a.排序欄位

14、說明:前10條記錄

select top 10 * form table1 where 范圍

15、說明:選擇在每一組b值相同的數據中對應的a最大的記錄的所有信息(類似這樣的用法可以用於論壇每月排行榜,每月熱銷產品分析,按科目成績排名,等等.)

select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)

16、說明:包括所有在 TableA 中但不在 TableB和TableC 中的行並消除所有重復行而派生出一個結果表

(select a from tableA ) except (select a from tableB) except (select a from tableC)

17、說明:隨機取出10條數據

select top 10 * from tablename order by newid()

18、說明:隨機選擇記錄

select newid()

19、說明:刪除重復記錄

Delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)

20、說明:列出資料庫里所有的表名

select name from sysobjects where type='U'

21、說明:列出表裡的所有的

select name from syscolumns where id=object_id('TableName')

22、說明:列示type、vender、pcs欄位,以type欄位排列,case可以方便地實現多重選擇,類似select 中的case。

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

顯示結果:

type vender pcs
電腦 A 1
電腦 A 1
光碟 B 2
光碟 A 2
手機 B 3
手機 C 3

23、說明:初始化表table1

TRUNCATE TABLE table1

24、說明:選擇從10到15的記錄

select top 5 * from (select top 15 * from table order by id asc) table_別名 order by id desc

隨機選擇資料庫記錄的方法(使用Randomize函數,通過SQL語句實現)

存儲在資料庫中的數據來說,隨機數特性能給出上面的效果,但它們可能太慢了些。你不能要求ASP「找個隨機數」然後列印出來。實際上常見的解決方案是建立如下所示的循環:

Randomize
RNumber = Int(Rnd*499) +1

While Not objRec.EOF
If objRec("ID") = RNumber THEN
... 這里是執行腳本 ...
end if
objRec.MoveNext
Wend

這很容易理解。首先,你取出1到500范圍之內的一個隨機數(假設500就是資料庫內記錄的總數)。然後,你遍歷每一記錄來測試ID 的值、檢查其是否匹配RNumber。滿足條件的話就執行由THEN 關鍵字開始的那一塊代碼。假如你的RNumber 等於495,那麼要循環一遍資料庫花的時間可就長了。雖然500這個數字看起來大了些,但相比更為穩固的企業解決方案這還是個小型資料庫了,後者通常在一個資料庫內就包含了成千上萬條記錄。這時候不就死定了?

採用SQL,你就可以很快地找出准確的記錄並且打開一個只包含該記錄的recordset,如下所示:

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 和ID,你只需要檢查匹配情況即可。只要你對以上代碼的工作滿意,你自可按需操作「隨機」記錄。Recordset沒有包含其他內容,因此你很快就能找到你需要的記錄這樣就大大降低了處理時間。

再談隨機數

現在你下定決心要榨乾Random 函數的最後一滴油,那麼你可能會一次取出多條隨機記錄或者想採用一定隨機范圍內的記錄。把上面的標准Random 示例擴展一下就可以用SQL應對上面兩種情況了。

為了取出幾條隨機選擇的記錄並存放在同一recordset內,你可以存儲三個隨機數,然後查詢資料庫獲得匹配這些數字的記錄:

SQL = "SELECT * FROM Customers WHERE ID = " & RNumber & " OR ID = " & RNumber2 & " OR ID = " & RNumber3

假如你想選出10條記錄(也許是每次頁面裝載時的10條鏈接的列表),你可以用BETWEEN 或者數學等式選出第一條記錄和適當數量的遞增記錄。這一操作可以通過好幾種方式來完成,但是 SELECT 語句只顯示一種可能(這里的ID 是自動生成的號碼):
SQL = "SELECT * FROM Customers WHERE ID BETWEEN " & RNumber & " AND " & RNumber & "+ 9"

注意:以上代碼的執行目的不是檢查資料庫內是否有9條並發記錄。

隨機讀取若干條記錄,測試過

Access語法:SELECT 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左連接語法(最近開發要用左連接,Access幫助什麼都沒有,網上沒有Access的SQL說明,只有自己測試, 現在記下以備後查)

語法 select table1.fd1,table1,fd2,table2.fd2 From table1 left join table2 on table1.fd1,table2.fd1 where ...

使用SQL語句 用...代替過長的字元串顯示

語法:

SQL資料庫:select case when len(field)>10 then left(field,10)+'...' else field end as news_name,news_id from tablename
Access資料庫:SELECT iif(len(field)>2,left(field,2)+'...',field) FROM tablename;

Conn.Execute說明

Execute方法

該方法用於執行SQL語句。根據SQL語句執行後是否返回記錄集,該方法的使用格式分為以下兩種:

1.執行SQL查詢語句時,將返回查詢得到的記錄集。用法為:

Set 對象變數名=連接對象.Execute("SQL 查詢語言")

Execute方法調用後,會自動創建記錄集對象,並將查詢結果存儲在該記錄對象中,通過Set方法,將記錄集賦給指定的對象保存,以後對象變數就代表了該記錄集對象。

2.執行SQL的操作性語言時,沒有記錄集的返回。此時用法為:

連接對象.Execute "SQL 操作性語句" [, RecordAffected][, Option]

·RecordAffected 為可選項,此出可放置一個變數,SQL語句執行後,所生效的記錄數會自動保存到該變數中。通過訪問該變數,就可知道SQL語句隊多少條記錄進行了操作。

·Option 可選項,該參數的取值通常為adCMDText,它用於告訴ADO,應該將Execute方法之後的第一個字元解釋為命令文本。通過指定該參數,可使執行更高效。

·BeginTrans、RollbackTrans、CommitTrans方法

這三個方法是連接對象提供的用於事務處理的方法。BeginTrans用於開始一個事物;RollbackTrans用於回滾事務;CommitTrans用於提交所有的事務處理結果,即確認事務的處理。

事務處理可以將一組操作視為一個整體,只有全部語句都成功執行後,事務處理才算成功;若其中有一個語句執行失敗,則整個處理就算失敗,並恢復到處里前的狀態。

BeginTrans和CommitTrans用於標記事務的開始和結束,在這兩個之間的語句,就是作為事務處理的語句。判斷事務處理是否成功,可通過連接對象的Error集合來實現,若Error集合的成員個數不為0,則說明有錯誤發生,事務處理失敗。Error集合中的每一個Error對象,代表一個錯誤信息。

㈤ SQL 語句,急,在線等!

t_user 表是否有groupid欄位

㈥ 高分求一道SQL資料庫問題,急!!!(在線等)

以下SQL語句在SQL Server 2005 Express中測試通過
第一題:CREATE TABLE SHOP
(
S# bigint NOT NULL,
SName nvarchar(50) NOT NULL,
Area nvarchar(50) NOT NULL,
MGR_NAME nvarchar(50) NOT NULL
) ;
第二題:
SELECT GNAME, MGR_NAME FROM SHOP, GOODS, SALE
WHERE GOODS.G#=SALE.G# and SALE.S#=SHOP.S# and SHOP.AREA="EAST"

第三題:
SELECT G#, GNAME FROM GOODS where GNAME like '冰箱'

第四題
CREATE VIEW 商品視圖 AS
SELECT G#,GNAMES, S#, SNAME, QUANTITY, AREA
FROM SHOP, GOODS, SALE
WHERE QUANTITY>2000 and GOODS.G#=SALE.G# and SALE.S#=SHOP.S#

㈦ 怎樣用SQL語句批量生成測試數據

ini_set('max_execution_time','0');
$pdo = new PDO("mysql:host=localhost;dbname=test","root","123456");
$sql = "insert into user(id,name,age,created_time) values";
for($i=0; $i<100000; $i++){
$str = strrand(32);
$sql .="('".$str."','zhangsan',21,'2015-12-11'),";
}
$sql = substr($sql,0,strlen($sql)-1);
var_mp($sql);
if($pdo -> exec($sql)){
echo "插入成功!";
echo $pdo -> lastinsertid();
}

sql你是沒辦法批量添加進去的額,,可以用程序處理呀。

㈧ 會SQL語句,就能快速開放你的數據介面API

如果你是非技術開發工程,不熟悉Java、PHP、Python、Golang這些後端的編程語言,但熟悉MySQL、Oracle、SQL Server、PostgreSQL這些資料庫的查詢操作,當你需要把現有的資料庫的數據,通過API介面形式提供給外部人員使用時,使用派框架·介面大師這個工具,就能輕松實現。

派框架·介面大師,是一套研發、管理和開放API介面的軟體源代碼和解決方案,基於PhalApi開源介面框架+Vue前後端分離,可用於快速搭建各類企業級介面平台。

適合用於開發新項目、已使用PhalApi開源框架的項目,或現有項目的系統重構,可用於快速搭建:OpenAPI、介面平台、數據平台、PaaS平台、SaaS平台、BaaS平台、開放平台等。

本地安裝好後,就可以開始使用了。

假設我們已經在以下的國家資料庫表pp_countries:

欄位 sortname:表示國家簡稱,name 表示國家全稱,還有區號phonecode,以及經緯度欄位。

現在使用 介面大師 這個工具,介紹如何低代碼開發、管理和開放你的數據API介面。

進入介面大師的管理後台,進入介面管理-低代碼介面開發-添加介面。

介面設計類型選擇:生成資料庫表介面API。

在介面服務名稱這里,把類名改成你的資料庫表名,不需要帶表前綴,同時使用大寫開頭的坨峰法寫法。

在介面參數填寫需要支持的搜索參數。

例如,支持國家名稱的模糊匹配。

接下來,點擊生成代碼。會生成類似如下的PHP代碼:

例如,找到SQL這一行的語句:

改成你自己的SQL語句,例如模糊搜索國家名。

同時把參數調整成左右模糊匹配:

然後,點擊【保存並發布】。

發布介面後,就可以在OpenAPI在線介面文檔看到剛剛添加發布的新數據介面。

點擊可以進入新介面的在線介面文檔。截圖如下:

你可以在線進行介面測試。填入需要搜索的國家名,例如:輸入A。

可以看到介面返回以下數據:

開啟調試模式後,還可以看到背後執行的SQL語句和執行時間:

完善介面文檔

你還可以補充添加介面返回的結構、欄位說明。

再次發布後,就可以在前台介面文檔查看到:

最後,再來看下如何把你開發添加好的新數據介面API開放給其他人。

開發者的主要使用流程是:

所以,開發者,需要先到開放平台注冊一個新賬號,然後登錄。

再創建新的應用並等待後台審核通過:

應用通過審核後,根據app_key和密鑰,申請介面訪問令牌。

獲取到訪問令牌access_token後,就可以調用和使用你新添加的數據API介面。

熱點內容
不用internet打開ftp 發布:2025-05-15 23:06:00 瀏覽:152
sql字元串取數字 發布:2025-05-15 22:57:45 瀏覽:123
推薦編程課 發布:2025-05-15 22:34:12 瀏覽:618
表拒絕訪問 發布:2025-05-15 22:29:37 瀏覽:978
電腦怎樣解壓文件 發布:2025-05-15 22:25:32 瀏覽:439
dns伺服器怎麼看 發布:2025-05-15 22:17:27 瀏覽:151
3dm的壓縮包 發布:2025-05-15 22:09:23 瀏覽:662
和存儲字長 發布:2025-05-15 21:54:09 瀏覽:515
用什麼寫c語言 發布:2025-05-15 21:35:56 瀏覽:418
linux讀取u盤 發布:2025-05-15 21:32:13 瀏覽:508