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
字符集基礎3d
Mysql字符集和字符集排序規則(有時候使用mysql工具鏈接mysql後會中文亂碼,就是字符集的問題htm
二者關係:一個字符集能夠有多個排序規則,有一個默認的排序方式。blog
例子:
show character like '%gbk%';
show collation like '%gbk%';
排序方式的命名規則爲:字符集名字_語言_後綴
2.修改默認字符集
修改
Help alter database
通常就是修改數據庫的字符集和排序規則
刪除
Drop database db_name;
修改數據庫名字呢?
停掉數據庫,去數據庫文件目錄重命名而後重啓數據庫就能夠 不推薦 通常是不給數據庫重命名的要事先命好名字
表
建立 一個表只有一個主鍵 但能夠有多個惟一鍵
直接定義一張空表 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 null,primary 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再說
從其餘表中查詢出數據,並以之建立新表
以其餘表爲模板建立一個空表
修改表定義
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;
刪除表
添加個外鍵約束
有時候添加外鍵可能添加不上,
引擎是否爲Innodb
表值清空
上面2步就能夠建立外鍵了,建立完後如今course添加數據,而後根據course的cid外鍵在
student添加數據
先把上面的刪除
References參考
注意外鍵約束只能用在存儲事務的存儲引擎上,在INNODB引擎能夠 myisam不能夠
失敗 建立新表的時候沒法改表引擎,比較痛苦
能夠直接修改表引擎
Show table status\G;
字段類型保持一致
此時學一個不存在的課就不能添加了,這就是引用性約束,另外一個表中沒有是不容許使用的
若是我把3刪了把有選修的課刪了
此時不讓刪有別的引用了
能夠強行刪除級聯
索引
索引不能被修改 只能建立 刪除
Create index index_name on tb_name (col,…);
視圖
DML