收藏 分享(赏)

2-数据表的基本操作.doc

上传人:fmgc7290 文档编号:4565612 上传时间:2019-01-02 格式:DOC 页数:14 大小:109.50KB
下载 相关 举报
2-数据表的基本操作.doc_第1页
第1页 / 共14页
2-数据表的基本操作.doc_第2页
第2页 / 共14页
2-数据表的基本操作.doc_第3页
第3页 / 共14页
2-数据表的基本操作.doc_第4页
第4页 / 共14页
2-数据表的基本操作.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

1、飞越电脑求实教育中心 MySQL 之二主讲老师:李霞 - 1 -数据表的基本操作一、 创建数据表在创建完数据库之后,接下来的工作就是创建数据表,所谓创建数据表,指的是在已经创建好的数据库中建立新表,创建数据表的过程是规定数据列的属性的过程,同时也是实施数据完整性(包括实体完整性、引用完整性和域完整性等)约束的过程。这里将介绍创建数据表的语法形式、如何添加主键约束、外键约束、非空约束等。1、 创建表的语法形式数据表属于数据库,在创建数据库之前,应该使用语句“USE ”指定操作是在哪个数据库中进行,如果没能选择数据库,会抛出“No database selected”的错误。创建数据表的语句为 C

2、REATE TABLE,语法规则如下:CREATE TABLE(字段表 1,数据类型 列级别约束条件 默认值字段表 2,数据类型列级别约束条件 默认值表级别约束条件) ;使用 CREATE TABLE 创建表时,必须指定以下信息:(1)要创建的表的名称,不区分大小写,不能使用 SQL 语言中的关键字,如DROP、 ALTER、INSERT 等。(2)数据表中每一个列(字段)的名称和数据类型,如果创建多个列,要用逗号隔开。【例 1】创建员工表 tb_emp1选择创建表的数据库:USE test_db;tb_emp1 表结构字段名称 数据类型 备注id INT(11) 员工编号name VARCH

3、AR(25) 员工名称deptld INT(11) 所在部门编号salary FLOAT 工资创建 tb_emp1 表:CREATE TABLE tb_emp1(id int(11),name varchar(25),deptId int(11),salary float);可以看到,test_db 数据库中已经有了数据表 tb_tmp1,数据表创建成功。飞越电脑求实教育中心 MySQL 之二主讲老师:李霞 - 2 -mysql show create table tb_emp1;+-+-+| Table | Create Table |+-+-+| tb_emp1 | CREATE TABL

4、E tb_emp1 (id int(11) default NULL,name varchar(25) default NULL,deptId int(11) default NULL,salary float default NULL) ENGINE=MyISAM DEFAULT CHARSET=utf8 | +-+-+1 row in set (0.00 sec)2、使用主键约束主键,又称主码,是表中一列或多列的组合,主键约束(Primary Key Constraint)要求主键列的数据唯一,并且不允许为空,主键能够唯一地标识表中的一条记录,可以结合外键来定义不同数据表之间的关系,并且可

5、以加快数据库查询的速度。主键和记录之间的关系如同身份证和人之间的关系,它们之间是一一对应的。主键分为两种类型:单字段主键和多字段联合主键。A、单字段主键主键是由一个字段组成,SQL 语句格式分类以下两种情况。(1)在定义列的同时指定主键,语法规则如下:字段名 数据类型 PRIMARY KEY 默认值【例 2】定义数据表 tb_emp 2,其主键为 id:CREATE TABLE tb_emp2 (id int(11) PRIMARY KEY,name varchar(25),deptId int(11),salary float);(2)在定义完所在列之后指定主键。CONSTRINT PRIM

6、ARY KEY 默认值【例 3】定义数据表 tb_emp 3,其主键为 id:CREATE TABLE tb_emp3 (id int(11),name varchar(25),deptId int(11),salary float,飞越电脑求实教育中心 MySQL 之二主讲老师:李霞 - 3 -PRIMARY KEY(id);上述两个例子执行后的结果是一样的,都会在 id 字段上设置主键约束。B、多字段联合主键主键由多个字段联合组成,语法规则如下:PRIMARY KEY 字段 1,字段 2,字段 n【例 4】定义数据表 tb_emp4,假设表中间没有主键 id,为了唯一确定一人员工,可以把

7、name、deptId 联合起来做为主键,SQL 语句如下:CREATE TABLE tb_emp4 (name varchar(25),deptId int(11),salary float,PRIMARY KEY(name,deptId);语句执行后,便创建一个名称为 tb_emp4 的数据表,name 字段和 deptId 字段组合在一起成为 tb_emp4 的多字段联合主键。3、使用外键约束外键用来在两上表的数据之间建立链接,它可以是一列或多列。一个表可以有一个或多个外键,外键对应参照完整性,一个表的外键可以为空值,则每一个外键值必须等于另一个表中主键的某个值。外键:首先它是表中的一个

8、字段,它可以不是本表的主键,但对应另外一个表的主键,外键主要作用是保证数据引用的完整性、定义外键后,不允许删除在另一个表中具有关系的行。外键的作用是保持数据的一致性、完整性。例如,部门表 tb_dept 的主键是 id,在员工表 tb_emp5 中有一个 deptId 与这个 id 关联。主表(父表):对于两个具有关联关系的表而言,相关联字段中主键所在的那个表即是主表。从表(子表):对于两个具有关联关系的表而言,相关联字段中的外键所在的那个表即是从表。创建外键的语法规则如下:CONSTRAINT FOREIGN KEY 字段名 1 ,字段名 2,REFERENCES 主键列 1,主键列 2,“

9、外建名”为定义的外键约束的名称,一个表中不能有相同名称的外键;“字段名”表示子表需要添加外键约束的字段列:“主表名”即被子表外键依赖的表的名称;“主键列”表示主表中定义的主键列,或者列组合。【例 5】定义数据表 tb_emp5,并在 tb_emp5 表上创建外键约束创建一个部门表 tb_dept1:CREATE TABLE tb_dept1(id int(11) PRIMARY KEY,name varchar(22) NOT NULL,location varchar(50);飞越电脑求实教育中心 MySQL 之二主讲老师:李霞 - 4 -tb_dept1 表结构字段名称 数据类型 备注id

10、I NT(11) 部门编号name VRCHAR(22) 部门名称location VARCHAR(50) 部门位置定义数据表 tb_emp5,让它的键 deptId 作为外键关联到 tb_dept1 的主键 id: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);以上语句执行成功之后,在表 tb_emp5 上添加了名称为 tk_

11、emp_dept1 的外键约束,外键名称为 deptId,其依赖于表 tb_dept1 的主键 id。4、使用非空约束非空约束(Not Null Constraint)指字段的值不能为空。对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统会报错。非空约束的语法规则如下:字段名称 数据类型 not null【例 6】定义数据表 tb_emp6,指定员工的名称不能为空,SQL 语句为:CREATE TABLE tb_emp6 (id int(11) PRIMARY KEY,name varchar(25) NOT NULL,deptId int(11), salary float

12、,CONSTRAINT fk_emp_dept2 FOREIGN KEY (deptId) REFERENCES tb_dept(id);执行后,在 tb_emp6 中创建一个 Name 字段,其插入值不能为空( NOT NULL) 。5、使用唯一性的约束唯一性约束(Unique Constraint)要求该列唯一,允许为空,但只能出现一个空值,唯一约束可以确保一列或者几列不出现重复值。非空约束的语法规则如下:(1)在定义完列之后直接指定唯一的约束,语法规则如下:字段名 数据类型 UNIQUE【例 7】定义数据表 tb_dept2,指定部门的名称唯一,SQL 语句为:CREATE TABLE

13、tb_dept2 (飞越电脑求实教育中心 MySQL 之二主讲老师:李霞 - 5 -id int(11) PRIMARY KEY,name varchar(22) UNIQUE,location varchar(50);(2)在定义完所有列之后指定唯一约束,语法规则如下:CONSTRAINT UNIQUE ()【例 8】定义数据表 tb_dept3,指定部门的名称唯一,SQL 语句为:CREATE TABLE tb_dept3 (id int(11) PRIMARY KEY,name varchar(22),location varchar(50),CONSTRAINT STH UNIQUE(

14、name);UNIQUE 和 PRIMARY KEY 的区别:一个表中可以有多个字段声明为 UNIQUE,但只能有一个 PRIMARY KEY 声明;声明为 PRIMARY KEY 的列不允许为空值,但是声明为UNIQUE 的字段允许为空值(NULL)的存在。6、使用默认约束默认约束(Default Constraint)指定某列的默认值。如男性同学较多,性别就可以默认为男 。如果插入一条新的记录时没能有为这个字段赋值,那么系统会自动为这个字段赋值为男 。默认约束的语法规则如下:字段名 数据类型 DEFAULT 默认值【例 9】定义数据表 tb_emp7,指定员工的部门编号默认为 1111,S

15、QL 语句为:CREATE TABLE tb_emp7 (id int(11) PRIMARY KEY,name varchar(25) NOT NULL,deptId int(11) DEFAULT 1111, salary float,CONSTRAINT fk_emp_dept3 FOREIGN KEY (deptId) REFERENCES tb_dept(id);以上语句执行成功之后,表 tb_emp7 上的字段 detpId 拥有一个默认值 1111,新插入的记录如果没有指定部门编号,则默认都为 1111。7、设置表的属性值自动增加在数据库应用中,经常希望在每次插入新记录时,系统自

16、动生成字段的主键值,可以通过为表主键添加 AUTO_INCREMENT 关键字来实现。默认的,在 MySQLk AUTO_INCREMENT 的初始值是 1,每新增一条记录,字段值自动加 1。一个表只能有一个字段使用 AUTO_INCERMENT 约束,且该字段必须为主键的一部分。AUTO_INCREMENT 约束的字段可以是任何整数类型(TINYINT、SMALLIN 、INT 、BIGINT 等) 。设置唯一性约束的语法规则如下:飞越电脑求实教育中心 MySQL 之二主讲老师:李霞 - 6 -字段名 数据类型 AUTO_INCREMENT【例 10】定义数据表 tb_emp8,指定员工的编

17、号自动递增,SQL 语句为:CREATE TABLE tb_emp8(id int(11) PRIMARY KEY AUTO_INCREMENT,name varchar(25) NOT NULL,deptId int(11), salary float,CONSTRAINT fk_emp_dept5 FOREIGN KEY (deptId) REFERENCES tb_dept(id);上述例子执行后,会创建名称为 tb_emp8 中的 id 字段的值在添加记录的时候会自动增加,在插入记录的时候,默认的自增字段 id 的值从 1 开始,每次添加一条新记录,该值自动加1。例如,执行如下插入语句

18、:INSERT INTO tb_emp8 (name,salary) VALUES(Lucy,1000), (Lura,1200),(Kevin,1500);语句执行完后,tb_emp8 表中增加 3 条记录,在这里并没有输入 id 的值,但系统已经自动添加该值,使用 SELECT 命令查看记录。提示:使用 INSERT 声明表中插入记录的方法,美其名曰不是 SQL 的标准语法,这种语法不一定被其他的数据库支持,只能在 MySQLQ 中使用。二、查看数据表结构使用 SQL 语句创建好数据表之后,可以查看表结构的定义,以确定表的定义是否正确。在 MySQL 中,查看表结构可以使用 DESCRIB

19、E 和 SHOW TABLE 语句,本节将针对这两个语句分别进行详细的讲解。1、查看表基本结构语句 DESCRIBEDESCRIBE/DESC 语句可以查看表的字段信息,其中包括:字段名、字段数据类型、是否为主键、是否有默认值等。语法规则如下:DESCRIBE 表名;或者简写为:DESC 表名;查看表:select * from tb_emp8;【例 11】分别使用 DESCRIBE 和 DESC 查看表 tb_dept 和表 tb_emp1 的表结构,操作过程如下:DESCRIBE tb_dept;DESC tb_emp1;其中,各个字段的含义分别解释如下:NULL:表示该列是否可以存储 N

20、ULL 值。key:表示该列是否已编制索引。PRI 表示该列是表主键的一部分;UNI 表示该列是飞越电脑求实教育中心 MySQL 之二主讲老师:李霞 - 7 -UNIQUE 索引的一部分;MUL 表示在列中某个给定值允许出现多次。Default:表示该列是否有默认值,如果有的话值是多少。Extra:表示可以获取的与给定列有关的附加信息,例如 AUTO_INCREMENT 等。2、查看表详细结构语句 SHOW CREATE TABLESHOW CREATE TABLE 语句可以用来显示创建表时的 CREATE TABLE 语句,语法格式如下:SHOW CREATE TABLE ;提示:使用 SH

21、OW CREATE TABLE 语句,不仅可以查看表创建时候的详细语句,而且还可以查看存储引擎和字符编码。如果不加G参数,显示的结果可能非常混乱,加上参数G之后,可使显示结果更加直观,易于查看。【例 12】使用 SHOW CREATE TABLE 查看表 tb_emp1 的详细信息,SQL 语句及相应的执行结果如下示:SHOW CREATE TABLE tb_emp1;SHOW CREATE TABLE tb_emp1G;mysql SHOW CREATE TABLE tb_emp1G;* 1. row *Table: tb_emp1Create Table: CREATE TABLE tb_

22、emp1 (id int(11) default NULL,name varchar(25) default NULL,deptId int(11) default NULL,salary float default NULL) ENGINE=MyISAM DEFAULT CHARSET=utf81 row in set (0.00 sec)三、修改数据表修改表指的是修改数据库中已经存在的数据表的结构,MySQL 使用 ALTER TABLE 语句修改,常用的修改表的操作有:修改表名、修改字段数据类型或字段名、增加和删除字段、修改字段的排列位置,更改表的存储引擎,删除表的外键约束等。本节将对和

23、修改表有关的操作进行讲解。alert table1、修改表名MySQL 是通过 ALTER TABLE 语句来实现表名的修改,具体的语法规则如下:ALTER TABLE RENAME TO ;其中 TO 为可选参数,使用与将不影响结果。查看表:mysqlSHOW TABLES;【例 13】将数据表 tb_dept3 改名为 tb_deptment3ALTER TABLE tb_dept3 RENAME tb_deptment3; 经过比较可以看到,数据列表中已经有了名称为了 tb_deptmetnt3 的表。提示:读者可以在修改表名称是使用 DESC 命令查看修改前后两个表的结构,修改表名飞越

24、电脑求实教育中心 MySQL 之二主讲老师:李霞 - 8 -并不修改表的结构,因此修必名称后和修改名称前的表的结构必然是相同的。2、修改字段的数据类型修改字段的数据类型,就是把字段的数据类型转换成另一种数据类型,在 MySQL 中修改字段数据类型的语法规则如下:ALTER TABLE MODFIY 其中“表名”指要修改数据类型的字段所在表的名称, “字段名”指需要修改的字段,“数据类型”指修改后字段的新数据类型。【例 14】将数据表 tb_dept1 中 name 字段的数据类型由 VARCHAR(22)的修改成VARCHAR(30)可以看到现在 name 字段的数据类型为 VARCHAR(2

25、) ,下面修改其类型。输入 SQL 语句并执行:ALTER TABLE tb_dept MODIFY name VARCHAR(30);再次使用 DESC 查看表:mysqlDESC tb_dept1;+-+-+-+-+-+-+| Field | Type | Null | Key | Default | Extra |+-+-+-+-+-+-+| id | int(11) | YES | | NULL | | | name | varchar(25) | YES | | NULL | | | deptId | int(11) | YES | | NULL | | | salary | flo

26、at | YES | | NULL | | +-+-+-+-+-+-+4 rows in set (0.05 sec)语句执行之后,检验会发现表 tb_dept 表中 name 字段的数据类型已经修改成了VARCHAR(30 )修改成功。3、修改字段名MySQL 中修改表字段名的语法规则如下:ALTER TABLE CHANGE 其中, “旧字段名”指修改前的字段名;“新字段名”指修改后的字段名;“新数据类型”指修改后的数据类型,如果不需要修改字段的数据类型,可以将新数据类型设置成与原来一样即可,如下:【例 15】将数据表 tb_dept1 中的 location 字段名称改为 loc,数据类

27、型保持不变。ALTER TABLE tb_dept1 CHANGE location loc varchar(50);【例 16】将数据表 tb_dept1 中的 loc 字段名称改为 location,同时将数据类型保持变为varchar(60)。ALTER TABLE tb_dept1 CHANGE loc location varchar(60);技巧:CHANGE 也可以只修改数据类型,实现和 MODIFY 同样的效果;方法是将 SQL语句中的“新字段名 ”和“旧字段名”设置为相同的名称,只改变“数据类型” 。提示:由于不同类型的数据在机器中存储的方式及长度并不相同,修改数据类型可能会

28、影响到数据表中已有的数据记录。因此,当数据表中已经有数据时,不要轻易修改数据类型。飞越电脑求实教育中心 MySQL 之二主讲老师:李霞 - 9 -4、添加字段随着业务需求的变化,可能需要在已经存在的表中添加新的字段,一个完整字段包括字段名、数据类型、完整性的约束。添加字段的语法格式如下:ALTER TABLE ADD 约束条件 FLRST | AFTER 已存在字段名;新字段名为需要添加的字段的名称:“FIRST”为可选参数,其作用是将新添加剂的字段设置为表的第一个字段;“FIRST”这可选参数,其作用是将添加到指定的 “已存在字段”的后面。提示:“FIRST”或“AFTER 已存在字段名”用

29、于指定新增字段在表中的位置,如果SQL 语句中没有这两个参数,则默认将新添加的字段设置为数据表的最后列。A、 添加完整性约束条件的字段【例 17】在数据表 tb_dept 中添加一个没有完整性约束的 int 类型的字段 managerId(部门经理编号) ,输入 SQL 语句如下:ALTER TABLE tb_dept ADD managerId int(10);使用 DESC 查看表 tb_dept1,会发现在表的最后添加了一个名为 managerId 的 INT 类型字段,结果如下:mysqlDESC tb_dept1;B、 添加有完整性约束条件的字段【例 18】在数据表 tb_dept1

30、 中添加一个不能为空的 varchar(12)类型的字段 column1。输入如下 SQL 语句,并执行:ALTER TABLE tb_dept1 ADD column1 varchar(12) not null;使用 DESC 查看表 tb_dept1。C、 在表的第一列添加一个字段【例 19】在数据表 tb_dept 中添加一个 int 类型的字段 column2。输入如下 SQL 语句,并执行:ALTER TABLE tb_dept ADD column2 int(11) FIRST;使用 DESC 查看表 tb_dept1;D、 在表的指定列之后添加一个字段【例 20】在数据表 tb_

31、dept1 中 name 列后添加一个 int 类型的字段 column3。输入如下SQL 语句,并执行:ALTER TABLE tb_dept1 ADD column3 int(11) AFTER name;使用 DESC 查看 tb_dept1;可以看以,tb_dept1 表中增加了一个名称为 column3 的字段,其位置在指定的 name 字段后面,添加字段成功。5、删除字段删除字段是将数据表中的某个字段从表中移除,语法格式如下:ALTER TABLE DROP ;“字段名”指需要从表中删除的字段的名称。【例 21】删除数据表 tb_dept1 表中的 column2 字段ALTER

32、TABLE tb_dept1 DROP column2;可以看到,tb_dept1 表中已经不存在名称为 column2 的字段,删除字段成功。飞越电脑求实教育中心 MySQL 之二主讲老师:李霞 - 10 -6、修改字段的排列位置对于一个数据表来说,在创建的时候,字段在表中的排列顺序就已经确定了。但表的结构并不是完全不可以改变的,可以通过 ALTER TABLE 来改变表中字段的相对位置。语法格式下:ALTER TABLE MODIFY FIRST | AFTER ;“字段 1”指要修改位置的字段, “数据类型”指“字段 1”的数据类型, “FIRST”为可选参数,指将“ 字段 1”修改为表

33、的第一个字段, “AFIER 字段 2”指将“字段 1”插入到“字段 2”后面。A、修改字段为表的第一个字段【例 22】将数据表 tb_dept1 中的 column1 字段修改为表的第一个字段ALTER TABLE tb_dept1 MODIFY column1 varchar(12) FIRST;使用 DESC 查看 tb_dept1;B、修改字段到表的指定列之后【例 23】将数据表 tb_dept1 中的 column1 字段插入到 location 字段后面ALTER TABLE tb_ dept1 MODIFY column1 varchar(12) AFTER location;使

34、用 DESC 查看表 tb_dept1;可以看到,tb_dept1 表中的字段 column1 已经被移至 location 字段之后。7、更改表的存储引擎通过前面的学习,我们知道存储引擎是 MySQL 中的数据存储在文件或者内存中时采用的不同技术实现,可以根据自己的需要,选择不同的引擎,甚至可以为每一张表选择不同的存储引擎。MySQL 中主要存储引擎有:MyISAM、InnoDB、MEMORY(HEAP)、BDB、FEDERATEDT 等,可以使用 SHOW NGINES;语句查看系统支持的存储引擎。下表列出了 5.5.13 版本的 MySQL 所支持的存储引擎。引擎名 是否支持FEFERA

35、TED 否MRG_MYISAM 是MyISAM 是BLACKHOLE 是CSV 是MEMORY 是ARCHIVE 是InnoDB 默认PERFORMANCE_SCHEMA 是更改表的存储引擎的语法格式如下:ALTER TABLE ENGINE=【例 24】将数据表 tb_deptment3 的存储引擎修改为 MyISAMALTER TABLE tb_deptment3 ENGINE=MyISAM;可以看到,表 tb_deptement3 当前的存储引擎为 ENGINE=InnoDB,接下来修改存储引擎类型,输入如下 SQL 语句并执行:mysqlALTER TABLE tb_deptment3

36、 ENGINE=MyISAM;使用 SHOW CREATE TABLE 再次查看表 tb_deptment3 的存储引擎,发现表 tb_dept 的存飞越电脑求实教育中心 MySQL 之二主讲老师:李霞 - 11 -储引擎变成了“MyISAM” ,结果如下:SHOW CREATE TABLE tb_deptment3 G;8、删除表的外键约束对于数据库中定义的外键,如果不再需要,可以将其删除。外键一旦删除,就会解除主表和从表间的关联关系,MySQL 中删除外键的语法格式如下:ALTER TABLE DROP FOREIGN “外键约束名”指在定义表时 CONSTRAMINT 关键字后面的参数。

37、【例 25】删除数据表 tb_emp9 中的外键约束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);使用 SHOW TABLE CREATE TABLE 查看表 tb_emp9 的结构,结果如下:ALTER TABLE tb_emp9 DROP FOREIGN KEY fk_emp_dept;可以看到,已经添加了表的外键,下面删

38、除外键约束,SQL 语法如下:ALRTER TABLE tb_emp9 DROP FOREIGN KEY fk_emp_dept;执行完毕后,将删除表 tb_emp 的外键约束,使用 SHOW CREATE TABLE 再次查看表tb_emp9 结构,结果如下:mysqlSHOW CREATE TABLE tb_emp9G;可以看到,tb_emp9 中已经不存在 ROREIGN KEY,原有的名称为 fk_emp_dept 的外键约束删除成功。四、删除数据表删除数据表就是将数据库中已经存在的表从数据库中删除。注意,在删除表的同时,表在定义和表中所有的数据均会被删除。因此,在进行删除操作前,最好

39、对表中的数据做个备份,以免适成无法挽回的后果。本节将详细讲解数据表的删除方法。1、 删除没有被关联的表在 MySQL 中,使用 DROP TABLE 可以一次删除一个或多个没有被其他表关联的数据表。语法格式如下:DROP TABLEIF EXISTS表 1,表 2,表 n;其中“表 n”指要删除的表的名称,后面可以同时删除多个表,只需要要删除的表名依次写在后面,相互之间逗号隔开即可,如果要删除的数据表不存在,则 MySQL 会提示一条错误信息, “ERROR 1051(42S02):Unknown table 表名” 。参数“IF EXIST”用于在删除前判断删除的表是否存在,加上该参数后,再

40、删除表的时候,如果不存在,SQL 语句可以顺利执行,创建该表,但是会发出警告(warning) 。在前面的例子中,已经创建了名为 tb_dept2,SQL 语句如下所示,下面使用删除语句表删除。【例 26】删除数据表 tb_dept2,输入如下 SQL 语句并执行:飞越电脑求实教育中心 MySQL 之二主讲老师:李霞 - 12 -DROP TABLE IF EXISTS tb_dept2;执行结果可以看到,数据表列表中已经不存在名称为 tb_dept2 的表,删除操作成功。1、 删除被其他表关联的主键数据表之间存在外键关联的情况下,如果直接删除父表,结果会显示失败,原因是直接删除,将破坏表的参

41、照完整性,如果必须要删除,可以先删除与它关联的子表,再删除父表,只是这样同时删除了两个表中的数据。但有的情况下可能要保留子表,这时如要单独删除父表,只需要将关联的表的外键约束条件取消,然后就可以删除父表,下面讲解这种方法。在数据库中创建两个关联表,首先,创建表 tb_dept2,SQL 语句如下: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,

42、name varchar(25),deptId int(11), salary float,CONSTRAINT fk_emp_dept FOREIGN KEY (deptId) REFERENCES tb_dept2(id);使用 SHOW CREATE TABLE 命令查看表 tb_emp 的外键约束,结果如下:mysqlSHOW CREATE TABLE tb_empG;可以看到,以上执行结果创建了两个关联表 tb_emp2 和表 tb_emp,其中 tb_emp 表为子表,具有名称为 fk_emp_dept 的外键约束,tb_dept2 为父表,其主键 id 被子表 tb_emp 所关

43、联。【例 27】删除被数据表 tb_emp 关联的数据表 tb_dept2CREATE TABLE tb_dept2 (id int(11) PRIMARY KEY,name varchar(22),location varchar(50);可以看到,如前所述,在存在外键约束时,主表不能被直接删除。接下来,删除关联子表 tb_emp 的外键约束,SQL 语句如下:ALTER TABLE tb_emp DROP FOREIGN KEY fk_emp_dept;语句成功执行后,将取消表 tb_emp 和表 tb_dept2 之间的关联关系,此时,可可以输入删除语句,将原来的父表 tb_dept2 删除,SQL 语句如下:DROP TABLE tb_dept2;最后通过 SHOW TABLES:查看数据表列表。飞越电脑求实教育中心 MySQL 之二主讲老师:李霞 - 13 -mysqlSHOW TABLES;可以看到,数据表列表中已经不存在名称为 tb_dept2 的表。课后实例:步骤 1:登陆数据库mysql -h localhost -u root -p步骤 2:创建数据库 CompanyCREATE DATABASE company;步骤 3:创建表 officesCREATE TABLE offices (officeCode int(

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 实用文档 > 统计图表

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报