SQL語言概述

来源:http://www.cnblogs.com/xidongyu/archive/2016/10/22/5988549.html
-Advertisement-
Play Games

功能概述 DDL,資料庫定義語言,創建,修改,刪除資料庫,表,視圖,索引,約束條件等 DML,資料庫操縱語言,對資料庫中的數據進行增,刪,改,查 DCL,資料庫定義語言,對資料庫總數據的訪問設置許可權 SQL語言是集DDL,DML,DCL為一體的資料庫語言,學好資料庫首先要掌握下麵9個引導詞 DDL語... ...


功能概述

  • DDL,資料庫定義語言,創建,修改,刪除資料庫,表,視圖,索引,約束條件等
  • DML,資料庫操縱語言,對資料庫中的數據進行增,刪,改,查
  • DCL,資料庫定義語言,對資料庫總數據的訪問設置許可權

SQL語言是集DDL,DML,DCL為一體的資料庫語言,學好資料庫首先要掌握下麵9個引導詞

  • DDL語言引導詞:CREATE(創建),ALTER(修改),DROP(撤銷)
  • DML語言引導詞:INSERT(增),DELETE(刪),UPDATE(改),SELECT(查)
  • DCL語言引導詞:GRANT(授權),REVOKE(調用)

創建表

image

下麵來創建多個表

學生表:學號(sn),姓名(sname),性別(sex),年齡(sage), 所屬系(dn),班級(sclass)

create table student( sn char(8), sname char(10), ssex char(2), sage integer, dn char(2), sclass char(6)) engine=MYISAM character set utf8;

INSERT INTO student (sn,  sname,  ssex,  sage,  dn,  sclass) VALUES ('98030101',    '張三',    '男',    '20',    '03',    '980301'  ) ;

院系表:系別(dn),系名(dname),系主任(dean)

create table dept(dn char(2), dname char(10), dean char(10)) engine=MYISAM character set utf8;

INSERT INTO dept(dn, dname, dean) VALUES("01", "機電", "李三");

課程表:課程號(cn),課程名(cname),教師編號(tn),學時(chours),學分(credit)

create table course(cn char(3), cname char(12), tn char(3), chours integer, credit float(1)) engine=MYISAM character set utf8;

INSERT INTO course(cn, cname, tn, chours, credit) VALUES("001", "資料庫", "001", 40, 6);

教師表:教師編號(tn),教師名(tname),所屬院系(dn),工資(salary)

create table teacher(tn char(3), tname char(10), dn char(2), salary float(2)) engine=MYISAM character set utf8;

INSERT INTO teacher(tn, tname, dn, salary) VALUES ("001", "趙三", "01", 1200.00);

選課表:學號(sn),課程號(cn),成績(score)

create table sc(sn char(8), cn char(3), score float(1)) engine=MYISAM character set utf8;

INSERT INTO sc(sn, cn, score) VALUES ("980230101", "001", 92);

下麵是創建後完整的表

student

image

dept

image

teacher

image

course

image

sc

image

簡單查詢操作

  • 檢索學生表中所有年齡小於等於19歲的學生姓名和年齡

SELECT sname, sage FROM student WHERE sage<=19;

image

  • 檢索教師表中所有工資 少於1500元或者工資大於2000元,並且是03系的教師姓名(註意括弧)

SELECT tname
FROM teacher
WHERE (salary<1500 OR salary>2000) AND dn="03";

image

  • 求既學過001課程又學過002課程的同學學號(錯誤版)

SELECT sn
FROM sc
WHERE cn="001" AND cn="002";

上面的語句是錯誤的,因為WHERE條件是對每條記錄進行檢查,在一條記錄中cn不可能同時為001又為002

  • 在選課表中查詢成績大於80分的學號(結果重覆版)

SELECT sn
FROM sc
WHERE score>80;

image

  • 在選課表中查詢成績大於80分的學號(結果未重覆)

SELECT DISTINCT sn
FROM sc
WHERE score>80;

image

  • 按學號由小到大的順序顯示出所有學生的學號和姓名

SELECT sn,sname
FROM student
ORDER BY sn ASC;

ORDER是對查詢後的結果進行排序

image

  • 檢索002號課大於80分的所有同學學號並按成績由高到低順序顯示

SELECT sn
FROM sc
WHERE score>80 AND cn="002"
ORDER BY score DESC;

image

模糊查詢

模糊查詢是當我們不能精確查詢條件時,可以使用的。比如我們想找一個人,但只知道這個人姓張,這時候我們可以通過模糊查詢來找出姓張的,然後做具體分析。

  • 檢索所有姓張的同學

SELECT sname
FROM student
WHERE sname LIKE "張%";

%號表示匹配零個或多個字元

image

  • 檢索名為張某某的同學姓名

SELECT sname
FROM student
WHERE sname LIKE "張__";

註意張後面是兩個下劃線,一個下劃線代表一個字元。

  • 檢索不姓張的同學姓名

SELECT sname
FROM student
WHERE sname NOT LIKE "張%";

image

多表聯合查詢

多表聯合查詢涉及到表的連接操作,通過通過將多個表連成一張大表,然後做查詢操作。前面我們在關係代數中提到表的連接可以通過笛卡爾積+選擇來實現,而SQL中也是這樣處理的。

  • 按001號課成績由高到低順序顯示所有學生的姓名

SELECT DISTINCT sname
FROM student,sc
WHERE student.sn=sc.sn AND sc.cn="001"
ORDER BY score DESC;

先將student和sc表進行笛卡爾積運算形成一張大表,然後執行WHERE條件判斷進行選擇,接著執行排序操作,最後將需要的屬性值投影出來。

image

  • 按資料庫課成績從高到底顯示同學姓名

SELECT DISTINCT sname
FROM student,sc,course
WHERE student.sn=sc.sn AND sc.cn=course.cn AND course.cname="資料庫"
ORDER BY score DESC;

image

重名操作

當表自連接時需要對錶進行重名操作,不僅對錶起別名而且需要對投影的列也要進行別名處理。

image

as是可以省略的

  • 查詢薪水有差額的老師姓名

SELECT T1.tname AS teacher1,T2.tname AS teacher2
FROM teacher AS T1,teacher AS T2
WHERE T1.salary > T2.salary;

註意:查詢後列名發生了變化

image

  • 查詢既學過001課程又學過002課程的學生學號

SELECT sc1.sn
FROM sc AS sc1, sc AS sc2
WHERE sc1.cn="001" AND sc2.cn="002" AND sc1.sn=sc2.sn;

image

我們可以看到上面的操作中未對屬性名進行別名處理,是因為查詢的結果集中屬性名不衝突。

插入操作

簡單的插入操作我們在創建表的時候已經介紹過了,下麵介紹一下更為複雜操作。

下圖中是將從student表中找到的數據直接插入到st(sn,sname)當中去。由此可看出,insert語句後面是可以跟子查詢的。

image

刪除操作

  • 刪除98030101號同學所選的課程

DELETE FROM sc WHERE sn="98030101";

更新操作

語法格式

image

  • 將所有教師工資上調5%

UPDATE teacher SET salary=salary*1.05;

修改表的定義

image


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 目前由於業務需要需要在地圖上顯示離坐標點最近的服務網點信息 前提:定位坐標與網點坐標均知曉: 演算法: ...
  • 一、下載及安裝MongoDB MongoDB下載官網鏈接:http://www.mongodb.org/downloads 具體安裝步驟教程:http://www.shouce.ren/api/view/a/6191(PS:該鏈接中對MongoDB安裝講解比較詳細,通俗易懂。安裝教程鏈接是我從手冊網 ...
  • 如何把mysql的列修改成行顯示數據簡單實現 創建測試表: 1: DROP TABLE IF EXISTS `test`;<!--CRLF--> 2: CREATE TABLE `test` (<!--CRLF--> 3: `year` int(11) DEFAULT NULL,<!--CRLF-- ...
  • 出處:kelvin19840813 的博客 http://www.cnblogs.com/kelvin19840813/ 您的支持是對博主最大的鼓勵,感謝您的認真閱讀。本文版權歸作者所有,歡迎轉載,但請保留該聲明。 引用wiki: https://zh.wikipedia.org/wiki/%E6% ...
  • 在安裝mysql的過程中,出現的最麻煩的問題和解決方法 安裝後,啟動不成功,就卡了,程式就沒有響應。 如何解決: 找到mysql安裝目錄下的 #Path to the database root datadir="C:/ProgramData/MySQL/MySQL Server 5.5/Data/... ...
  • 一、添加數據。 -- 1.創建表,並插入一定的數據。 -- 2.插入部分數據 二、修改數據 --1.根據條件修改數據 --2.修改多個欄位的內容 三、刪除數據(暫無演示) -- 7.刪除所有數據 -- 可以帶條件刪除,只能刪除表的數據,不能刪除表的約束,即自增長數值接著上次刪除的數值增長,刪除數據可 ...
  • 使用xcode去開發makefile的project(Building Makefile Projects With Xcode)新建工程,template選擇 external Build System添加所有的源碼到工程中。新建一個target,template選擇 external Buil... ...
  • 【函數】Oracle函數系列(1)--字元函數 1 BLOG文檔結構圖 2 前言部分 2.1 導讀和註意事項 各位技術愛好者,看完本文後,你可以掌握如下的技能,也可以學到一些其它你所不知道的知識,~O(∩_∩)O~: ① 常見字元函數(lower、upper、initcap、concat、subst ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...