SQL I
SQL I 資料庫
i think you have gotten know what is that in vacational high school
HAHA but ...let,s review it
All right What is SQL
Structure Query Language
是一種特定目的程式語言,用於管理關聯式資料庫管理系統(RDBMS),或在關係流資料管理系統(RDSMS)中進行流處理。 (當然還有另一種東西叫NoSQL) 指令參考
So in summary SQL used for DB(DataBase)
DB(DataBase)
broad sense: that mean the place where we store data narrow sense: DB is set of a group of common data
Application Example: phone contact(if we didn,t set up of our DB )
benefit of DB
- Redundancy
- Consistency
- Data Sharing
- Data Indepence
- Integrity
- Reduce Paper
- Security
What are you waiting for Just Download
Yah! introduce DB
延伸閱讀
DT稍後介紹(先知道DB 有很多的DT)
DataTable
資料庫的儲存方式長的很像Excel
橫看Row 直看Col
DataBase 結構
Bit -> Byte -> Field -> Record -> Table -> Data Base
主要要知道
- 一個DB Server 可以有很多DataBase(資料庫)
- 一個DataBase 可以有很多 Datatable(資料表)
- 一個Datatable 可以有很多 Record(資料紀錄)
- 一個Record 可以有很多Field/Column(資料欄位)
DB VS DBMS
DataBase vs DataBase Management System
what DBMS is you know?
Download Example
開啟SQLite Studio 並且匯入這個SQL檔案
You will see Database name and what datatables it involve
傳說中資料庫有四種基礎命令
也就是SUID Select Update Insert Delete 選擇 更新 插入 刪除 概念跟CRUD一樣
Select 查詢
SELECT * FROM `Class`;
"* 為所謂的萬用字元 也就是全部的意思" 那語法總得來說就是
SELECT * FROM `資料表`;
當然我們也可以不一定要Show出全部的Columns(欄位) 也能一次抓多欄/單欄
SELECT (`Class_name`) FROM `Class`; --單欄 Class_name
SELECT (`Class_name`,`Class_id`) FROM `Class`; --多欄 Class_id
稍微進階的查詢Query我們可以像程式語言一樣加入查詢條件,但...
不是If 是Where 來個範例吧
SELECT * FROM `Class` WHERE `Class_name` = "四資管二A";
你會發現語法是WHERE [condition]
Insert 插入
INSERT INTO `Class` (`Class_name`,`Class_id`) VALUES ("四企管二A","4");
INSERT INTO `Class` VALUES ("四企管二A","4");--插入全欄位值 且Value插入順序正確可忽略欄位名稱
INSERT INTO `資料表` (`欄位1`,`欄位2`,...) VALUES ("Value1","Value2",...);
做完之後 Class 資料表就多了一個 四企管二A了
Update 更新
UPDATE `Class` SET `Class_name`="四企管二Z" WHERE `Class_name` = "四企管二A";
UPDATE `資料表` SET `欄位名稱1`=`欄位值1`,`欄位名稱2`=`欄位值2`... [WHERE {條件式}]
四企管二A 變成 四企管二Z 了XD
Delete 刪除
DELETE FROM `Class` WHERE `Class_name`="四企管二Z";
DELETE FROM `資料表` WHERE 條件式;
企管88
玩了這麼多 我提供的資料庫是時候自己創建了
Create 創建資料表\資料庫
還記得這張圖嗎
所以我們必須把最外層的DB建立起來
CREATE DATABASE [database_name];
同樣 建立一張DT
CREATE DATATABLE [datatable_name](
col1 datatype,
col2 datatype,
col3 datatype,
);
--======
CREATE TABLE customers (
C_Id INT,
Name varchar(50),
Address varchar(255),
Phone varchar(20)
);
ALTER 修改資料表
增加欄位
ALTER TABLE table_name ADD column_name datatype;
更改資料欄位型別(沒錯ALTER 再ALTER)
ALTER TABLE table_name ALTER COLUMN column_name datatype;
刪除欄位 (DROP COLUMN)
ALTER TABLE table_name DROP COLUMN column_name;
DROP 刪除資料表
刪除資料表 (DROP TABLE)
完全刪除整個資料表。
DROP TABLE table_name;
僅刪除資料表內容,但保留結構 (TRUNCATE TABLE)
TRUNCATE TABLE table_name;
資料表還在,只是資料清空了。
刪除資料庫 (DROP DATABASE)
DROP DATABASE database_name;
蝦 指令超多? 這只是皮毛 接下來講講限制
資料庫限制 SQL Consraints 有六個類別 通常是拿來限制 欄位可/不可 更動或新增的條件
- NOT NULL 非空值限制
- UNIQUE 唯一限制
- PRIMARY KEY 主鍵限制
- FOREIGN KEY 外鍵限制
- CHECK 檢查限制
- DEFAULT 預設值限制
情境 顧客資料表
由於不能有顧客的編號(ID)為空值 我們會再設計DT的時候添加 NOT NULL
CREATE TABLE customer (
C_Id INT NOT NULL,
Name VARCHAR(50) NOT NULL,
Address VARCHAR(255),
Phone VARCHAR(20)
);
承上題情境
由於顧客編號(ID)不能有重複的 為了避免衝突 我們也可以加入UNIQUE
CREATE TABLE customer (
C_Id INT NOT NULL UNIQUE,
Name VARCHAR(50) NOT NULL,
Address VARCHAR(255),
Phone VARCHAR(20)
);
--OR
CREATE TABLE customer (
C_Id INT NOT NULL,
Name VARCHAR(50) NOT NULL,
Address VARCHAR(255),
Phone VARCHAR(20),
UNIQUE (C_Id)
);
關聯(Relation)
指令變化
資料庫有很多廠商 基本上都遵循ISO的SQL標準但是各家的指令與語法還是會有差別(每個DB怎麼操作 有時候需要特別去查)
雖然SQL指令百百種 但是...
師父領進門修行靠個人