14 CRDS 資源詳解(轉載)
阿新 • • 發佈:2022-12-02
Structured Query Language
結構化的查詢語言
熟練使用MySQL,Oracle,SQLServer主流資料庫之一
SQL規範
SQL方言
SQL分類
DDL 資料定義語言 Data Definition Language
物件建立create,刪除drop,修改alter
DCL 資料控制語言 Data Control Language
許可權 grant revoke deny
DML 資料操作語言 Data Manipulation Language
資料的增insert刪delete改update
DQL 資料查詢語言 Data Query Language
資料的查詢select
DTL 資料事務語言 Data Transaction Language
commit
rollback
SQL語句不分大小寫,MySQL官方推薦大寫。
我們寫小寫。
建立資料庫
-- 切換資料庫
use 資料庫名;
-- 當前伺服器的所有資料庫
show databases;
-- 當前伺服器的所有表
shwo tables;
-- 單行註釋
#單行註釋
/*
多行註釋
多行註釋
*/
-- 建立資料庫
CREATE DATABASE IF NOT EXISTS db2;
-- 刪除資料庫
DROP DATABASE IF EXISTS db2;
建立表
設計一張表有多少列,每列的名字和對應的資料型別
int
flaot
double
decemal
date 日期
time 時間
datetime 日期時間
char(50)
固定長度字串:該列的實際長度沒有到達設計時候的最大長度,實際佔用的儲存空間也是50個
varchar(50)
可變長度字串:該列的實際長度沒有到達設計時候的最大長度,實際佔用的儲存空間就是真實長度
11手機號碼 char(11)用這種
郵箱 varchar(50) 用這種
建立約束
主鍵
唯一鍵
非空
自動增長
預設值
外來鍵
檢查約束
主鍵
任何一張表必須有主鍵
主鍵是一行資料的唯一標誌
主鍵必須非空
一個表只能有一個
主鍵的選擇策略:
選擇不重複的列
單列
複合主鍵:多列資料組合,沒有重複,共同做主鍵。影響查詢效能,不推薦使用
新增一個列:讓同充當主鍵
業務邏輯規定
學院編號-系編號-年級-班
自動增長
配合主鍵使用
自增的資料是底層自動維護,刪除資料,再新增,不能保證自增資料連續
非空
not null 必填
null 可選
唯一約束
該列資料不能重複
唯一約束可以有多個
唯一約束可以為null
常見的列
登入名 手機號碼 郵箱
預設值
設定了預設值約束,輸入資料的時候該列沒有輸入,自動使用預設值填充
檢查約束
MySQL不支援
外來鍵
關係型資料庫:表和表之間有關係
冗餘:大量重複資料
解決冗餘:
拆表
子表外來鍵引用主表的主鍵或者唯一鍵
使用SQL建表和約束
CREATE TABLE student(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(10) NOT NULL,
loginname VARCHAR(10) UNIQUE,
age INT NOT NULL,
address VARCHAR(50) DEFAULT 'cd'
)
CREATE TABLE dep(
did INT PRIMARY KEY,
dname VARCHAR(10)
);
CREATE TABLE emp(
eid INT PRIMARY KEY,
ename VARCHAR(10),
did INT ,
-- CONSTRAINT 外來鍵名 FOREIGN KEY(外來鍵類名) FOREIGN KEY 主表(主鍵)
CONSTRAINT fk_emp_dep_did FOREIGN KEY(did) REFERENCES dep(did)
);
-- 刪除外來鍵
ALTER TABLE emp DROP FOREIGN KEY fk_emp_dep_did;
-- 建立表以後,建立外來鍵約束
ALTER TABLE emp
ADD CONSTRAINT fk_emp_dep_did FOREIGN KEY(did) REFERENCES dep(did)