在前面的學習中,雖然還沒有系統的介紹如何創建表和操縱表,但還是用到了一點。例如:創建一個學生student表,其中包括學生ID、姓名name、成績score,則可以用如下的命令來完成;
create table student(
id int(10) not null,
name varchar(10) not null,
score int(10) null);
我們有時想學生ID設置為自動增長型的,如下:
create table student4(
id int(10) not null auto_increment,
name varchar(10) not null,
score int(10) null,
primary key(id)
);
注意:如果想要將id設置為auto_increment,則一定要將id設置為主鍵(primary key),否則會報錯,如下:
上面就是操作數據庫時創建表的常見的方式,下面就對系統的對創建表進行講解。
表創建基礎
為利用create table 創建表,必須給出下列信息:
1、新表的名字,在關鍵字create table關鍵字之後給出。 2、表列的名字和定義,用逗號分隔。
還是以一個實際例子來進行說明,如下:
<喎?http://www.Bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxwPjxjb2RlIGNsYXNzPQ=="hljs sql">從上面可以看到,表明跟在create table 關鍵字之後,而所有的列括在圓括號之中,各列之間用逗號分隔,每列的定義以列名(在表中必須唯一)開始,後跟列的數據類型,數據類型可以在命令行 help create table,可以看到。
注意:在創建新表時,指定的表名必須不存在,否則會報錯。如果你僅想在一個表不存在時創建它,應該在表明後給出if not exists .這樣在創建表之前MySQL數據庫會先檢查你要創建的表名是否存在,只要表名存在,無論你創建的表的結構是否相同,都不能創建。
上面涉及到一些關鍵字(null、primary key、auto_increment等),下面一一進行介紹。
null 關鍵詞
有not null 修飾的列,當有insert into 插入數據時,必須要給出值,而用 null修飾的列,當有insert into 插入數據時可以不給出該列的值。
當我們對列不用null/not null 修飾時,默認是null修飾。
對null要多說幾句:我們不要把null值與空串相混淆。null值是沒有值,它不是空串。如果指定’ ‘,這在not null列中是有效的
primary key 關鍵詞
primary key(id)就是將id列設為主鍵,當然,我們也可以不在創建時就設置主鍵,也可以創建表之後設置主鍵。
主鍵值必須唯一,如果只設置一列為主鍵,則這一列中是不允許有重復的標志的。如果設置多列為主鍵,則這多個列的組合必須是唯一的。
例如:當表中已經存在id=5了,我們想繼續插入另一個id=5的數據,則會報錯。
auto_increment
auto_increment 關鍵字就是使得id為自動增長性。
當我們利用insert into 插入數據時,由於id的自動增長性,我們可以選擇不給id指定數值。我們也可以選擇給id給定數值(此數值要唯一),之後id的自動增長就是在最大id值基礎上增長。
如下:
主鍵與null值:主鍵為其值唯一標識表中每個行的列。主鍵中只能使用不允許null值的列。允許null值的列不能作為唯一標識。
指定默認值 default
在創建表時,如果我們對某列指定default時,則當我們使用insert插入數據時如果對該列不給定值,則就是用默認值來填充。
用法如下:
更新表
終於到了更新表這一節,在前兩周的學習中,自己一直想為已存在的表添加一個新的列,卻不知道怎麼做,都是通過新建一個表來解決這樣的問題。
既然學到這裡,那我們就一起好好學習下吧。
更新表結構我們要少用,我們應該在創建表的時候就考慮好表的結構,以便後期不對該表進行大的改動。
為了使用alter table更改表的結構,必須給出下面的信息:
1、在alter table 之後給出要更改的表名(該表必須存在,否則報錯) 2、所做更改的列表。
增加一個新列
如果我們想為human_information添加一列(tel)應該怎麼做呢?
alter table human_information add tel varchar(10);//增加一個新列
刪除一個列
如果我們想把上面添加的新列tel刪除掉,應該如何來操作呢??
如下:
alter table human_information drop column tel;
設置主鍵
前面提到過,除了在建表時設置主鍵外,還可以在建表後設置主鍵,方法如下:
alter table customers add primary key(cust_id);
設置外鍵
上面介紹了如何為表設置主鍵,還可以設置外鍵。
例如,customers表中的cust_id 就可以作為orders表中的外鍵
alter table orders add constraint fk_orders_customers foreign key(cust_id) references customers(cust_id);//為表orders設置外鍵
有了上面設置主鍵和外鍵的基礎,我們可以繼續練習一下如何設置主鍵和外鍵,如下:
刪除表
在前面的學習中,我們已經知道如何去刪除表中的內容,例如,如果我們想刪除student表中的一行內容,我們可以這麼做:
delete from student where name='z';//刪除表student中名字為z的數據。
當我們想刪除表student中所有的內容,則可以利用如下兩種方法:
1、delete from student ;
2、truncate student;
無論我們選擇上面的那種方式來刪除表中的內容,但是表是不會被刪除的,即表的結構還在,只是數據沒有了。
如果我們想刪除表student,該怎麼做呢??
如下:
drop table student;
注意:在刪除表之前,最後做一個完整的備份,以防我們刪錯了。
重命名表
上面介紹了如何刪除一個表,接著介紹如何重命名一個表,用法如下:
rename table student to student_rename;//將student重命名為student_rename;
小結
到這裡就將創建表和操作表做了一個完整的介紹。最後我們還來回顧一下:
1、新建一個student表的命令如下:
create table student(
id int(10) not null auto_increment,
name varchar(10) not null,
sex varchar(10) not null default 'male',
score int(10) null,
primary key(id)
);
上面的建表語句基本上就覆蓋了建表語句中所有的知識點,例如:null/not null,auto_increment,primary key ;
2、更改表結構
alter table student add mathScore int(10);//為student表增加一個新列
alter table student drop column mathScore;//刪除mathScore列
3、建表後設置主鍵
alter table student add primary key(id);
4、設置外鍵
alter table orders add constraint fk_orders_customers foreign key(id) references customers (id);//為orders設置外鍵
5、刪除表
drop table student;
6、重命名表
rename table student to new_student;
以上就是我們創建表和操作表的全部內容。