數據庫技術——SQL(常用SQL操作簡介:查詢,定義,更新)

SQL——Structured Query Language 結構化查詢語言

  • 特點

    • 綜合統一

      • 數據定義語言DDL,數據操縱語言DML,數據控制語言DCL集於一體
      • 可獨立完成數據庫的全部活動
    • 高度非過程化

      • 只提出作什麼,無需瞭解存取路徑
    • 面向集合操作方式

      • 一次插入,刪除,更新的對象是元組的集合
    • 多種使用方式

      • 交互式SQL
        • 直接鍵入SQL命令進行操作
        • 有DBMS進行解釋
      • 嵌入式SQL
        • 將SQL語句嵌入到高級語言
        • 使應用程序充分利用SQL訪問數據庫的能力,宿主語言的過程處理能力
        • 一般需要預編譯,將嵌入SQL語句轉化爲宿主語言編譯器能處理的語句
  • 核心功能

    • 數據定義:刪除,修改基本表,視圖,索引
    • 數據操縱:數據的增刪查改
    • 數據控制:權限授予,收回
      在這裏插入圖片描述
  • 體系結構
    在這裏插入圖片描述

    • 基本表
      • 本身獨立存在的表,一個關係對應一個基本表
      • 一個或多個基本表對應一個存儲文件
      • 一個表可以帶若干索引
    • 存儲文件
      • 邏輯結構組成關係數據庫的內模式
      • 物理結構任意的,透明的
    • 視圖
      • 從一個或幾個基本表導出來的表
      • 數據庫中只存放視圖的定義而不存放視圖的數據
      • 視圖是一個虛表,用戶可以在視圖上定義視圖
  • SQL操作

    • 數據查詢
      • 單表查詢
select 指定列 from 表名
select 指定列 別名, 指定列2 別名2 ... from student          #這裏的指定列的別名用來更改查出來的值的列名
select distinct 列名 from 表名                              #distinct 是指去掉表中重複的行
select 列名 from 表名 where 條件表達式                       #這裏條件表達式有 >= <= =  != AND,OR,NOT,LIKE,IN,BETWEEN AND ......
select 列名 from 表名 where 列名 LIKE 'DB\_%i__' ESCAPE '\\' #這裏LIKE爲比較,%爲通配符,ESCAPE '\\' 爲換碼字符,即轉義字符,從查詢以DB_ 開頭且以 倒數第三個字母爲i的字母的行
select 列名 from 表名 where 條件表達式 order by 列名 desc(asc)#指定列升序或者降序排列
#聚集函數:COUNT(),SUM(),AVG(),MAX(),MIN()等
select MAX(屬性名) from 表名 where 條件表達式
#GROUP BY 對查詢結果進行分組
select 列名 from 表名 group by 列名 having 條件             #對分組進行條件篩選
  • 集合查詢(UNION,INTERSECT,EXCEPT)
select * fromwhere xxx UNION select * fromwhere xxx         #UNION 將多個查詢結果合併起來 相當於OR
select * fromwhere xxx INTERSECT select * fromwhere xxx     #INTERSECT將多個查詢結果合併起來  相當於AND 
select * fromwhere xxx EXCEPT select * fromwhere xxx        #EXCEPT 差,前者所查詢的結果-後者查詢到的結果
  • 連接查詢(多表查詢)
#表名1.列名 比較運算符  表名2.列名
select1.,2.from1,表2 where 條件
  • 嵌套查詢

    • select-from-where 爲一個查詢塊,將一個查詢塊嵌套在另一個where 中稱爲循環嵌套
    • select * from 表 where (select * from 表 where xx)
    • 不相關子查詢:子查詢的查詢條件不依賴於父查詢
    • 相關子查詢:子查詢的條件依賴父查詢
    • 帶有IN的子查詢
    • select * from 表 where 列 IN ( select 列 from 表 where xx)
    • 帶有比較運算符的子查詢
      • 能確切的知道內層查詢返回的是單值時,可以用比較運算符> < >= …
    • 帶有ANY或ALL的子查詢
      • 大於ANY 大於某一個值
      • 大於ALL 大於任意一個值
    • select 列 from 表名 where 列 > ANY( select * from 表 ...)
    • 帶有EXISTS的子查詢
    • select * from 表 where EXIST (select * from 表 where xx)
  • 數據定義
    在這裏插入圖片描述

    • 模式的定義
      • create schema 模式名 authorization 用戶名 #爲用戶名定義一個模式,可以沒有模式名,模式名默認爲用戶名
      • drop schema 模式名 <cascade / restrict> #cascade 級聯,刪除模式的同時把該模式所有數據都刪除,restrict 如果定義了下屬的數據庫對象,則拒絕刪除語句的執行。
    • 基本表的定義
      • 數據類型
        在這裏插入圖片描述
      • create table 表名 (列名 數據類型 約束條件,...)
      • alter table 表名 ADD/DROP/ALTER 列名 ...
      • drop table 表名 restrict/cascade #刪除表,restrict 有限值的刪除,如果存在依賴該表的對象,則不進行刪除,cascade 強制刪除
    • 索引的定義:爲了加快查詢速度
      • create unique/cluster index 索引名 on 表名(列名...) #cluster聚簇索引,一個基本表最多建立一個,unique 爲唯一索引
      • drop index 索引名
  • 數據更新

    • 插入數據
    • insert into 表名 (屬性列1,屬性列2...) values (常量1,常量2...)
    • 修改數據
    • update 表名 set 列名 = 表達式,... where 條件表達式
    • 刪除數據
    • delete from 表名 where 條件表達式
  • 視圖

    • 特點
      • 從一個或者多個基本表中導出的表
      • 只存放視圖的定義,不存放視圖對應的數據
    • 定義視圖
    • create view 視圖名 列名1,列名2... as 子查詢 with check option #自動檢查屬性是否爲IS
    • 刪除視圖
    • drop view 視圖名
    • 查詢視圖
    • select 屬性列 from 視圖名 where 條件
    • 更新視圖
    • update 視圖名 set 屬性列 = 值 ... where 條件表達式e

End

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章