約束
表之間的關聯關係
約束:用於保證資料的完整性 和 合法性
分類:
primary key:主鍵約束 用於唯一的標識記錄
從約束角度來看 主鍵約束 等同於 非空約束 和 唯一約束
作用: 區分兩個相同的記錄 提高查詢效率 可以建立關聯關係
語法 : create table stu (id int primary key ,name char(5));
多列聯合主鍵:create table t1 (idcard char(18) , phonenumber char(11),primary key (idcard , phonenumber));
練習 :建立乙個員工表 裡面儲存 員工資訊 員工編號 姓名 年齡 性別
create table employee (id int primary key , name char(10) not null,age int ,
*** char(10) default 'man');
foreign key 和references: 外來鍵約束 標識該字段為該錶的外來鍵
作用: 建立表與表之間的聯絡
新增外來鍵約束時: 會產生限制
1 . 必須先建立好被關聯的表,也就是主表 ,然後建立從表
2. 主表的資料應該先插入,從表後插入
3. 在刪除主表資料前 , 得先刪除從表相關資料
4. 在更新主表資料前 , 得確保從表沒有資料關聯
練習: 建立乙個部門表 包含 部門序號 部門名稱
建立乙個員工表 包含 員工序號 員工姓名 部門序號
先建立部門表: create table dept (id int primary key ,name char(10));
再建立員工表: create table emp (id int primary key , name char(10),
總的來說:外來鍵就相當於與把一張表的字段 標識成 另一張表的主鍵
外來鍵加上以後 :主表中的資料 刪除 和更新時 都受到限制
解決的方案是: 為 外來鍵 新增 級聯操作
級聯操作: 指的是同步更新和刪除
語法: 在建立外來鍵是 在後面 新增
on update cascade 同步更新
on delete cascade 同步刪除
建立部門表: create table dept (id int primary key ,name char(10));
建立員工表: create table emp (id int primary key , name char(10),dept_id int,
foreign key(dept_id) references dept(id)
on update cascade
on delete cascade
not null:非空約束 資料不能為空
語法 : create table student ( id int not null , name char(10) not null);
unique : 唯一性約束 標識該字段的值不能重複
作用: unique 是一種索引 索引是一種資料結構 用於提高查詢效率
一張表中可以有多個唯一約束
語法:單列唯一約束 : create table t2 (idcard char(18) unique);
多列聯合唯一約束: create table t3 (idcard char(18) , phonenumber char(11) ,
unique(idcard ,phonenumber));
多列聯合中 :idcard 相同 和phonenumber 相同 才會報錯
auto_increment:自動增長 標識該字段的值自動增長
作用: 通常和主鍵字段使用 只能用於整數型別
語法: create table t1 (id int primary key auto_increment ,name char(5));
修改自動增長的起始位置: alter table t1 auto_increment = 5;
default: 預設值約束 為該字段的設定預設值
語法 : create table user (id int not null , name char(10) not null , *** char(1) default '男');
所有的資料不可能放入同一張表中,會造成浪費空間 結構混亂 擴充套件性差等等問題
所以需要分表處理,分表又會產生新的問題,表與表之間需要有聯絡
表之間的關係
一對一 : 一張表中的一條記錄對應另一張表的一條記錄
多對一 : 一張表中的多條記錄對應另一張表的一條記錄
多對多 :兩張表雙向的多對一,即多對多
多對多需要定義一張關係表來專門存放二者的關係
建立表之間的關係 就需要用到foreign key外來鍵約束
python之mysql資料庫讀取
首先我們先安裝讀取mysql的第三方庫 pip install pymysql 安裝成功後,我們穿件乙個.py檔案import pymysql 我們先看看pymysql給我們提供了什麼 跳轉到 init 介面 然後跳轉到這個介面,可以看到注釋給我們說明各個引數的用途,再移動下去 就可以看到mysql...
資料庫之Python操作MySQL
python操作mysql一共有兩種方式,第一種是用原生模組pymysql和mysqldb,這兩種模組在py2中都支援,但是在py3中只支援pymysql,但是pymysql可以通過pymysql.install as mysqldb 的方式構造成和mysqldb一樣的使用 第二種方式是orm框架 ...
Python之操作MySQL資料庫(二)
python對mysql資料庫的操作,包括連線資料庫 建立資料庫 插入資料 查詢資料。1 連線mysql資料庫 coding utf 8 import mysqldb 開啟資料庫連線 db mysqldb.connect localhost root test 引數為ip,使用者名稱,密碼,資料庫 ...