1. 程式人生 > 實用技巧 >Python-資料庫(筆記)

Python-資料庫(筆記)

1、資料

  1. 資料
    • 描述事物特徵的符號
  2. 記錄
    • 資料
    • 檔案
    • 資料夾
  3. 資料庫管理軟體
    • mysql、db2
    • 關係型:有表結構
    • 非關係型:key-value形式儲存,沒有表結構
  4. 資料庫伺服器
    • 執行資料庫管理軟體的計算機

2、mysql安裝

1、登入root
* mysql -u root -p
2. 修改root密碼
* mysqladmin -uroot -p password "密新碼"
3. 密碼破解(略)

3、統一字元編碼

  1. 預設utf8mb4

4、SQL語句

  1. 操作資料夾(庫)
    • create database 資料庫名 charset gbk;

    • show create database 資料庫名;
      show databases;

    • alter database 資料庫名 charset utf8;

    • drop database 資料庫名;

    • 切換庫

      use 資料庫名

    • 檢視當前所在庫

      select database();

  2. 操作檔案(表)
    • 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;

  3. 操作檔案內容(記錄)
    • 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 資料庫名.表名清空表

  4. 三種類型
    1. DDL語句(資料庫定義語言)
      • create建立庫、表
      • alert修改庫、表
      • drop刪除庫、表
    2. DML語句(資料庫操作語言)
      • insert插入資料
      • delete刪除資料
      • update更新資料
      • select查詢資料
    3. DCL語句(資料庫控制語言)
      • 控制使用者訪問許可權
      • grant授權
      • revoke移除許可權

5、儲存引擎

  1. 儲存引擎
    • 即表的型別
  2. 檢視mysql支援的儲存引擎
    • show engines;
  3. 指定表的儲存引擎
    • create table 表名(id int, name char)engines=innodb;

6、表的增刪改查

  1. 修改表結構
    • 修改表名

      alter table 表名 rename 新表名

    • 增加欄位

      alter table 表名 add 欄位名 型別[(約束條件)], add 欄位名 型別[(約束條件)];
      alter table 表名 add 欄位名 型別[(約束條件)] first;
      alter table 表名 add 欄位名 型別[(約束條件)] after 欄位名;

    • 刪除欄位

      alter table 表名 drop 欄位名;

    • 修改欄位

      alter table 表名 modify 欄位名 型別[(約束條件)];
      alter table 表名 change 舊欄位名 新欄位名 型別[(約束條件)];

  2. 複製表
    • create table 表名 select 欄位名,欄位名 from 表名;
  3. 複製表結構
    • create table 表名 like 表名;

7、資料型別

  1. 數字型別
    • 整型

      寬度指的是顯示寬度

    • 浮點型

      float(255,30)
      double(255,30)
      decimal(65,30)

  2. 日期型別
    • year
    • date
    • time
    • datetime(1001-9999)8位元組
    • timestamp(1970-2038)4位元組
  3. 字元型別
    • char:定長

      寬度指的是字元寬度
      字元+空格
      優點:存取速度快
      缺點:更佔用空間

    • varchar:變長

      1bytes+字元
      優點:節省空間
      缺點:存取速度慢

  4. 列舉型別
    • enum(1,2,3)
    • 不在範圍內的資料,傳空值
  5. 集合型別
    • set(1,2,3)
    • 不在範圍內的資料,傳空值

8、約束條件

  1. Null、Default

    Null預設YES
    Default預設Null
    create table t1(sex enum('male','female') not null default 'male');

  2. 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));

  3. Extra
    • auto_increment(自增長,預設起始值1,預設步長1)
    • 必須是key

      create table t1(id int primary key auto_increment);

9、建立表之間的關係

  1. 多對一
    • 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;

  2. 多對多
    • 單獨建立關係表
  3. 一對多
    • foreign key + unique

10、單表查詢

  1. select distant 欄位1,欄位2,欄位3 from 庫名.表名
    • where 條件
    • group by 分組條件
    • having 過濾
    • order by 排序欄位
    • limit n;