Python-資料庫(筆記)
1、資料
- 資料
- 描述事物特徵的符號
- 記錄
- 資料
- 表
- 檔案
- 庫
- 資料夾
- 資料庫管理軟體
- mysql、db2
- 關係型:有表結構
- 非關係型:key-value形式儲存,沒有表結構
- 資料庫伺服器
- 執行資料庫管理軟體的計算機
2、mysql安裝
1、登入root
* mysql -u root -p
2. 修改root密碼
* mysqladmin -uroot -p password "密新碼"
3. 密碼破解(略)
3、統一字元編碼
- 預設utf8mb4
4、SQL語句
- 操作資料夾(庫)
- 增
create database 資料庫名 charset gbk;
- 查
show create database 資料庫名;
show databases;
- 改
alter database 資料庫名 charset utf8;
- 刪
drop database 資料庫名;
- 切換庫
use 資料庫名
- 檢視當前所在庫
select database();
- 增
- 操作檔案(表)
- 增
create table 表名(欄位 型別[(大小)], 欄位 型別[(大小)]);
create table 表名(id int, name char);
`` - 查
show create table 表名;
show create table 表名\G;
show tables;
desc 表名;
- 改
alter table 表名 modify name char(8);
alter table 表名 change name NAME char(6);
- 刪
drop table t1;
- 增
- 操作檔案內容(記錄)
- 增
insert 表名(id,NAME) values(1,'name1'),(2,'name2'),(3,'name3');
insert 表名 values(4,'name4');
insert 表名(NAME,id) values('name5',5);
- 查
select id,NAME from 資料庫名.表名;
select * from 表名;
- 改
update 資料庫名.表名 set NAME='小明';
update 資料庫名.表名 set NAME='張三' where id=2;
- 刪
delete from 資料庫名.表名 where id=2;
delete from 資料庫名.表名;
清空表
truncate 資料庫名.表名
清空表
- 增
- 三種類型
- DDL語句(資料庫定義語言)
create
建立庫、表alert
修改庫、表drop
刪除庫、表
- DML語句(資料庫操作語言)
insert
插入資料delete
刪除資料update
更新資料select
查詢資料
- DCL語句(資料庫控制語言)
- 控制使用者訪問許可權
grant
授權revoke
移除許可權
- DDL語句(資料庫定義語言)
5、儲存引擎
- 儲存引擎
- 即表的型別
- 檢視mysql支援的儲存引擎
show engines;
- 指定表的儲存引擎
create table 表名(id int, name char)engines=innodb;
6、表的增刪改查
- 修改表結構
- 修改表名
alter table 表名 rename 新表名
- 增加欄位
alter table 表名 add 欄位名 型別[(約束條件)], add 欄位名 型別[(約束條件)];
alter table 表名 add 欄位名 型別[(約束條件)] first;
alter table 表名 add 欄位名 型別[(約束條件)] after 欄位名;
- 刪除欄位
alter table 表名 drop 欄位名;
- 修改欄位
alter table 表名 modify 欄位名 型別[(約束條件)];
alter table 表名 change 舊欄位名 新欄位名 型別[(約束條件)];
- 修改表名
- 複製表
create table 表名 select 欄位名,欄位名 from 表名;
- 複製表結構
create table 表名 like 表名;
7、資料型別
- 數字型別
- 整型
寬度指的是顯示寬度
- 浮點型
float(255,30)
double(255,30)
decimal(65,30)
- 整型
- 日期型別
- year
- date
- time
- datetime(1001-9999)8位元組
- timestamp(1970-2038)4位元組
- 字元型別
- char:定長
寬度指的是字元寬度
字元+空格
優點:存取速度快
缺點:更佔用空間 - varchar:變長
1bytes+字元
優點:節省空間
缺點:存取速度慢
- char:定長
- 列舉型別
enum(1,2,3)
- 不在範圍內的資料,傳空值
- 集合型別
set(1,2,3)
- 不在範圍內的資料,傳空值
8、約束條件
- Null、Default
Null預設YES
Default預設Null
create table t1(sex enum('male','female') not null default 'male');
- Key
- unique key(唯一)
- 單列唯一
create table t1(id int unique, name char unique);
create table t1(id int, name char, unique(id), unique(name));
- 聯合唯一
create table t1(ip char(15), port int, unique(ip, port));
- primary key(不為空、且唯一)主鍵
- 單列主鍵
create table t1(id int not null unique);
create table t1(id int primary key);
create table t1(id int, primary key(int));
- 複合主鍵
create table t1(ip char(15), port int, primary key(ip, port));
- Extra
- auto_increment(自增長,預設起始值1,預設步長1)
- 必須是key
create table t1(id int primary key auto_increment);
9、建立表之間的關係
- 多對一
- foreign key(欄位名) references 表名(欄位名)
先建立被關聯的表,並保證被關聯的欄位唯一
後建立主表
create table t1(id int primary key, d_id int, foreign key(d_id) references dep(id));
刪除:先刪除主表字段,在刪除被關聯表的對應欄位
直接刪除被關聯表字段,需要增加約束on delete cascade on update cascade
create table t1(id int primary key, d_id int, foreign key(d_id) references dep(id)) on delete cascade on update cascade;
- foreign key(欄位名) references 表名(欄位名)
- 多對多
- 單獨建立關係表
- 一對多
- foreign key + unique
10、單表查詢
- select distant 欄位1,欄位2,欄位3 from 庫名.表名
- where 條件
- group by 分組條件
- having 過濾
- order by 排序欄位
- limit n;