1. 程式人生 > 其它 >資料庫學習SQL知識再學習

資料庫學習SQL知識再學習

技術標籤:資料庫

1.1 認識資料據庫

資料庫是將大量資料儲存起來,通過計算機加工而成的可以進行高效訪問的資料集合。該資料集合稱為資料庫(Database,DB)。用來管理資料庫的計算機系統稱為資料庫管理系統(Database Management System,DBMS)。

1.1.1 DBMS的分類

DBMS主要通過資料的儲存格式(資料庫的種類)進行分類,主要有五種型別。

  • 層次資料庫(HDB)
  • 關係資料庫(RDB)

這種DBMS稱為關係資料庫管理系統(RDBMS)如 MySql SQL Server Oracle等。

  • 面向物件資料庫(OODB)
  • 鍵值儲存系統(KVS)

如Redis MongDB等

  • xml資料庫(XMLDB)

1.1.2 RDBMS常見系統結構

使用RDBMS,最常見的系統結構是client/serve(c/s)這種結構。
在這裡插入圖片描述

1.2 瞭解sql

在資料庫中行稱為記錄,對應表中一條記錄,列稱為欄位,代表表中資料的資料列。類似於excel表的行和列。
SQL(Structured Query Language:結構化查詢語言),其實sql只是用來操作資料庫的一種語言,對於不同的RDBMS編寫的sql規範也不同,類似於每個地方都有方言一樣。
SQL語句可以分為三類:

  • DDL

DDL(Data Definition Language,資料定義語言) 用來建立或者刪除儲存資料用的資料庫以及資料庫中的表等物件。DDL 包含以下幾種指令。

  • CREATE : 建立資料庫和表等物件
  • DROP : 刪除資料庫和表等物件
  • ALTER : 修改資料庫和表等物件的結構
  • DML

DML(Data Manipulation Language,資料操縱語言) 用來查詢或者變更表中的記錄。DML 包含以下幾種指令。

  • SELECT :查詢表中的資料
  • INSERT :向表中插入新資料
  • UPDATE :更新表中的資料
  • DELETE :刪除表中的資料
  • DCL

DCL(Data Control Language,資料控制語言) 用來確認或者取消對資料庫中的資料進行的變更。除此之外,還可以對 RDBMS 的使用者是否有許可權操作資料庫中的物件(資料庫表等)進行設定。DCL 包含以下幾種指令。

  • COMMIT : 確認對資料庫中的資料進行的變更
  • ROLLBACK : 取消對資料庫中的資料進行的變更
  • GRANT : 賦予使用者操作許可權
  • REVOKE : 取消使用者的操作許可權

1.2.1 SQL基本書寫規範

  • SQL語句要以分號( ; )結尾。
  • SQL 不區分關鍵字的大小寫,但是插入到表中的資料是區分大小寫的。
  • 單詞需要用半形空格或者換行來分隔。

1.2.2 資料庫的建立

語法:

CREATE DATABASE DATABASENAME;

在這裡插入圖片描述

1.2.3 表的建立

語法:

CREATE TABLE  TABLENAME 
(  列名 1  資料型別   該列所需約束  ,
   列名 2  資料型別   該列所需約束  ,
   列名 3  資料型別   該列所需約束  ,
   列名 4  資料型別   該列所需約束  ,
  ...
   表約束1 ,  表約束2 ,……);

在這裡插入圖片描述

1.2.4 命名規則

  • 只能使用英文字母、數字、下劃線(_)作為資料庫、表和列的名稱
  • 名稱必須以半形英文字母開頭

1.2.5 資料型別的指定

資料庫建立時,每一列都要指定相應的資料型別,儲存的資料必須和每一列指定的資料型別一致。
常見基本資料型別:

  • INTEGER 型

用來指定儲存整數的列的資料型別(數字型),不能儲存小數。

  • CHAR 型

用來儲存定長字串,當列中儲存的字串長度達不到最大長度的時候,使用半形空格進行補足,由於會浪費儲存空間,一般不使用。

  • VARCHAR 型

用來儲存可變長度字串,定長字串在字元數未達到最大長度時會用半形空格補足,但可變長字串不同,即使字元數未達到最大長度,也不會用半形空格補足。

  • DATE 型

用來指定儲存日期(年月日)的列的資料型別(日期型)。

1.2.6 約束的設定

約束實現的是對錶中儲存資料進行限制和追加條件的功能。

  • NOT NULL是非空約束,即該列必須輸入資料。
  • PRIMARY KEY是主鍵約束,代表該列是唯一值,可以通過該列取出特定的行的資料。
  • UNIQUE是唯一性約束,表示該欄位具有唯一性,不可重複,但可以為null。

1.2.7表的刪除和更新

刪除表語法:

DROP TABLE TABLENAME;

在這裡插入圖片描述

  • 新增列的ALTER TABLE語句
ALTER TABLE TABLENAME ADD COLUMN  列的定義 ;

在這裡插入圖片描述

  • 刪除列的 ALTER TABLE 語句
ALTER TABLE TABLENAME DROP COLUMN  列名 ;

在這裡插入圖片描述

  • 清空表內容
TRUNCATE TABLE TABLE_NAME;

相比DROP/DELETE ,TRUNCATE清除資料的速度更快。

  • 資料的更新
    語法:
UPDATE 表名
   SET 列名 = 表示式 [, 列名2=表示式2...];  
 WHERE 條件;  -- 可選,非常重要。
 ORDER BY 子句;  --可選
 LIMIT 子句; --可選

修改時間:
在這裡插入圖片描述
通過設定欄位的值為NULL可以將欄位的資料更新為NULL
在這裡插入圖片描述
UPDATE語句的SET子句支援同時將多個列作為更新物件。
在這裡插入圖片描述

1.2.8 插入資料

基本語法:

INSERT INTO TABLENAME (1,2,3, ……) VALUES (1,2,3, ……);  

使用INSERT 插入資料時,可以忽略表名後面的列清單。
通常的INSERT
在這裡插入圖片描述
多行的INSERT
在這裡插入圖片描述
可以使用INSERT … SELECT 語句從其他表複製資料。
在這裡插入圖片描述
在dataw表中看到從datawhale表中複製過來的資料
在這裡插入圖片描述