《MySQL必知必会学习笔记》:创建和操作表

创建和操纵表

在前面的学习中,虽然还没有系统的介绍如何创建表和操纵表,但还是用到了一点。例如:创建一个学生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、表列的名字和定义,用逗号分隔。

还是以一个实际例子来进行说明,如下:

《MySQL必知必会学习笔记》:创建和操作表_第1张图片

从上面可以看到,表明跟在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的数据,则会报错。
《MySQL必知必会学习笔记》:创建和操作表_第2张图片

auto_increment

auto_increment 关键字就是使得id为自动增长性。
当我们利用insert into 插入数据时,由于id的自动增长性,我们可以选择不给id指定数值。我们也可以选择给id给定数值(此数值要唯一),之后id的自动增长就是在最大id值基础上增长。

如下:
《MySQL必知必会学习笔记》:创建和操作表_第3张图片

主键与null值:主键为其值唯一标识表中每个行的列。主键中只能使用不允许null值的列。允许null值的列不能作为唯一标识。

指定默认值 default

在创建表时,如果我们对某列指定default时,则当我们使用insert插入数据时如果对该列不给定值,则就是用默认值来填充。

用法如下:

更新表

终于到了更新表这一节,在前两周的学习中,自己一直想为已存在的表添加一个新的列,却不知道怎么做,都是通过新建一个表来解决这样的问题。

既然学到这里,那我们就一起好好学习下吧。

更新表结构我们要少用,我们应该在创建表的时候就考虑好表的结构,以便后期不对该表进行大的改动。

为了使用alter table更改表的结构,必须给出下面的信息:

  • 1、在alter table 之后给出要更改的表名(该表必须存在,否则报错)
  • 2、所做更改的列表。

增加一个新列

如果我们想为human_information添加一列(tel)应该怎么做呢?

alter table human_information add tel varchar(10);//增加一个新列

《MySQL必知必会学习笔记》:创建和操作表_第4张图片

删除一个列

如果我们想把上面添加的新列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设置外键

有了上面设置主键和外键的基础,我们可以继续练习一下如何设置主键和外键,如下:

《MySQL必知必会学习笔记》:创建和操作表_第5张图片

删除表

在前面的学习中,我们已经知道如何去删除表中的内容,例如,如果我们想删除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;

《MySQL必知必会学习笔记》:创建和操作表_第6张图片

小结

到这里就将创建表和操作表做了一个完整的介绍。最后我们还来回顾一下:

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;

以上就是我们创建表和操作表的全部内容。

你可能感兴趣的:(mysql,创建,主键,外键,操作表)