• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

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

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

      張建莉 高欣

      摘要:結(jié)構(gòu)化查詢語(yǔ)言(Structured Query Language,SQL)是一種通用的、功能性極強(qiáng)的國(guó)際標(biāo)準(zhǔn)關(guān)系數(shù)據(jù)庫(kù)語(yǔ)言。本文以ACCESS為操作平臺(tái),結(jié)合自行設(shè)計(jì)的門診管理數(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)化查詢語(yǔ)言;數(shù)據(jù)庫(kù);數(shù)據(jù)表;查詢

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

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

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

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

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

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

      SQL只有為數(shù)不多的幾條命令,且其語(yǔ)法接近英語(yǔ)口語(yǔ),十分簡(jiǎn)單,易學(xué)易用,對(duì)于數(shù)據(jù)統(tǒng)計(jì)方便直觀。SQL的數(shù)據(jù)定義、操作、查詢和控制功能的語(yǔ)言動(dòng)詞見表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門診管理數(shù)據(jù)庫(kù)SQL查詢?cè)O(shè)計(jì)與實(shí)現(xiàn)

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

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

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

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

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

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

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

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

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

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

      在“門診管理系統(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 在“門診管理”數(shù)據(jù)庫(kù)中建立表“醫(yī)生1”表,其結(jié)構(gòu)為(醫(yī)生工號(hào)/文本/6/主鍵,醫(yī)生姓名/文本/20,科室號(hào)/文本/3,職稱/文本/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),職稱 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(查詢)等組成。

      (1)INSERT語(yǔ)句

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

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

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

      (2)UPDATE語(yǔ)句

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

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

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

      (3)DELETE語(yǔ)句

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

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

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

      (4)SELECT 語(yǔ)句

      數(shù)據(jù)查詢是數(shù)據(jù)庫(kù)的核心操作。SQL提供了SELECT語(yǔ)句進(jìn)行數(shù)據(jù)查詢,SELECT 語(yǔ)句功能強(qiáng)大、使用靈活,是SQL語(yǔ)言的核心,具有強(qiáng)大的單表和多表查詢功能,正因?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)、滿足條件、按某字段分組、按某字段排序的指定字段組成的新記錄集。其中,ALL 表示檢索所有符號(hào)條件的記錄,默認(rèn)值為ALL;DISTINCT表示檢索要去掉重復(fù)行的所有記錄;*表示檢索結(jié)果包括所有的字段;<字段列表>使用“,”將項(xiàng)分開,這些項(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)限定分組必須滿足的條件;ORDER BY 子句用來(lái)對(duì)檢索結(jié)果進(jìn)行排序,如果排序時(shí)選擇ASC,表示檢索結(jié)果按某一字段值升序排序,如果選擇DESC,表示檢索結(jié)果按某一字段值降序排列。

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

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

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

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

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

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

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

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

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

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

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

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

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

      例12從“醫(yī)生”、“處方”兩個(gè)表中查詢每個(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)查詢涉及兩個(gè)以上的表時(shí),該查詢稱為連接查詢。

      以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è)表中查詢每個(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)用開發(fā)中SQL語(yǔ)言應(yīng)用廣泛,并且有些查詢只能通過(guò)編寫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ù)據(jù)表數(shù)據(jù)庫(kù)
      聯(lián)合收獲機(jī)知識(shí)庫(kù)數(shù)據(jù)多表聯(lián)合查詢方法研究
      湖北省新冠肺炎疫情數(shù)據(jù)表(2.26-3.25)
      湖北省新冠肺炎疫情數(shù)據(jù)表
      黨員生活(2020年2期)2020-04-17 09:56:30
      基于列控工程數(shù)據(jù)表建立線路拓?fù)潢P(guān)系的研究
      數(shù)據(jù)庫(kù)
      數(shù)據(jù)庫(kù)
      數(shù)據(jù)庫(kù)
      數(shù)據(jù)庫(kù)
      數(shù)據(jù)庫(kù)
      圖表
      剑河县| 庆元县| 永州市| 元氏县| 晋江市| 乌兰察布市| 申扎县| 三江| 临城县| 河池市| 宣汉县| 巫山县| 婺源县| 平谷区| 宜兰市| 嘉善县| 勐海县| 昭平县| 穆棱市| 侯马市| 武陟县| 寻乌县| 固始县| 株洲市| 全州县| 清镇市| 长武县| 库尔勒市| 阳泉市| 安福县| 铁岭市| 新巴尔虎左旗| 满洲里市| 大石桥市| 桂阳县| 长武县| 新营市| 治县。| 招远市| 鞍山市| 军事|