33_02_MySQL系列之六——MySQL管理表和索引

SQL語句:html

  數據庫mysql

建立createdatabase [if not exists]  db_name[character set ‘gbk’]  [collate‘gbk_chinese_ci’]sql

   

     查看字符集 show characterset;數據庫

     查看字符集排序規則 showcollation;ide

      cd /mydata/data   cat db.opt 裏面保存了數據的字符集和排序規則[配置文件/etc/my.cnf能夠查看該目錄位置]工具

 

字符集擴展spa


  1. 字符集基礎3d

 


Mysql字符集和字符集排序規則(有時候使用mysql工具鏈接mysql後會中文亂碼,就是字符集的問題htm



二者關係:一個字符集能夠有多個排序規則,有一個默認的排序方式。blog

 

例子:

 show character like '%gbk%';

 show collation like '%gbk%';

 排序方式的命名規則爲:字符集名字_語言_後綴

wKioL1e-Qo7xHTP2AAEKN4Tvo9g668.jpg

 2.修改默認字符集

     設置默認字符集

修改   

      Help alter database

      通常就是修改數據庫的字符集和排序規則

刪除

       Drop database  db_name;

修改數據庫名字呢?

     停掉數據庫,去數據庫文件目錄重命名而後重啓數據庫就能夠 不推薦  通常是不給數據庫重命名的要事先命好名字

   

 

     建立      一個表只有一個主鍵 但能夠有多個惟一鍵

  1. 直接定義一張空表 create  table  [if not exists]  tb_name (col_namecol_definition)idi

  例:create table tb1 (id int unsigned not null  auto_increment  primary key,name char(20) not null,agetinyint  not null); 

  主鍵能夠單獨定義create table tb1 (id int unsigned not null  auto_increment ,namechar(20) not null,age tinyint  not nullprimary  key (id)); 

primary (id,name)id name組合起來作主鍵

unique key (name) name做惟一鍵  index key(age)age字段做爲索引

任何一個自動增加的都必須爲主鍵

說明:鍵也稱做約束,可用做索引,屬於特殊索引(有特殊限定),存儲起來是B+Tree結構,

Create index 建立索引   索引分爲兩種 BTREE HASH兩種

Show indexes from  tb_name 顯示錶上的索引

 

例子 courses課程名稱

Create table courses(CID tinyint  unsigned not null  auto_increment primarykey,couse varchar(50) not null);

 默認建立引擎爲Innodb   show table statuslike ‘courses’\G;

Drop table courses;

指定引擎Create table courses(CID tinyint unsigned  not null  auto_increment primary key,couse varchar(50)not null) ENGINE=MyIsam;




第二種建立表利用查詢到的直接建立表


Desc courses;

Desc testcourses;

不少咱們利用查詢出來的數據建立表不少字段定義的格式不見了,要注意這一點

第三種以其它表爲模板建立空表

Create table test  Like courses;

Desc test;顯示錶結構

 

若是咱們既要保存格式又要把查詢的數據保存進去,後面講到insert再說

 

  1. 從其餘表中查詢出數據,並以之建立新表

  2. 以其餘表爲模板建立一個空表

 

修改表定義

     Alter table 

          添加 刪除  修改字段

          添加  刪除 修改索引

          改表名

          修改表屬性


  如今咱們爲test添加一個惟一鍵索引

 alter table  test  add  unique key (couse);

 show indexes from  test;


course字段名稱  change  modify均可以

alter table test change couse course varchar(50) not null;

desc  test


新增一個開課日期字段

alte table test add  starttime date default '2013-08-25';


Startime改成startdate

 alter  table test change starttime  startdate  date ;

給表更名  不要隨便改


  alter  table  test  rename to  test2;

 

刪除表





添加個外鍵約束

有時候添加外鍵可能添加不上,

  1. 引擎是否爲Innodb

  2. 表值清空

  3. 上面2步就能夠建立外鍵了,建立完後如今course添加數據,而後根據course的cid外鍵在

    student添加數據

先把上面的刪除


References參考

注意外鍵約束只能用在存儲事務的存儲引擎上,在INNODB引擎能夠  myisam不能夠

  失敗  建立新表的時候沒法改表引擎,比較痛苦

能夠直接修改表引擎


Show table  status\G;



字段類型保持一致


此時學一個不存在的課就不能添加了,這就是引用性約束,另外一個表中沒有是不容許使用的



若是我把3刪了把有選修的課刪了


此時不讓刪有別的引用了

能夠強行刪除級聯

 

 

 

 

 

 

  索引

索引不能被修改 只能建立 刪除

  


Create index  index_name  on tb_name (col,…);


 

 

視圖

  DML

相關文章
相關標籤/搜索