mysql資料庫基本操作(三)

彭方炎QAQ發表於2019-05-21

資料表操作

基礎操作

1.建立表(類似於一個excel表)

 create table tab_name(
            field1 type[完整性約束條件],
            field2 type,
            ...
            fieldn type
        )[character set xxx];

          資料庫的增刪查改和資料型別掌握後,就可以開始在資料庫裡面建表了,首先有一個主鍵的概念:能夠唯一區分出當前記錄的欄位稱為主鍵,主鍵要是非空且唯一的,且欄位一定要是數字型別,下面我們建立一個員工表:

建立一個員工表employee

create table employee(
            id int primary key auto_increment ,
            name varchar(20),
            gender bit default 1,   -- gender char(1)  default 1   -----    或者 TINYINT(1) 
            job varchar(20),
            salary double(4,2) unsigned,
            resume text    -- 注意,這裡作為最後一個欄位不加逗號
          );


/* 約束:
       primary key (非空且唯一)  :能夠唯一區分出當前記錄的欄位稱為主鍵!
       unique
       not null
       auto_increment 主鍵欄位必須是數字型別。
       外來鍵約束 foreign key  */

  2.檢視錶資訊       

    desc tab_name 檢視錶結構
    show columns from tab_name  檢視錶結構
    show tables 檢視當前資料庫中的所有的表
    show create table tab_name    檢視當前資料庫表建表語句 

        有些命令和database的很像,這裡就不演示了。

3.修改表結構

        什麼是表結構的修改?其實就是對欄位(類似Excel裡面的表頭)的修改,因為現在表裡面還沒有任何資料,所以現在只能對欄位進行增刪改查。

(1)增加列(欄位)

        首先我們試一下增加一個欄位:

alter table tab_name add [column] 列名 型別[完整性約束條件][first|after 欄位名];
alter table employee add addr varchar(20) not null unique after name;

       增加了一個名叫addr的欄位,資料型別是varchar(20),約束條件是非空且唯一,位置在欄位name後面,我們現在檢視一下表結構:

          也可以同時增加多個欄位,注意欄位名不要重複了:

#新增多個欄位
      alter table employee 
            add hobby varchar(20),
            add age  int first,
            add birth TINYINT after name;

(2)修改一列型別

          我們把age 的型別和位置改一下,最後的修改會覆蓋之前的修改內容;

alter table tab_name modify 列名 型別 [完整性約束條件][first|after 欄位名];
alter table employee modify age tinyint ;
alter table employee modify age int  default 20 after id;

(3)修改列名

          現在我們把age改成Age,並修改約束條件:

 alter table tab_name change [column] 列名 新列名 型別 [完整性約束條件][first|after 欄位名];
 alter table employee change age Age int default 28 first;

(4)刪除一列

           現在把Age這一行刪除:

alter table tab_name drop [column] 列名;
alter table employee drop Age;

        那麼,刪除多行或者刪除一行又增加一行怎麼寫?我們先把最後兩行resume和hobby刪除:

alter table employee drop resume,
         drop hobby;

         刪除一行增加一行也是一樣的,分兩行寫就行了。

(5)修改表名     

rename table 表名 to 新表名;
rename table employee to emp;

(6)修該表所用的字符集

       和第一篇我們修改資料庫字符集一樣:

alter table student character set utf8;

 4.刪除表

     刪除表就很簡單了:

drop table tab_name;

5 新增\刪除主鍵

alter table tab_name add primary key(欄位名稱,...) 
alter table users drop primary key;

6.唯一索引

      現在我們的表還沒有資料,當我們表裡面有大量資料的時候,我們再按主鍵去查詢的話,需要遍歷,耗時就很長了,這個時候有一個唯一索引,他的演算法不是通過遍歷去查詢,而是更優化的一種方法,從而提升查詢的效率,大概能達到幾百倍的提升,下面就是唯一索引的一些語法:

alter table tab_name add unique [index|key] [索引名稱](欄位名稱,...) 

    alter table emp add unique(name)-- 索引值預設為欄位名show create table emp;
    alter table emp add unique key user_name(name);-- 索引值為user_name

    -- 新增聯合索引
    alter table emp add unique index name_age(name,birth);#show create table emp;

    -- 刪除唯一索引
    alter table tab_name drop {index|key} index_name

完整性約束條件之主鍵約束

單欄位主鍵

主鍵欄位特點:非空且唯一

 create table users(
            id INT primary key,
            name varchar(20),
            age TINYINT
          );

多欄位聯合主鍵

<1> 一張表只能有一個主鍵

<2> 主鍵型別不一定非是整型

 create table users2(
            id INT,
            name varchar(20),
            age TINYINT,
            primary key(name,id)
          );

 

相關文章