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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...