python week09 Mysql 數據庫基礎知識

第一篇:初識數據庫

   注:<基礎概念,再也不贅述,點開連接查看>html

 

 

第二篇:庫相關操做

 

  一 系統數據庫

 

    information_schema: 虛擬庫,不佔用磁盤空間,存儲的是數據庫啓動後的一些參數,如用戶表信息、列信息、權限信息、字符信息等。mysql


    performance_schema: MySQL 5.5開始新增一個數據庫:主要用於收集數據庫服務器性能參數,記錄處理查詢請求時發生的各類事件、鎖等現象 。
sql


    mysql: 受權庫,主要存儲系統用戶的權限信息。
數據庫


    test: MySQL數據庫系統自動建立的測試數據庫,值得注意的是Mysql5.7及之後移除了test庫以及刪除了空密碼用戶等安全措施。
安全

 

  二 建立數據庫

    1 語法(help create database)服務器

CREATE DATABASE 數據庫名 charset utf8;

       2 數據庫命名規則:框架

能夠由字母、數字、下劃線、@、#、$
區分大小寫
惟一性
不能使用關鍵字如 create select 不能單獨使用數字
最長128位

  

  

  三 數據庫相關操做

    

查看數據庫
show databases;
show create database db1;
select database();

選擇數據庫
USE 數據庫名

刪除數據庫
DROP DATABASE 數據庫名;

修改數據庫
alter database db1 charset utf8;

 

 

第三篇:表相關操做<*****>

  

  一 存儲引擎介紹

     注:<基礎概念,再也不贅述請點擊 >ide

 

  二 表介紹

    表至關於文件,表中的一條記錄就至關於文件的一行內容,不一樣的是,表中的一條記錄有對應的標題,稱爲表的字段。函數

    

 

 

 

 

 

  三 建立表

      

create table tbName (
列名稱1 列類型 [列參數] [not null default ],
....列名稱2...
....
列名稱N 列類型 [列參數] [not null default ]
)engine myisam/innodb charset utf8/gbk

 

 

例子:
create table user (
    id int auto_increment,
    name varchar(20) not null default '',
    age tinyint unsigned not null default 0,
   index id (id)
   )engine=innodb charset=utf8;
注:innodb是表引擎,也能夠是myisam或其餘,但最經常使用的是myisam和innodb,
charset 經常使用的有utf8,gbk;
建立表例子1
MariaDB [db1]> insert into t1 values
    -> (1,'egon',18,'male'),
    -> (2,'alex',81,'female')
    -> ;
MariaDB [db1]> select * from t1;
+------+------+------+--------+
| id   | name | age  | sex    |
+------+------+------+--------+
|    1 | egon |   18 | male   |
|    2 | alex |   81 | female |
+------+------+------+--------+



MariaDB [db1]> insert into t1(id) values 
    -> (3),
    -> (4);
MariaDB [db1]> select * from t1;
+------+------+------+--------+
| id   | name | age  | sex    |
+------+------+------+--------+
|    1 | egon |   18 | male   |
|    2 | alex |   81 | female |
|    3 | NULL | NULL | NULL   |
|    4 | NULL | NULL | NULL   |
+------+------+------+--------+
插入表例子2

 

 

    

 

  四 查看錶結構

    desc 表名  #查看錶結構性能

    show create table 表名\G;  #查看建立表的語句

MariaDB [db1]> describe t1; #查看錶結構,可簡寫爲desc 表名
+-------+-----------------------+------+-----+---------+-------+
| Field | Type                  | Null | Key | Default | Extra |
+-------+-----------------------+------+-----+---------+-------+
| id    | int(11)               | YES  |     | NULL    |       |
| name  | varchar(50)           | YES  |     | NULL    |       |
| sex   | enum('male','female') | YES  |     | NULL    |       |
| age   | int(3)                | YES  |     | NULL    |       |
+-------+-----------------------+------+-----+---------+-------+


MariaDB [db1]> show create table t1\G; #查看錶詳細結構,可加\G
查看錶結構例子

 

 

 

 

  五 數據類型

    注:<基礎概念,再也不贅述,點開連接查看>

 

  六 表完整性約束

    注:<基礎操做,再也不贅述,點開連接查看>

 

  七 修改表ALTER TABLE

      

語法:
1. 修改表名
      ALTER TABLE 表名 
                          RENAME 新表名;

2. 增長字段
      ALTER TABLE 表名
                          ADD 字段名  數據類型 [完整性約束條件…],
                          ADD 字段名  數據類型 [完整性約束條件…];
      ALTER TABLE 表名
                          ADD 字段名  數據類型 [完整性約束條件…]  FIRST;
      ALTER TABLE 表名
                          ADD 字段名  數據類型 [完整性約束條件…]  AFTER 字段名;
                            
3. 刪除字段
      ALTER TABLE 表名 
                          DROP 字段名;

4. 修改字段
      ALTER TABLE 表名 
                          MODIFY  字段名 數據類型 [完整性約束條件…];
      ALTER TABLE 表名 
                          CHANGE 舊字段名 新字段名 舊數據類型 [完整性約束條件…];
      ALTER TABLE 表名 
                          CHANGE 舊字段名 新字段名 新數據類型 [完整性約束條件…];

 

 

 

示例:
1. 修改存儲引擎
mysql> alter table service 
    -> engine=innodb;

2. 添加字段
    mysql> alter table student10
        -> add name varchar(20) not null,
        -> add age int(3) not null default 22;
    
    mysql> alter table student10
        -> add stu_num varchar(10) not null after name;                //添加name字段以後

    mysql> alter table student10                        
        -> add sex enum('male','female') default 'male' first;          //添加到最前面

3. 刪除字段
    mysql> alter table student10
    -> drop sex;

    mysql> alter table service
    -> drop mac;

4. 修改字段類型modify
    mysql> alter table student10
        -> modify age int(3);
    mysql> alter table student10
        -> modify id int(11) not null primary key auto_increment;    //修改成主鍵

5. 增長約束(針對已有的主鍵增長auto_increment)
    
    mysql> alter table student10 modify id int(11) not null primary key                     auto_increment;
    ERROR 1068 (42000): Multiple primary key defined

    mysql> alter table student10 modify id int(11) not null auto_increment;
    Query OK, 0 rows affected (0.01 sec)
    Records: 0  Duplicates: 0  Warnings: 0

6. 對已經存在的表增長複合主鍵
    mysql> alter table service2
    -> add primary key(host_ip,port);        

7. 增長主鍵
    mysql> alter table student1
    -> modify name varchar(10) not null primary key;

8. 增長主鍵和自動增加
    mysql> alter table student1
    -> modify id int not null primary key auto_increment;

9. 刪除主鍵
    a. 刪除自增約束
    mysql> alter table student10 modify id int(11) not null; 

    b. 刪除主鍵
    mysql> alter table student10                                 
    -> drop primary key;
alter table操做表經常使用示例

 

 

 

  八 複製表

    

複製表結構+記錄 (key不會複製: 主鍵、外鍵和索引)
mysql> create table new_service select * from service;

只複製表結構
mysql> select * from service where 1=2;        //條件爲假,查不到任何記錄
Empty set (0.00 sec)

mysql> create table new1_service select * from service where 1=2;  
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> create table t4 like employees;

 

 

 

 

  九 刪除表(drop,truncate刪除沒法回滾,慎用)

    

刪除表有三種方法:drop,delete,和truncate

DROP TABLE 表名;

1. delete是一種DML,它會放到rollback segment,事務提交以後才生效。若是有對應的觸發器,那麼執行時還會觸發trigger。 

truncate,drop是DDL,操做當即生效,也就意味着不能回滾。 

2. truncate和delete不刪除表的結構,drop將刪除表的結構被依賴的約束,觸發器,索引;依賴於表的存儲過程/函數將被保留,可是變爲invalid狀態。 

3. delete語句不影響表所佔用的extent,high watermark不動。drop語句將最大限度釋放該表所佔的空間。truncate語句缺省狀況下將空間釋放到最小個extent,除非使用reuse storage,那種狀況下下truncate將空間恢復到最大個extent。 

4. 速度上,drop>truncate>delete 

5. 安全性,drop和druncate都不能回滾,所以慎用。 

6. 使用上,想刪部分數據行,用帶where子句的delete命令。想刪除表,用drop。想保留表而將全部數據刪除,而且和事

 

 

 

    

 

 

 

 

 

第四篇:記錄相關操做<*****>

   

  注:<基礎操做,再也不贅述,點開連接查看>

   <重點查看單表,多表的select查詢及權限管理>

 

 

第五篇:數據備份、pymysql模塊<*****>

   注:<基礎必備,篇幅過多,請點開連接查看>

   <重點查看pymsql模塊使用方式>

 

 

 

 

第六篇:視圖、觸發器、事務、存儲過程、函數

   注:<sql進階必備,篇幅過多,請點開連接查看>

 

 

 

第七篇:ORM框架SQLAlchemy<*****>

     

  注:<ORM框架,請點開連接查看>

 

 

 

第八篇:索引原理與慢查詢優化<*****>

  注<優化Mysql必備,篇幅過多,請點開連接查看>

相關文章
相關標籤/搜索