當前位置:首頁 » 編程語言 » sql表示例

sql表示例

發布時間: 2023-09-25 11:50:53

sql資料庫查詢語句例子

各位同學們好,我們今天繼續來說,sql資料庫。我們今天的文檔中主要介紹了SQL查詢語句、查詢語句示例等。這里我給大家做了一個總結,有需要的同學可以參考一下。

首先,我們來了解一下SQL資料庫組成基本:

查找Movies表裡的Title欄位:

查找ID小於5的電影的Title和Director的以下這些:

查看電影的總條數

以下查詢語句是常用於班級統計的:

查詢「001」課程比「002」課程成績高的所有學生的學號:

查詢平均成績大於60分的同學的學號和平均成績:

查詢所有同學的學號、姓名、選課數、總成績:

查詢姓「李」的老師的個數:

查詢沒學過「葉平」老師課的同學的學號、姓名:

查詢學過「001」並且也學過編號「002」課程的同學的學號、姓名:

查詢學過「葉平」老師所教的所有課的同學的學號、姓名:

查詢課程編號「002」的成績比課程編號「001」課程低的所有同學的學號、姓名:

查詢所有課程成績小於60分的同學的學號、姓名:

查詢沒有學全所有課的同學的學號、姓名:

好了,這就是關於sql資料庫查詢語句的基礎了。我都替你們整理好了,感興趣的同學收藏一來,需要用的時候直接拿起來用就可以了。我們今天就到這里,下期再見!

本篇文章使用以下硬體型號:聯想小新Air15;系統版本:win10;軟體版本:sqlserver2008。

② SQL實戰新手入門:創建表

創建表

現在已經創建了一個資料庫 接下來可以使用它來創建資料庫中的各種對象 例如表 表是存儲數據慧喚的地方 這是一個常識性的邏輯 但也是RDBMS分道揚鑣的地方

拿筆者的冰箱為例 筆者在冰箱表面用小磁鐵吸住了各種各樣的東西 例如游覽動物園後帶回來的一些好玩的紀念品 友好的保險代理商贈送的日歷 孩子所在學校的飲食菜單(以及查詢學校考勤的電話號碼) 購物列表 小狗的照片 孩子們的照片 訂購比薩的熱線電話等

可以將其視為筆者的一個私人資料庫 只需要將各種東西粘貼在上面即可 文本 圖片 日歷等 相比之下 RDBMS更加特殊一些 它要求根據數據類型來對數據排序 第 章將詳細地討論數據類型 就目前而言 只需要關注最容易理解也是RDBMS最好處理的數據類型 文森臘本

就像前面的例子中創建資料庫一樣 創建一個表也是非常簡單的 創建表時 需要指定表中各列的列名和數據類型

CREATE TABLE myLibrary (all_my_books VARCHAR( ))

上面的語句將ALL_MY_BOOKS列定義為字元串數據類型(關於數據類型的更多信息 請參見第 章) 並且定義該列可以容納 個字元

讀者或許已經想到 與上面的例子相比 CREATE TABLE語法還有更多的內容 對於任何一種RDBMS 完整的CREATE TABLE語法列表的長度將超過一頁 精通這些選項要求讀者具有高級SQL的知識 因此本書只是簡要介紹一下CREATE TABLE的語法

在第 章中將會介紹 在創建了一個表之後 還可以從資料庫中刪除或修改表 SQL提供了對資料庫對象的完全控制 可以創建 修改並銷毀對象

試一此碧滑試在Microsoft SQL Server 中創建一個資料庫

創建資料庫通常是資料庫管理員的工作 特別是在一個產品級的環境之中 有太多的選項需要權衡和考慮而不是讓所有選項保留默認設置 然而對本書而言 只需要使用基本的語法即可 在Microsoft SQL Server中可以採用多種辦法來創建資料庫 毫無疑問使用SQL ServerManagement Studio Express是最簡單的辦法 下面列出了相應的操作步驟

( ) 確保SQL Server實例已經安裝並處於運行狀態(請參考附錄B中的安裝指南)

( ) 單擊Microsoft SQL Server 菜單項 啟動SQL Server Management Studio Express(在本練習中 假定SQL Server已經安裝到了讀者的本地計算機上 因此可以使用Windows

Authentication自動連接)

( ) 首先我們看到一個連接資料庫伺服器的提示屏幕 如果提示窗口中沒有填入默認值 那麼將伺服器類型設置為Database Engine 將伺服器名稱設置為 SQLEXPRESS(如果按照附錄B的指南完成了安裝的話 否則從下拉列表中選擇另外一個名稱 該下拉列表中僅顯示當前計算機上可見的SQL Server實例) 另外將身份驗證設置為Windows Authentication

( ) 單擊Connect按鈕

( ) SQL Server Management Studio Express將顯示一個帶有多個窗格的窗口 對於這個練習 我們只需要關注位於窗口左上角的New Query按鈕 它就在File菜單之下(如圖 所示) 單擊New Query按鈕

( ) 在窗口的中部 將顯示一個新的查詢窗口 在該窗口中可以輸入SQL命令

( ) 輸入下面的SQL語句 創建一個資料庫

CREATE DATABASE library;

( ) 單擊位於上方工具欄中的Execute按鈕 如圖 所示

( ) 注意觀察下方窗格的Messages選項卡中的消息 Command(s) pleted successfully

( ) 新創建的資料庫將出現在左側標題為Object Explorer的窗格的Databases列表之中 如圖 所示 單擊Databases節點之前的加號 就可以展開列表

示例說明

Microsoft SQL Server承擔了創建資料庫過程中的許多復雜工作 在後台 SQL Server將在計算機的硬碟(或者外部存儲設備)上創建一系列的文件 在Windows注冊表中創建數十個條目和特定於SQL Server的配置文件 它還將創建額外的多個支撐對象用於資料庫操作(展開新創建資料庫中的LIBRARY節點 就可以看到這些對象)

在該例子中 省略了所有的可選配置選項 使用所有選項的默認值來創建資料庫 存儲文件名稱 位置 初始大小 排序規則等 盡管這並不是創建性能優化的資料庫的最好辦法(關於性能優化的內容請參見第 章) 但對於本書演示的目的來說已經足夠了

返回目錄 SQL實戰新手入門

編輯推薦

Oracle索引技術

高性能MySQL

lishixin/Article/program/SQL/201311/16486

③ sql資料庫多表查詢(sql資料庫多表查詢示例)

可以有兩種處理方法,1、兩表先合並,後求和

select日期,sum(數值)as數值from

(select日期,金額薯局祥as數值fromA表

unionall

select日期,數量as數值fromB表)

groupby日期

2、先求和後合並,再求和

select日期,sum(數值)as數值from

(select日期,sum(金額)as數值fromA表groupby日期

unionall

select日期,sum(數量)as數值fromB表groupby日期)

groupby日期

對於「如果要實現總和的相乘、相除,或者相減得話,應該怎麼寫呢?」,你得提出明確需求,那後才能設計。

如果數搏是相乘、相除,或者相減,得有條件,還像上面,用日期關聯,A表-B表,A表求和:select日期,sum(金額)as數值fromA表groupby日期

B表求和:select日期,sum(數量)as數值fromB表groupby日期

在執行A表-B表時,由於用日期關聯,則某一日期對應的記錄可能會產生三種情況:A表B表都有;A表有B表無;A表無B表有。

1、需要先找出所有日期,select日期fromA表

union

select日期fromB表

2、對於A表中所有數據以上表中日期為依據構造所有相關日期數據,如果有日期數據,則為原數臘橋據,否則為0。

selecta.日期as日期,casewhenb.數值isNULLthenb.數值else0endas數值

from

(select日期fromA表

union

select日期fromB表)a

leftjoin

(select日期,sum(金額)as數值fromA表groupby日期)b

ona.日期=b.日期

3、同樣對於B表也如此。

4、2表相減即得。

selecta3.日期as日期,a3.數值-b3.數值as數值

from

(

selecta1.日期as日期,casewhenb1.數值isNULLthenb1.數值else0endas數值

from

(select日期fromA表

union

select日期fromB表)a1

leftjoin

(select日期,sum(金額)as數值fromA表groupby日期)b1

ona1.日期=b1.日期

)a3,(

selecta2.日期as日期,casewhenb2.數值isNULLthenb2.數值else0endas數值

from

(select日期fromA表

union

select日期fromB表)a2

leftjoin

(select日期,sum(金額)as數值fromB表groupby日期)b2

ona2.日期=b2.日期

)b3

wherea3.日期=b3.日期

當然,以上只是一種方法,還有其他方法也可以實現,盡供參考。

④ sql中引用一個表的查詢結果作為條件來查詢另一個表如何實現

sql中引用一個表的查詢結果作為條件來查詢另一個表稱為sql嵌套查詢。

簡單子查詢

示例:Copyselect name,age from person

where age >

( select age from person

where name = '孫權'

)

in嵌套查詢

in關鍵字用於where子句中用來判斷查詢的表達式是否在多個值的列表中。返回滿足in列表中的滿足條件的記錄。

示例:

select name from person

where countryid in

(

select countryid from country

where countryname = '魏國'

)

(4)sql表示例擴展閱讀

子查詢的語法規則

1、子查詢的select查詢總是使用圓括弧括起來。

2、不能包括compute或for.browse子句。

3、如果同時指定top子句,則可能只包括order by子句。

4、子查詢最多可以嵌套到32層。個別查詢可能會不支持32層嵌套。

5、任何可以使用表達式的地方都可以使用子查詢,只要它返回的是單個值。

6、如果某個表只出現在子查詢中二不出現在外部查詢中,那麼該表的列就無法包含在輸出中。

子查詢的組成

1、包含標准選擇列表組件的標准select查詢。

2、包含一個或多個表或者視圖名稱的標准from子句。

3、可選的where子句。

4、可選的group by子句。

5、可選的having子句。

⑤ 怎樣用SQL語句查詢一個資料庫中的所有表

TABLE 語句

具體語法:TABLE table_name [ORDER BY column_name] [LIMIT number [OFFSET number]]
其實從語法上看,可以排序,也可以過濾記錄集,不過比較簡單,沒有 SELECT 那麼強大。

示例 1

簡單的建一張很小的表 y1,記錄數為 10 條。表 t1,插入 10 條記錄

  • mysql-(ytt/3305)->create table t1 (r1 int,r2 int);

  • Query OK, 0 rows affected (0.02 sec)

  • mysql-(ytt/3305)->insert into t1

  • with recursive aa(a,b) as (

  • select 1,1

  • union all

  • select a+1,ceil(rand()*20) from aa where a < 10

  • ) select * from aa;

  • Query OK, 10 rows affected (0.00 sec)

  • Records: 10 Duplicates: 0 Warnings: 0

  • 簡單全表掃描mysql-(ytt/3305)->select * from t1;+------+------+| r1 | r2 |+------+------+| 1 | 1 || 2 | 9 || 3 | 9 || 4 | 17 || 5 | 17 || 6 | 16 || 7 | 6 || 8 | 1 || 9 | 10 || 10 | 3 |+------+------+10 rows in set (0.00 sec)

  • TABLE 結果mysql-(ytt/3305)->table t1;+------+------+| r1 | r2 |+------+------+| 1 | 1 || 2 | 9 || 3 | 9 || 4 | 17 || 5 | 17 || 6 | 16 || 7 | 6 || 8 | 1 || 9 | 10 || 10 | 3 |+------+------+10 rows in set (0.00 sec)

  • 看下 table 的執行計劃mysql-(ytt/3305)->explain table t1 order by r1 limit 2G*************************** 1. row *************************** id: 1 select_type: SIMPLE table: t1 partitions: NULL type: ALLpossible_keys: NULL key: NULL key_len: NULL ref: NULL rows: 10 filtered: 100.00 Extra: Using filesort1 row in set, 1 warning (0.00 sec)

  • 其實可以看到 TABLE 內部被 MySQL 轉換為 SELECT 了。mysql-(ytt/3305)->show warningsG*************************** 1. row *************************** Level: Note Code: 1003Message: /* select#1 */ select `ytt`.`t1`.`r1` AS `r1`,`ytt`.`t1`.`r2` AS `r2` from `ytt`.`t1` order by `ytt`.`t1`.`r1` limit 21 row in set (0.00 sec)

  • 那其實從上面簡單的例子可以看到 TABLE 在內部被轉成了普通的 SELECT 來處理。示例 2應用於子查詢里的子表。這里要注意,內表的欄位數量必須和外表過濾的欄位數量一致。克隆表 t1 結構mysql-(ytt/3305)->create table t2 like t1;Query OK, 0 rows affected (0.02 sec)

  • 克隆表 t1 數據mysql-(ytt/3305)->insert into t2 table t1;Query OK, 10 rows affected (0.00 sec)Records: 10 Duplicates: 0 Warnings: 0

  • table t1 被當做內表,表 t1 有兩個欄位,必須同時滿足 t2 檢索時過濾的欄位也是兩個。mysql-(ytt/3305)->select * from t2 where (r1,r2) in (table t1);+------+------+| r1 | r2 |+------+------+| 1 | 1 || 2 | 9 || 3 | 9 || 4 | 17 || 5 | 17 || 6 | 16 || 7 | 6 || 8 | 1 || 9 | 10 || 10 | 3 |+------+------+10 rows in set (0.00 sec)

  • 注意:這里如果過濾的欄位數量和子表數量不一致,則會報錯。

⑥ SQL語句創建表

CREATE TABLE 語句用於創建資料庫中的表。

具體用法為:

CREATE TABLE 表名稱

(

列名稱1 數據類型,

列名稱2 數據類型,

列名稱3 數據類型,

....

)

(6)sql表示例擴展閱讀

創建表數據類型:

integer(size) int(size) smallint(size) tinyint(size):僅容納整數。

decimal(size,d) numeric(size,d):容納帶有小數的數字。

char(size):容納固定長度的字元串

varchar(size):容納可變長度的字元串

date(yyyymmdd):容納日期。

參考資料:網路-SQL CREATE TABLE

熱點內容
bs源碼 發布:2025-02-01 16:51:52 瀏覽:566
百度雲zip怎麼解壓 發布:2025-02-01 16:31:59 瀏覽:566
pmc密碼是什麼意思 發布:2025-02-01 16:28:49 瀏覽:783
蘋果手錶和安卓手錶哪個好用 發布:2025-02-01 16:28:07 瀏覽:582
上海電信上傳 發布:2025-02-01 16:22:10 瀏覽:982
有什麼好的雙u主板配置 發布:2025-02-01 16:18:17 瀏覽:177
編程漩渦 發布:2025-02-01 16:01:51 瀏覽:328
司機會所訪問 發布:2025-02-01 15:54:11 瀏覽:780
家用電腦改成伺服器並讓外網訪問 發布:2025-02-01 15:30:23 瀏覽:355
javac工資 發布:2025-02-01 15:24:28 瀏覽:23