在前面的学习中,虽然还没有系统的介绍如何创建表和操纵表,但还是用到了一点。例如:创建一个学生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、表列的名字和定义,用逗号分隔。
还是以一个实际例子来进行说明,如下:
从上面可以看到,表明跟在create table 关键字之后,而所有的列括在圆括号之中,各列之间用逗号分隔,每列的定义以列名(在表中必须唯一)开始,后跟列的数据类型,数据类型可以在命令行 help create table,可以看到。
注意:在创建新表时,指定的表名必须不存在,否则会报错。如果你仅想在一个表不存在时创建它,应该在表明后给出if not exists .这样在创建表之前MySQL数据库会先检查你要创建的表名是否存在,只要表名存在,无论你创建的表的结构是否相同,都不能创建。
上面涉及到一些关键字(null、primary key、auto_increment等),下面一一进行介绍。
有not null 修饰的列,当有insert into 插入数据时,必须要给出值,而用 null修饰的列,当有insert into 插入数据时可以不给出该列的值。
当我们对列不用null/not null 修饰时,默认是null修饰。
对null要多说几句:我们不要把null值与空串相混淆。null值是没有值,它不是空串。如果指定’ ‘,这在not null列中是有效的
primary key(id)就是将id列设为主键,当然,我们也可以不在创建时就设置主键,也可以创建表之后设置主键。
主键值必须唯一,如果只设置一列为主键,则这一列中是不允许有重复的标志的。如果设置多列为主键,则这多个列的组合必须是唯一的。
例如:当表中已经存在id=5了,我们想继续插入另一个id=5的数据,则会报错。
auto_increment 关键字就是使得id为自动增长性。
当我们利用insert into 插入数据时,由于id的自动增长性,我们可以选择不给id指定数值。我们也可以选择给id给定数值(此数值要唯一),之后id的自动增长就是在最大id值基础上增长。
主键与null值:主键为其值唯一标识表中每个行的列。主键中只能使用不允许null值的列。允许null值的列不能作为唯一标识。
在创建表时,如果我们对某列指定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;
以上就是我们创建表和操作表的全部内容。