国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

門(mén)診管理數(shù)據(jù)庫(kù)SQL查詢(xún)?cè)O(shè)計(jì)與實(shí)現(xiàn)

2019-07-16 03:14張建莉高欣
電腦知識(shí)與技術(shù) 2019年15期
關(guān)鍵詞:數(shù)據(jù)表數(shù)據(jù)庫(kù)

張建莉 高欣

摘要:結(jié)構(gòu)化查詢(xún)語(yǔ)言(Structured Query Language,SQL)是一種通用的、功能性極強(qiáng)的國(guó)際標(biāo)準(zhǔn)關(guān)系數(shù)據(jù)庫(kù)語(yǔ)言。本文以ACCESS為操作平臺(tái),結(jié)合自行設(shè)計(jì)的門(mén)診管理數(shù)據(jù)庫(kù)通過(guò)創(chuàng)建實(shí)例介紹了SQL主要語(yǔ)句的功能與實(shí)現(xiàn),尤其對(duì)核心語(yǔ)句SELECT 進(jìn)行了充分的分析和實(shí)例設(shè)計(jì)與實(shí)現(xiàn)。

關(guān)鍵詞:結(jié)構(gòu)化查詢(xún)語(yǔ)言;數(shù)據(jù)庫(kù);數(shù)據(jù)表;查詢(xún)

中圖分類(lèi)號(hào):TP391 ? ? 文獻(xiàn)標(biāo)識(shí)碼:A

文章編號(hào):1009-3044(2019)15-0035-03

SQL語(yǔ)言專(zhuān)門(mén)用于與關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)進(jìn)行數(shù)據(jù)交互,集數(shù)據(jù)定義、數(shù)據(jù)查詢(xún)、數(shù)據(jù)操縱、數(shù)據(jù)控制功能于一體,語(yǔ)言風(fēng)格統(tǒng)一,為數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)開(kāi)發(fā)提供了良好的環(huán)境。與通常的高級(jí)語(yǔ)言不同,SQL只要說(shuō)明做什么,不需要說(shuō)明怎么做,具體操作全部由數(shù)據(jù)庫(kù)管理系統(tǒng)自動(dòng)完成,且語(yǔ)言簡(jiǎn)潔,易學(xué)易用。本文以ACCESS為操作平臺(tái),以小型“門(mén)診管理系統(tǒng)”數(shù)據(jù)庫(kù)為例進(jìn)行了SQL語(yǔ)句的查詢(xún)?cè)O(shè)計(jì)與實(shí)現(xiàn)。

1在Access中使用SQL語(yǔ)句

Access 2010中,任何一個(gè)查詢(xún)都對(duì)應(yīng)著一個(gè)SQL語(yǔ)句,可以說(shuō)查詢(xún)對(duì)象的實(shí)質(zhì)是一條SQL語(yǔ)句。在查詢(xún)?cè)O(shè)計(jì)視圖創(chuàng)建查詢(xún)時(shí),Access 2010便會(huì)自動(dòng)撰寫(xiě)出相應(yīng)的SQL代碼。除了可以查看SQL代碼,還可以編輯它。

查看或輸入SQL代碼,可以在進(jìn)入查詢(xún)的設(shè)計(jì)視圖后,單擊工具欄上的“視圖”下拉按鈕,選擇“SQL視圖”項(xiàng),然后編輯。輸入完SQL語(yǔ)句后,單擊功能區(qū)的“運(yùn)行”按鈕,得到SQL語(yǔ)句的執(zhí)行結(jié)果。本文將根據(jù)實(shí)際應(yīng)用的需要,主要介紹數(shù)據(jù)定義、數(shù)據(jù)查詢(xún)和數(shù)據(jù)操作等基本語(yǔ)句。

SQL只有為數(shù)不多的幾條命令,且其語(yǔ)法接近英語(yǔ)口語(yǔ),十分簡(jiǎn)單,易學(xué)易用,對(duì)于數(shù)據(jù)統(tǒng)計(jì)方便直觀。SQL的數(shù)據(jù)定義、操作、查詢(xún)和控制功能的語(yǔ)言動(dòng)詞見(jiàn)表1。注意:

(1)SQL窗口中只能輸入一條SQL語(yǔ)句,但可分行輸入,系統(tǒng)會(huì)把分號(hào)“;”作為命令的結(jié)束標(biāo)志,但一般在輸入命令時(shí),不必人為地輸入分號(hào)。當(dāng)需要分行輸入時(shí),不能把SQL語(yǔ)句的關(guān)鍵字或字段名分在不同行。

(2)SQL語(yǔ)句中所有的標(biāo)點(diǎn)符號(hào)和運(yùn)算符號(hào)均為英文字符。

(3)每?jī)蓚€(gè)單詞之間至少要有一個(gè)空格或有必要的逗號(hào)。

2門(mén)診管理數(shù)據(jù)庫(kù)SQL查詢(xún)?cè)O(shè)計(jì)與實(shí)現(xiàn)

2.1門(mén)診管理數(shù)據(jù)庫(kù)介紹

“門(mén)診管理系統(tǒng)”數(shù)據(jù)庫(kù)的各個(gè)表設(shè)置表結(jié)構(gòu),描述如下(主鍵加下劃線(xiàn),外鍵斜體):

科室(科室號(hào),科室類(lèi)別,科室名稱(chēng),聯(lián)系方式,科室簡(jiǎn)介)

病人(病人ID,病人姓名,病人性別,出生日期,婚否,地址,城市,地區(qū),電話(huà),過(guò)敏史)

醫(yī)生(醫(yī)生工號(hào),醫(yī)生姓名,科室號(hào),職稱(chēng),最高學(xué)歷,是否黨員,照片)

藥品(藥品編號(hào),藥品名稱(chēng),藥品規(guī)格,單位,單價(jià),庫(kù)存量,訂購(gòu)量,中止)

處方(處方號(hào),病人ID,醫(yī)生工號(hào),開(kāi)出日期,臨床診斷)

處方明細(xì)(處方號(hào),藥品編號(hào),單位,數(shù)量,用法)

收費(fèi)單(收費(fèi)單號(hào),病人ID,醫(yī)療類(lèi)型,金額,日期)

掛號(hào)單(掛號(hào)單號(hào),掛號(hào)方式,日期,掛號(hào)費(fèi),病人ID,科室名稱(chēng),醫(yī)生工號(hào))

在“門(mén)診管理系統(tǒng)”數(shù)據(jù)庫(kù)中各個(gè)表之間的關(guān)系如圖1所示。

2.2數(shù)據(jù)表定義語(yǔ)句

(1)CREATE語(yǔ)句

建立數(shù)據(jù)庫(kù)的主要操作之一是定義基本表。在SQL語(yǔ)言中,可以使用CREATE TABLE語(yǔ)句定義基本表。

例1 在“門(mén)診管理”數(shù)據(jù)庫(kù)中建立表“醫(yī)生1”表,其結(jié)構(gòu)為(醫(yī)生工號(hào)/文本/6/主鍵,醫(yī)生姓名/文本/20,科室號(hào)/文本/3,職稱(chēng)/文本/10,最高學(xué)歷/文本/10,是否黨員/是否,照片/ OLE型)。

語(yǔ)句格式如下:

CREATE TABLE 醫(yī)生1(醫(yī)生工號(hào) TEXT(6) PRIMARY KEY, 醫(yī)生姓名 TEXT(8) NOT NULL, 科室號(hào) TEXT(3),職稱(chēng) TEXT(10),最高學(xué)歷 TEXT(10),是否黨員 LOGICAL,照片 GENERAL);

此例中,TEXT、LOGICAL、GENERAL分別代表文本型、是否型和OLE型,另外SMALLINT、INTEGER、FLOAT、MEMO、DATE分別代表整型、長(zhǎng)整型、雙精度型、備注型、日期型。

(2)ALTER語(yǔ)句

創(chuàng)建后的表可根據(jù)需要使用ALTER TABLE語(yǔ)句修改結(jié)構(gòu)。

例2 在表“醫(yī)生1”中增加一個(gè)“年齡”列,其語(yǔ)句格式如下:

ALTER TABLE醫(yī)生1 ?ADD年齡SMALLINT;

例3 刪除表“醫(yī)生1”中的“年齡”列,其語(yǔ)句格式如下:

ALTER TABLE 醫(yī)生1 ?DROP年齡;

(3)DROP語(yǔ)句

如果希望刪除某個(gè)不需要的表,可以使用DROP TABLE語(yǔ)句。

例3 刪除已建立的“醫(yī)生1”表,其語(yǔ)句格式如下:

DROP TABLE醫(yī)生1;

2.3數(shù)據(jù)操作語(yǔ)句

數(shù)據(jù)操作語(yǔ)句是完成數(shù)據(jù)操作的命令,它由INSERT(插入),DELETE(刪除),UPDATE(更新)和SELECT(查詢(xún))等組成。

(1)INSERT語(yǔ)句

INSERT語(yǔ)句實(shí)現(xiàn)數(shù)據(jù)的插入功能,可以將一條新記錄插入到指定表中。

例4 向醫(yī)生1表中添加一條記錄。

INSERT INTO 醫(yī)生1(醫(yī)生工號(hào), 醫(yī)生姓名, 科室號(hào),職稱(chēng),最高學(xué)歷,是否黨員) VALUES("028010","張揚(yáng)","028","住院醫(yī)師", "碩士",-1);

(2)UPDATE語(yǔ)句

UPDATE語(yǔ)句能夠?qū)χ付ū硭杏涗浕驖M(mǎn)足條件的記錄進(jìn)行更新操作。

例5在“門(mén)診管理”數(shù)據(jù)庫(kù)中復(fù)制“藥品”表生成“藥品1”表,將“藥品1”表所有膠囊(藥品名稱(chēng)后兩字是膠囊)的單價(jià)提高5%。

UPDATE 藥品1 ?SET 藥品1.單價(jià)=藥品1.單價(jià)*1.05 WHERE 藥品名稱(chēng) ?like ?"*膠囊";

(3)DELETE語(yǔ)句

DELETE語(yǔ)句用來(lái)對(duì)指定表所有記錄或滿(mǎn)足條件的記錄進(jìn)行刪除操作。

例6刪除藥品1表中所有單位為支的記錄。

DELETE ?FROM 藥品1 ?WHERE ?單位=“支”;

(4)SELECT 語(yǔ)句

數(shù)據(jù)查詢(xún)是數(shù)據(jù)庫(kù)的核心操作。SQL提供了SELECT語(yǔ)句進(jìn)行數(shù)據(jù)查詢(xún),SELECT 語(yǔ)句功能強(qiáng)大、使用靈活,是SQL語(yǔ)言的核心,具有強(qiáng)大的單表和多表查詢(xún)功能,正因?yàn)槿绱?,SELECT語(yǔ)句的可選項(xiàng)很多,語(yǔ)法也較復(fù)雜。其一般格式為:

SELECT ?[ALL︱DISTINCT] ?*︱<字段列表>

FROM <表名1>[,<表名2>] …

[WHERE <條件表達(dá)式>]

[GROUP BY <字段名> [HAVING <條件表達(dá)式>]]

[ORDER BY <字段名> [ASC︱DESC]];

命令格式中< >、[ ]分別表示必選項(xiàng)和可選項(xiàng);“|”表示其前后任選一項(xiàng)。

該語(yǔ)句從指定的基本表中,創(chuàng)建一個(gè)由指定范圍內(nèi)、滿(mǎn)足條件、按某字段分組、按某字段排序的指定字段組成的新記錄集。其中,ALL 表示檢索所有符號(hào)條件的記錄,默認(rèn)值為ALL;DISTINCT表示檢索要去掉重復(fù)行的所有記錄;*表示檢索結(jié)果包括所有的字段;<字段列表>使用“,”將項(xiàng)分開(kāi),這些項(xiàng)可以是字段、常數(shù)或系統(tǒng)內(nèi)部的函數(shù);FROM子句說(shuō)明要檢索的數(shù)據(jù)來(lái)自哪個(gè)或哪些表,可以對(duì)單個(gè)或多個(gè)表進(jìn)行檢索;WHERE子句說(shuō)明檢索條件,條件表達(dá)式可以是關(guān)系表達(dá)式,也可以是邏輯表達(dá)式;GROUP BY子句用于對(duì)檢索結(jié)果進(jìn)行分組,可以利用它進(jìn)行分組匯總;HAVING必須跟隨GROUP BY使用,它用來(lái)限定分組必須滿(mǎn)足的條件;ORDER BY 子句用來(lái)對(duì)檢索結(jié)果進(jìn)行排序,如果排序時(shí)選擇ASC,表示檢索結(jié)果按某一字段值升序排序,如果選擇DESC,表示檢索結(jié)果按某一字段值降序排列。

例7 查找并顯示醫(yī)生表中的所有字段。

SELECT ?* ?FROM ?醫(yī)生;

例8 查找并顯示醫(yī)生表中“醫(yī)生工號(hào)”“醫(yī)生姓名”“職稱(chēng)”和“是否黨員”4個(gè)字段。

SELECT醫(yī)生工號(hào),醫(yī)生姓名,職稱(chēng),是否黨員FROM 醫(yī)生;

例9查找職稱(chēng)為住院醫(yī)師的醫(yī)生,并顯示“醫(yī)生工號(hào)”,“醫(yī)生姓名”,“最高學(xué)歷”。

SELECT醫(yī)生工號(hào),醫(yī)生姓名,最高學(xué)歷 FROM 醫(yī)生 WHERE 職務(wù)=“住院醫(yī)師”;

例10 統(tǒng)計(jì)職稱(chēng)為主任醫(yī)師的人數(shù),并將計(jì)算字段命名為“主任醫(yī)師人數(shù)”。

SELECT COUNT(*) AS主任醫(yī)師人數(shù)FROM 醫(yī)生 GROUP BY 職稱(chēng) HAVING職稱(chēng)=“住院醫(yī)師”;

其中,AS子句后定義的是新字段名。

例11在處方明細(xì)表和藥品表檢索處方里哪些藥品,檢索結(jié)果按藥品編號(hào)升序排序。

SELECT DISTINCT 處方明細(xì).藥品編號(hào), 藥品.藥品名稱(chēng) FROM 處方明細(xì), 藥品

WHERE 處方明細(xì).藥品編號(hào)=藥品.藥品編號(hào) ORDER BY 處方明細(xì).藥品編號(hào);

在處方明細(xì)表中,同一藥品可以出現(xiàn)在多張?zhí)幏街?。這種藥品只顯示一次即可,所以加上唯一值的設(shè)置(DISTINCT)。

例12從“醫(yī)生”、“處方”兩個(gè)表中查詢(xún)每個(gè)處方的處方號(hào)、病人ID、醫(yī)生姓名、臨床診斷。

SELECT 處方.處方號(hào), 處方.病人ID, 醫(yī)生.醫(yī)生姓名, 處方.臨床診斷

FROM 醫(yī)生 INNER JOIN 處方 ON 醫(yī)生.醫(yī)生工號(hào) = 處方.醫(yī)生工號(hào);

當(dāng)查詢(xún)涉及兩個(gè)以上的表時(shí),該查詢(xún)稱(chēng)為連接查詢(xún)。

以2個(gè)表為例的命令格式為:

SELECT ?<字段列表> ?FROM <表名1> INNER JOIN <表名2> ?ON <連接條件>;

SELECT ?<字段列表> FROM <表名1> ,<表名2> ?WHERE ?<連接條件>

拓展到以3個(gè)表為例的命令格式為:

SELECT ?<字段列表> ?FROM <表名1> INNER JOIN (<表名2> INNER JOIN <表名3> ON<連接條件2>) ?ON <連接條件1>;

SELECT ?<字段列表> ?FROM <表名1> ,<表名2>,<表名3> WHERE <連接條件1> AND <連接條件2>;

例13從“醫(yī)生”“處方”兩個(gè)表中查詢(xún)每個(gè)處方的處方號(hào)、病人ID、醫(yī)生姓名、臨床診斷。

SELECT 處方.處方號(hào), 處方.病人ID, 病人.病人姓名, 醫(yī)生.醫(yī)生姓名, 處方.臨床診斷

FROM 醫(yī)生 INNER JOIN (病人 INNER JOIN 處方 ON 病人.病人ID = 處方.病人ID)

ON 醫(yī)生.醫(yī)生工號(hào) = 處方.醫(yī)生工號(hào);

在數(shù)據(jù)庫(kù)應(yīng)用開(kāi)發(fā)中SQL語(yǔ)言應(yīng)用廣泛,并且有些查詢(xún)只能通過(guò)編寫(xiě)SQL語(yǔ)句實(shí)現(xiàn),掌握SQL語(yǔ)句非常重要。而通過(guò)在實(shí)際數(shù)據(jù)庫(kù)中設(shè)計(jì)實(shí)例并運(yùn)行相應(yīng)的命令是SQL語(yǔ)句的掌握的最佳途徑。

參考文獻(xiàn):

[1] 朱燁 張敏輝.數(shù)據(jù)庫(kù)技術(shù)原理與設(shè)計(jì)[M].北京:高等教育出版社,2017.

[2] 王軍委.Access數(shù)據(jù)庫(kù)應(yīng)用基礎(chǔ)教程[M].北京:清華大學(xué)出版社,2014.

【通聯(lián)編輯:梁書(shū)】

猜你喜歡
數(shù)據(jù)表數(shù)據(jù)庫(kù)
聯(lián)合收獲機(jī)知識(shí)庫(kù)數(shù)據(jù)多表聯(lián)合查詢(xún)方法研究
湖北省新冠肺炎疫情數(shù)據(jù)表(2.26-3.25)
基于列控工程數(shù)據(jù)表建立線(xiàn)路拓?fù)潢P(guān)系的研究
圖表
基于VSL的動(dòng)態(tài)數(shù)據(jù)表應(yīng)用研究