python 學習_第四模塊 mysql 庫 表操做

python 學習_第四模塊  mysql 庫 表操做  數據類型python

 

一 查看支持引擎mysql

 

-- 數據庫支持的存儲引擎
show engines\G

-- 正在使用的存儲引擎
show variables like "storage_engine%";

 

 

 

 

二 修改表結構sql

 

-- 修改表名
alter table  t2  rename  t2_new;

-- 刪除字段i
ALTER TABLE table_1  DROP i;   

-- 添加字段 i
ALTER TABLE table_1 ADD i INT;

-- 添加字段 i  設定位第一列
ALTER TABLE table_1 ADD i INT FIRST;

-- 添加字段 設定位於c個字段以後
ALTER TABLE table_1 ADD i INT after c;

-- 修改字段類型
ALTER TABLE table_1 MODIFY c CHAR(10);

-- 修改字段類型 change 能夠修改字段名
ALTER TABLE table_1 CHANGE  c c  CHAR(10);

-- 修改字段類型
ALTER TABLE table_1 CHANGE  c b  CHAR(10);

-- 修改默認值爲100 
ALTER TABLE table_1 ALTER i SET DEFAULT 1000;  

-- 刪除默認值
ALTER TABLE table_1 ALTER i DROP DEFAULT;

-- 修改 id爲主鍵
ALTER TABLE table_1 modify id int(11) not null  primary key   auto_increment;

-- 增長約束 (針對已有的主鍵增長 auto_increment)
alter table table_1 modify id int(11) not null   primary key  auto_increment;

-- 修改 id 自動增加
alter table table_1 modify id int(11) not null auto_increment;

-- 對存在的表增長複合主鍵
alter  table  table_1 add primary key(host_ip, port);

-- 增長主鍵
alter table table_1 modify name varchar(10)  not null  primary key;

-- 增長主鍵和自動增加
alter table table_1 modify id int not null primary key auto_increment;

-- 刪除自增約束
alter table table_1 modify id int(11) not null; 

-- 刪除主鍵
alter table table_1 drop primary key;

--------------------複製表

-- 複製表結構+記錄
create table t2_new   select * from t2;

-- 複製表結構
create table t3_new   select * from t3 where 1 =2;
create table t3_new  like t3;


-----------刪除表
drop table  table_name;

-----------清空表
truncate table t1;

delete from  t1 where id = 1;

 

 

 

 

三 數據類型數據庫

 

1 整數類型服務器

 

tinyint  smallint  int  bigint

類型            大小        範圍(有符號)            範圍(無符號)                用途
tinyint            1字節        (-128,127)            (0,255)                小整數        
smallint        2字節        (-3276832767)        (0,65535)                大整數
int                4字節        (-21474836482147483647)    (0,4294967295)    大整數
bigint            8字節                                                        極大整數值


float            4字節                                                        單精度 浮點數值
double            8字節                                                        雙精度 浮點數值
decimal                                                                            小數值

 

 

 

 

2 浮點型性能

 

float  double decimal

 

 

 

3 日期型學習

date      time  datetime  timestamp  year

        YEAR
            YYYY(1901/2155)

        DATE
            YYYY-MM-DD(1000-01-01/9999-12-31)

        TIME
            HH:MM:SS('-838:59:59'/'838:59:59'DATETIME
            YYYY-MM-DD HH:MM:SS(1000-01-01 00:00:00/9999-12-31 23:59:59    Y)

        TIMESTAMP
            YYYYMMDD HHMMSS(1970-01-01 00:00:00/2037 年某時)

 

 

 

 

--- datetime 與timestamp的區別

1.DATETIME的日期範圍是1001——9999年,TIMESTAMP的時間範圍是1970——2038年。

2.DATETIME存儲時間與時區無關,TIMESTAMP存儲時間與時區有關,顯示的值也依賴於時區。在mysql服務器,操做系統以及客戶端鏈接都有時區的設置。

3.DATETIME使用8字節的存儲空間,TIMESTAMP的存儲空間爲4字節。所以,TIMESTAMP比DATETIME的空間利用率更高。

4.DATETIME的默認值爲null;TIMESTAMP的字段默認不爲空(not null),默認值爲當前時間(CURRENT_TIMESTAMP),若是不作特殊處理,而且update語句中沒有指定該列的更新值,則默認更新爲當前時間。

 

 

 

 

4 字符類型編碼

 

char類型:定長,簡單粗暴,浪費空間,存取速度快
    字符長度範圍:0-255(一箇中文是一個字符,是utf8編碼的3個字節)
存儲:
    存儲char類型的值時,會往右填充空格來知足長度
    例如:指定長度爲10,存>10個字符則報錯,存<10個字符則用空格填充直到湊夠10個字符存儲
    
varchar類型:變長,精準,節省空間,存取速度慢
    字符長度範圍:0-65535
    varchar類型存儲數據的真實內容,不會用空格填充,若是'ab  ',尾部的空格也會被存起來
    
    
    
雖然varchar使用起來較爲靈活,可是從整個系統的性能角度來講,char數據類型的處理速度更快,有時甚至能夠超出varchar處理速度的50%。所以,用戶在設計數據庫時應當綜合考慮各方面的因素,以求達到最佳的平衡

 

 

 

 

 

5. 枚舉類型與集合類型spa

 

enum 單選 只能在給定的範圍內選一個值,如性別 sex 男male/女female

set 多選 在給定的範圍內能夠選擇一個或一個以上的值(愛好1,愛好2,愛好3...)
相關文章
相關標籤/搜索