5.数据表基本操作

目录

1.创建数据表

创建数据表的语法格式:

查看当前数据库的表:

主键

1.单字段主键

(1)在定义列的同时指定主键,语法规则如下:

(2)在定义完所有列之后指定主键。

2.多字段联合主键

外键:

非空约束:

唯一性约束:

(1)在定义完列之后直接指定唯一约束,语法规则如下:

(2)在定义完所有列之后指定唯一约束,语法规则如下:

默认约束:

表的属性值自动增加:

2.查看表结构

DESCRIBE/DESC语句可以查看表的字段信息,

查看表详细结构语句SHOW CREATE TABLE

3.修改数据表

修改表名:

修改字段的数据类型

修改字段名:

添加字段:

1、添加无完整性约束条件的字段

2、添加有完整性约束条件的字段

3、在表的第一列添加一个字段

4、在表的指定列之后添加一个字段

删除字段:

修改字段的排列位置:

1、修改字段为表的第一个字段

2、修改字段到表的指定列之后

更改表的存储引擎:

删除表的外键约束:

4、删除数据表

1、删除没有被关联的表:

2、删除被其他表关联的主表:

5、练习题

1、创建数据库Market,在Market 中创建数据表customers,customers 表结构如表4.6所示 并按要求进行操作。

2、在Market中创建数据表orders,orders表结构如表4.7所示,按要求进行操作。


1.创建数据表

创建好数据库之后,接下来就是创建数据表,所谓创建数据表就是在数据库中新建行列式表格。

创建数据表的过程也是规定数据列属性的过程,也是实施数据完整性的约束过程。

注意:创建表之前,要用USE dbname切换到指定数据库中。

比如:use  test.;

就是切换到名称为test的数据库中。

创建数据表的语法格式:

create table <表名>

字段名1 数据类型【列级约束条件】 默认值,

字段名2 数据类型【列级约束条件】 默认值,

。。。。。。。

【表级约束条件】

);

比如:

5.数据表基本操作_第1张图片

mysql> create table tb_emp1
    -> (
    -> id int(11),
    -> name varchar(25),
    -> deptid int(11),
    -> salary float
    -> );

5.数据表基本操作_第2张图片

语句执行后,便创建了一个名称为tb_emp1的数据表,

查看当前数据库的表:

show 数据库名字;

例如:show tables;

5.数据表基本操作_第3张图片

主键

主键,又称主码,是表中一列或多列的组合。主键约束(Primary Key.Constraint)要求主键列

的数据雌一,并且不允许为空。主键能够唯一地标识表中的一条记录,可以结合外键来定义

不同数据表之间的关系,并且可以加快数据库查询的速度。

主键和记录之间的关系如同身份证和人之间的关系,它们之间是一一对应的。

主键分为两种类型:单字段主键和多字段联合主键。

1.单字段主键

单字段主键由一个字段组成,SQL语句格式分为以下两种情况。

(1)在定义列的同时指定主键,语法规则如下:

字段名   数据类型   PRIMARY KEY 【默认值】

比如:定义数据表tb_emp2,其主键为id,SQL语句如下:

mysql> create table tb_emp2
    -> (
    -> id int(11) primary key,
    -> name varchar(25),
    -> deptid int(11),
    -> salary float
    -> );

5.数据表基本操作_第4张图片

(2)在定义完所有列之后指定主键。

[CONSTRAINT   <约束名>] PRIMARY  KEY 【字段名】

比如:定义数据表tb_emp3,其主键为id,SQL语句如下:

mysql> create table tb_emp3
    -> (
    -> id int(11),
    -> name varchar(25),
    -> deptid int(11),
    -> salary float,
    -> primary key(id)
    -> );

5.数据表基本操作_第5张图片

上述两个例子执行后的结果是一样的,都会在id字段上设置主键约束。

2.多字段联合主键

主键由多个字段联合组成,语法规则如下:

PRTMARY   KEY [字段1,字段2.字段n]

比如:定义数据表tb_emp4,假设表中间没有主键id,为了唯一确定一个员工

可以把name、deptId.联合起来做为主键,SQL语句如下:

mysql> create table tb_emp4
    -> (
    -> name varchar(25),
    -> deptid int(11),
    -> salary float,
    -> primary key(name,deptid)
    -> );

5.数据表基本操作_第6张图片

语句执行后,便创建了一个名称为tb_emp4的数据表,name 段和 deptld 段组合在一 起成为tb_emp4的多字段联合主键。

外键:

外键用来在两个表的数据之间建立链接,它可以是一列或者多列。一个表可以有一个或多个外键。外键对应的是参照完整性,一个表的外键可以为空值,

若不为空值,则每一个外键值必须等于另一个表中主键的某个值。

外键:首先它是表中的一个字段,它可以不是本表的主键,但对应另外一个表的主键。

主要作用:是保证数据引用的完整性,定义外键后,不允许删除在另一个表中具有关联关系的行。

主表(父表):对于两个具有关联关系的表而言,相关联字段中主键所在的那个表即是主表。

从表(子表):对于两个具有关联关系的表而言,相关联字段中外键所在的那个表即是从表。

创建外键的语法规则如下:

CONSTRAINT     <外键名>     FOREIGN   KEY(字段名1 [,字段名2,...] )   REPERENCES    <主表名> (主键列1 [,主键列2,...])

“外键名”为定义的外键约束的名称,一个表中不能有相同名称的外键;

“字段名”表示子表需要添加外键约束的字段列;

“主表名”即被子表外键所依赖的表的名称;

“主键列”表示主表中定义的主键列,或者列组合。

比如:首先创建一个部门表tb_dept1,SQL语句如下:

mysql> create table tb_dept1
    -> (
    -> id int(11) primary key,
    -> name varchar(22) not null,
    -> location varchar(50)
    -> );

5.数据表基本操作_第7张图片

然后定义数据表tb_emp5,并在tb_emp5表上创建外键约束。

让它的键deptId作为外键关联到tb_dept1的主键id,SQL语句为:

mysql> create table tb_emp5 
    -> (
    -> id int(11) primary key,
    -> name varchar(25),
    -> deptId int(11), 
    -> salary float,
    -> constraint fk_emp_dept1 foreign key(deptId) references tb_dept1(id)
    -> );

5.数据表基本操作_第8张图片

以上语句执行成功之后,在表tb_emp5上添加了名称为fk_emp_dept1的外键约束,

外键名称为 fk_emp_dept1,其依赖于表tb_dept1的主键id

关联指的是在关系型数据库中相关表之间的联系。它是通过相容或相同的属性或属性组来表示的。子表的外键必须关联父表的主键,且关联字段的数据类型必须匹配,如果类型 不一样,则创建子表时,就会出现错误“ERROR 1005(HY00):Can't createtable database. tablename'(errno:150)”

5.数据表基本操作_第9张图片

非空约束:

非空约束(Not Null Constraint) 指字段的值不能为空,对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统会报错。

语法规则如下:

字段名 数据类型 not null

比如:定义数据表tb_emp6,指定员工的名称不能为空,SQL语句如下:

create table tb_emp6 
(
id int(11) primary key,
name varchar(25) not null,
deptId int(11), 
salary float
);

5.数据表基本操作_第10张图片

执行后,在tb_emp6中创建了一个Name字段,其插入值不能为空 (NOTNULL)。

唯一性约束:

唯一性约束(Unique Constraint)要求该列唯一,允许为空,但只能出现一个空值。

唯一约束可以确保一列或者几列不出现重复值。

唯一性约束的语法规则如下:

(1)在定义完列之后直接指定唯一约束,语法规则如下:

字段名 数据类型 UNIQUE

比如:

定义数据表tb_dept2,指定部门的名称唯一,SQL语句如下:

create table tb_dept2 
(
id INT(11) primary key,
name varchar(22) unique,
location varchar(50)
);

5.数据表基本操作_第11张图片

(2)在定义完所有列之后指定唯一约束,语法规则如下:

CONSTRAINT  <约束名>    UNIQUE (<字段名>)

比如:

定义数据表tb_dept3,指定部门的名称唯一,SQL语句如下:

create table tb_dept3
(
id int(11) primary key,
name varchar(22),
location varchar(50),
constraint hahaha unique(name)
);

5.数据表基本操作_第12张图片

5.数据表基本操作_第13张图片

注意:UNIQUE(创建唯一性约束)和PRIMARYKEY(外键)的区别:

一个表中可以有多个字段声明为UNIQUE,但只能有一个PRIMARYKEY

声明声明为PRIMAYKEY的列不允许有空值,但是声明为UNIOUE的字段允

许空值(NULL).

默认约束:

默认约束(Default Constraint)指定某列的默认值。如男性同学较多,性别就可以默认’男'

如果插入一条新的记录时没有为这个字段赋值,那么系统会自动为这个字段赋值'男'

默认约束的语法规则如下:

字段名 数据类型 DEFAULT 默认值

比如:定义数据表tb_emp7,指定员工的部门编号默认为1111,SQL语句

如下:

create table tb_emp7 
(
id int(11) primary key,
name varchar(25) not null,
deptId int(11) default 1111, 
salary float
);

5.数据表基本操作_第14张图片

以上语句执行成功之后,表tb_emp7上的字段deptld拥有了一个默认的值 1111,

新插入的记录如果没有指定部门编号,则默认都为1111

5.数据表基本操作_第15张图片

表的属性值自动增加:

在数据库应用中,经常希望在每次插入新记录时,系统自动生成字段的主键值。

可以通过为表主键添加AUTO_INCREMENT关键字来实现默认的,在MySOL 中AUTO_INCREMENT的初始值是 1,每新增一条记录,字段值自动加 1。

一个表只能有一个字段使用AUTO_INCREMENT约束,且该字段必须为主键的一部分。

AUTO INCREMENT约束的字段可以是任何整数类型(TINYINT、SMALLIN、 INT、BIGINT等)。

设置表的属性值自动增加的语法规则如下:

字段名 数据类型 AUTO_INCREMENT

比如:定义数据表tb_emp8,指定员工的编号自动递增,SQL语句如下:

create table tb_emp8 
(
id int(11)  primary key auto_increment,
name varchar(25) NOT NULL,
deptId int(11), 
salary float
);

5.数据表基本操作_第16张图片

执行如下插入语句:

insert into tb_emp8 (name,salary) values ("zhangsan",10000);

insert into tb_emp8 (name,salary) values ("lisi",20000);

insert into tb_emp8 (name,salary) values ("wangwu",30000);

语句执行完后,tb_emp8表中增加3条记录,在这里并没有输入id的值,

但系统已经自动添加该值,使用SELECT命令查看记录,如下所示。

SELECT * FROM tb_emp8;

5.数据表基本操作_第17张图片

注意:这里使用INSERT 声明向表中插入记录的方法,并不是 SQL 的标准

语法, 这种语法不一定被其他的数据库支持,只能在MySQL中使用。

2.查看表结构

使用SQ儿语句创建好数据表之后,可以查看表结构的定义,以确认表的定义是否正确。

在MySOL中,查看表结构可以使用 DESCRIBE 和 SHOW CREATE TABLE语句。

本节将针对这两个语分别进行详细的讲解。

DESCRIBE/DESC语句可以查看表的字段信息,

其中包括:字段名、字段数据类型、是否为主键、是否有默认值等。

语法规则如下

DESCRIBE 表名

或者简写为:

DESC 表名

比如:分别使用DESCRIBE和DESC查看表tb dept1和表tb emp1的表结构。

查看tb_dept1表结构,SQL语句如下:

5.数据表基本操作_第18张图片

其中,各个字段的含义分别解释如下:

NULL:表示该列是否可以存储NULL值。

Key: 表示该列是否已编制索引。

PRI 表示该列是表主键的一部分;

UNI 表示该列是UNIQUE索引的一部分,

MUL 表示在列中某个给定值允许出现多次。

Default:表示该列是否有默认值,如果有的话值是多少

Extra:表示可以获取的与给定列有关的附加信息,例如 AUTO_INCREMENT等

查看表详细结构语句SHOW CREATE TABLE

SHOW CREATE TABLE语句可以用来显示创建表时的CREATE TABLE语语法格式

如下:

SHOW CREATE TABLE <表名 \G>;

使用SHOW CREATE TABLE 语句,不仅可以查看表创建时候的详细语句,

而且还可以查看存储引擎和字符编码。如果不加 \G参数,显示的结果可能非常混乱,加上参数“\G’之后,可使显示结果更加直观,易于查看。

比如:使用SHOW CREATE.TABLE查看表tb_emp1的详细信息,SQL语句如下:

mysql> mysql> show create table tb_emp1

5.数据表基本操作_第19张图片

使用参数’\G’之后的结果如下:

mysql> mysql> show create table tb_emp1 \G;

5.数据表基本操作_第20张图片

3.修改数据表

修改表指的是修改数据库中已经存在的数据表的结构,MySQL使用ALTER TABLE语句修改表。

常用的修改表的操作有:修改表名、修改字段数据类型或字段名、增加和删除字段、修改字段的排列位置、更改表的存储引擎、删除表的外键约束等。

修改表名:

MySQL是通过ALTER.TABLE语来实现表名的修改的,具体的语法规则如下

ALTER   TABLE    <旧表名>    RENAME [TO]    <新表名>;

其中TO为可选参数,使用与否均不影响结果。

比如:将数据表tb_dept3改名为tb_deptment3。

使用ALTER TABLE将表tb_dept3改名为tb_deptment3,SQL语句如下:

mysql> alter table tb_dept3 rename tb_deptment3;

语句执行之后,检验表tb_dept3是否改名成功。使用SHOW TABLES查看数据库中的表。

5.数据表基本操作_第21张图片

在修改表名称时使用DESC命令查看修改前后两个表的结构,修改表名并不修改表的结构, 因此修改名称后的表和修改名称前的表的结构必然是相同的。

修改字段的数据类型

就是把字段的数据类型转换成另一种数据类型。在 MySQL 中修改字段数据类型的语法规则如下:

ALTER   TABLE   <表名>   MODIFY   <字段名>    <数据类型>

其中“表名”指要修改数据类型的字段所在表的名称,

“字段名”指需要修改的字段“数据类型”指修改后字段的新数据类型。

比如:将数据表tb_dept1中name字段的数据类型由VARCHAR(22)修改成

VARCHAR(30)。

执行修改表名操作之前,使用DESC查看tb_dept表结构,结果如下:

desc tb_dept1;

5.数据表基本操作_第22张图片

可以看到现在name字段的数据类型为VARCHAR(22),下面修改其类型。

输入如下SQL语句并执行:

mysql> alter table tb_dept1 modify name varchar(30);

5.数据表基本操作_第23张图片

语句执行之后,发现表 tb_deptl 表中name字段的数据类型已经修改成了VARCHAR(30)。

修改字段名:

MySOL中修改表字段名的语法规则如下:

ALTER  TABLE  <表名>  CHANGE  <旧字段名>   <新字段名>   <新数据类型>;

其中,“旧字段名”指修改前的字段名:“新字段名”指修改后的字段名;

“新数据类型”指修改后的数据类型,如果不需要修改字段的数据类型,

可以将新数据类型设置成与原来一样即可,但数据类型不能为空。比如:将数据表tb_dept1中的location字段名称改为loc,数据类型保持不变,

SQL语句如下:

alter table tb_dept1 change location loc varchar(50);

原:

5.数据表基本操作_第24张图片

现在:

5.数据表基本操作_第25张图片

CHANGE 也可以只修改数据类型,实现和MODIFY 同样的效果,

方法是将 SQL语句中 的“新字段名”和“旧字段名”设置为相同的名称,只改变“数据类型”。由于不

同类型的数据在机器中存储的方式及长度并不相同,修改数据类型可能会影响到数据表中已有的数据记录。因此,当数据库表中已经有数据时,不要轻易修改数据类型。

添加字段:

随着业务需求的变化,可能需要在已经存在的表中添加新的字段。一个完整字段包括字段名、数据类型、完整性约束。

添加字段的语法格式如下:

ALTER TABLE   <表名>   ADD  <新字段名>   <数据类型>   [约束条件]   [FIRST | AFTER 已存在字段名];

新字段名为需要添加的字段的名称;“FIRST”为可选参数,其作用是将新添加的字段设置为表的第一个字段:“AFTER”为可选参数,其作用是将新添加的字段添加到 指定的"已存在字段名"的后面。

1、添加无完整性约束条件的字段

比如:在数据表tb_dept1中添加一个没有完整性约束的INT类型的字段

managerId

(部门经理编号),SQL语句如下:

mysql> alter table tb_dept1 add managerid int(10);

5.数据表基本操作_第26张图片

此方法会将字段添加到最后。

2、添加有完整性约束条件的字段

比如:在数据表tb_dept1中添加一个不能为空的VARCHAR(12)类型的字段column1,

SQL语句如下:

mysql> alter table tb_dept1 add column1 varchar(12) not null;

5.数据表基本操作_第27张图片

3、在表的第一列添加一个字段

比如:在数据表tb_dept1中添加一个INT类型的字段column2,SQL语句如 下:

mysql>alter table tb_dept1 add column2 int(11) first;

5.数据表基本操作_第28张图片

4、在表的指定列之后添加一个字段

比如:在数据表tb_dept1中name列后添加一个INT类型的字段column3,

SQL语句如下:

mysql> alter table tb_dept1 add column3 int(11) after name;

5.数据表基本操作_第29张图片

删除字段:

删除字段是将数据表中的某个字段从表中移除,语法格式如下:

ALTER  TABLE   <表名>   DROP  <字段名>;

“字段名”指需要从表中删除的字段的名称

比如:删除数据表tb_dept1表中的column2字段。

删除column2字段,SQL语句如下:

mysql> alter table tb_dept1 drop column2;

5.数据表基本操作_第30张图片

修改字段的排列位置:

对于一个数据表来说,在创建的时候,字段在表中的排列顺序就已经确定了。

但表的结构并不是完全不可以改变的,可以通过 ALTER TABLE 来改变表中字段的相对位置。

语法格式如下:

ALTER  TABLE   <表名>   MODIEY   <字段1>   <数据类型>     FIRST | AFTER <字段2>;

“数据类型”指“字段1”的数据类型,

“FIRST”为“字段1”指要修改位置的字段,可选参数,指将“字段1”修改为表的第一个字段,

“AFTER 字段2”指将“字段1”插入到“字段2”后面。

1、修改字段为表的第一个字段

比如:将数据表tb_dept中的column1字段修改为表的第一个字段,SQL语

句如下:

mysql> alter table tb_dept1 modify column1 varchar(12) first;

5.数据表基本操作_第31张图片

2、修改字段到表的指定列之后

比如:将数据表tb_dept1中的column1字段插入到loc字段后面,SQL语句如下:

mysql> alter table tb_dept1 modify column1 varchar(12) after loc;

5.数据表基本操作_第32张图片

更改表的存储引擎:

通过前面章节的学习,知道存储引擎是 MySQL中的数据存储在文件或者内存中时采用的不同技术实现。可以根据自己的需要,选择不同的引擎,甚至可以为每一张表选择不同的存储引擎。

MySOL中主要存储引擎有:MyISAM、InnoDB、MEMORY(HEAP)BDBFEDERATED等。

可以使用 SHOW ENGINES语查看系统支持的存储引擎。

更改表的存储引擎的语法格式如下:

ALTER  TABLE  <表名>   ENGINE=<更改后的存储引擎名>;

比如:将数据表tb_deptment3的存储引擎修改为MyISAM。

在修改存储引擎之前,先使用SHOW CREATE TABLE查看表tb_deptment3当前的存储引擎

mysql> show create table tb_deptment3 \G

5.数据表基本操作_第33张图片

可以看到,表tbdeptment3当前的存储引擎为ENGINE=InnoDB, 接下来修改存储引擎类型,输入如下SOL语句并执行:

mysql> alter table tb_deptment3 engine=myisam;

5.数据表基本操作_第34张图片

使用SHOW CREATE TABLE 再次查看表tb_deptment3 的存储引擎,发现表的存储引擎变成了“MyISAM”

删除表的外键约束:

对于数据库中定义的外键,如果不再需要,可以将其删除。外键一旦删除,就会解除主表和从表间的关联关系,MySQL中删除外键的语法格式如下:

ALTER  TABLE  <表名>  DROP  FOREIGN  KEY  <外键约束名>

“外键约束名”指在定义表时CONSTRAINT 关键字后面的参数。

比如:

删除数据表tb_emp9中的外键约束。

首先创建表tb_emp9,创建外键deptId关联tb_dept1表的主键id,SQL语句

如下:

create table tb_emp9 
(
id int(11) primary key,
name varchar(25),
deptId int(11),
salary float,
constraint fk_emp_dept foreign key (deptId) references tb_dept1(id)
);

5.数据表基本操作_第35张图片

使用SHOW CREATE TABLE查看表tb_emp9的结构,结果如下:

mysql> show create table tb_emp9 \G;

5.数据表基本操作_第36张图片

可以看到,已经成功添加了表的外键,下面删除外键约束,SQL语句如下

mysql> alter table tb_emp9 drop foreign key fk_emp_dept;

使用SHOW CREATE TABLE再次查看表tb_emp9结构,结果如下:

mysql> show create table tb_emp9 \G;

5.数据表基本操作_第37张图片

可以看到,tb_emp9中已经不存在FOREIGN KEY,原有的名称为 emp_dept的外键约束删除成功.

4、删除数据表

删除数据表就是将数据库中已经存在的表从数据库中删除。注意,在删除表的同时,表的定义和表中所有的数据均会被删除。因此,在进行删除操作前,最好对表中的数据做个备份,以免造成无法挽回的后果。本节将详细讲解数据库表的删除方法。

1、删除没有被关联的表:

在MySQL中使用DROP TABLE可以一次删除一个或多个没有被其他表关联的数据表语法格式如下:

DROP TABLE [IF EXISTS] 表1,表2,...表n;

其中“表n”指要删除的表的名称,后面可以同时删除多个表,只需将要删除的表名依次写在后面,

相互之间用逗号隔开即可。如果要删除的数据表不存在,则MySQL会提示一条错误信息

“ERROR 1051(42S02):Unknown table 表名”。参数“IFEXISTS”用于在删除前判断删除的表

是否存在,加上该参数后,再删除表的时候,如果表不存在,SOL 语句可以顺利执行,

但是会发出警告(warning)。

比如:

删除数据表tb_dept2,SQL语句如下:

drop table if exists tb_dept2;

语句执行完毕之后使用SHOW TABLES 命看当前数据库中所有的表SOL语

如下:

5.数据表基本操作_第38张图片

执行结果可以看到,数据表列表中已经不存在名称为 tb_dept2 的表,删除操作成功。

2、删除被其他表关联的主表:

数据表之间存在外键关联的情况下,如果直接删除父表,结果会显示失败。原因是直接删除,

将破坏表的参照完整性。

如果必须要删除,可以先删除与它关联的子表再删除父表, 只是这样同时删除了两个表中的数据。但有的情况下可能要保留子表,这时如要单独删除父表,

只需将关联的表的外键约束条件取消,然后就可以删除父表。

下面讲解这种方法。在数据库中创建两个关联表,首先,创建表bdept2,

SOL语句如下:

create table tb_dept2 
( 
id int(11) primary key, 
name varchar(22), 
location varchar(50) 
); 

接下来创建表tb_emp,

SQL语句如下:

create table tb_emp 
( 
id INT(11) primary key, 
name varchar(25), 
deptId int(11), 
salary float, 
constraint fk_emp_dept foreign key (deptId) references tb_dept2(id) 
); 

使用SHOW CREATE TABLE命令查看表tb_emp的外键约束,结果如下:

5.数据表基本操作_第39张图片

可以看到,以上执行结果创建了两个关联表 tb_dept2和表 tb_emp,其中tb

emp表为子表具有名称为fk_emp_dept的外键约束,tb_dept2为父表,其主键id被子表 tb_emp所关联。

现在我们删除被数据表tb_emp关联的数据表tb_dept2。

首先直接删除父表tb_dept2,输入删除语句如下:

 drop table tb_dept2;

可以看到,如前所述,在存在外键约束时,主表不能被直接删除。

接下来,解除关联子表temp的外键约束,SOL 语句如下:

 alter table tb_emp drop foreign key fk_emp_dept; 

语句成功执行后,将取消表 tb emp 和表 tb dept2 之间的关联关系,

此时,可以输入删除语句,将原来的父表tdept2删除,SOL语句如下:

drop table tb_dept2;

最后通过SHOW TABLES 查看数据表列表,如下所示:

5.数据表基本操作_第40张图片

可以看到,数据表列表中已经不存在名称为tb_dept2的表.

5、练习题

1、创建数据库Market,在Market 中创建数据表customers,customers 表结构如表4.6所示 并按要求进行操作。

5.数据表基本操作_第41张图片

(1)创建数据库Market。

(2)创建数据表customers,在c_num字段上添加主键约束和自增约束,

在c_birth字段上添加非空约束。

(3)将c_contact字段插入到c_birth字段后面。

(4)将c_name字段数据类型改为 VARCHAR(70)。

(5)将c_contact字段改名为c_phone

(6)增加c_gender 字段,数据类型为 CHAR(1)。

(7)将表名修改为customers_info。

(8)删除字段c_city.

(9)修改数据表的存储引擎为MyISAM。

部分代码

create table customers
(
c_num int(11)  primary key  unique auto_increment,
c_name varchar(50),
c_contact varchar(50),
c_city varchar(50),
c_birth datetime not null
);

2、在Market中创建数据表orders,orders表结构如表4.7所示,按要求进行操作。

5.数据表基本操作_第42张图片

(1)创建数据表orders,在o_num字段上添加主键约束和自增约束,

在c_id字段上添加外键约束,关联customers表中的主键c_num。

(2)删除orders 表的外键约束,然后删除表customers。

部分代码

create table orders
( 
o_num int(11) primary key auto_increment, 
o_date date, 
c_id int(11), 
constraint a_b foreign key(c_id) references customers_info(c_num) 
);

 

你可能感兴趣的:(数据库,数据库)