知识点
一、数据库备份与还原(知识点)
数据库备份和还原请在系统DOS命令行窗口中完成。
如何进入系统DOS命令行窗口:
使用“微软键+R”打开“运行”对话框,之后在“运行”对话框输入cmd,按“确定”键即可进入系统DOS命令行窗口。
以下语句执行,无需输入 “;”号结束,直接按回车执行。
1.备份示例:mysqldump -uroot -p123456 two>c:/backup/two_17.sql
注:Two:备份的数据库;two_17.sql备份的数据库文件。
2.还原示例:mysql -uroot -p123456 test_17 注:test_17:还原的数据库名称;test.sql:备份的数据库文件。 二、外键(知识点) 外键:在设置外键的时候,删除(delete)和更新(update)有四个参数可以选择:CASCADE、SET NULL、RESTRICT、NO ACTION,它们的区别如下: 参数名称 功能描述 cascade 父表delete、update的时候,子表会delete、update掉关联记录。 set null 父表delete、update的时候,子表会将关联记录的外键字段所在列设为null,所以注意在设计子表时外键不能设为not null。 restrict 如果想要删除父表的记录时,而在子表中有关联该父表的记录,则不允许删除父表中的记录(在不定义on delete和on update字句时,这是默认设置,也是最安全的设置)。 No action 等价于restrict 知识点:cascade是同步变化,restrict是对相应的操纵进行限制。 1、on delete cascade和on update cascade是指在删除和更新时会对该更新操作进行同步 2、on delete restrict和on update cascade是指明在删除时外键会对该删除操作进行限制(不能删除),而on update cascade是指明再更新时会对该操作进行同步。 以上的操作都是针对主表(grade)限制的,外键表(student)不影响。 删除或是更新主表(grade),建立外键的表(student)也会同步删除或是更新, 但是删除或是更新外键表(student),主表(grade)不会有改变。 实验作业 外键知识点:在实际开发中的项目中,一个健壮数据库中的数据一定有很好的参照完整性。例如,有学生档案和成绩单两张表,如果成绩单中有张三的成绩,学生档案中张三的档案却被删除了,这样就会产生垃圾数据或是错误数据。为了保证数据的完整性,将两表之间的数据建立关系,因此就需要在成绩表中添加外键约束。 外键是指引用另一个表中的一列或多列,被引用的列应该具有主键约束或唯一性约束。外键用于建立和加强两个表数据之间的连接。 (4.1)练习题(建立外键):为student表中gid字段建立名为“fk_id”的外键,连接的主表是grade表中的id字段。 将建立外键的语句截图提交: (4.2)练习题:使用语句“show create table 表名G”查看创建好的数据表student,通过里面的语句判断是否成功添加外键, 请将其截图提交: (4.1)练习题(删除外键):删除student表中名为“fk_id”的外键约束(截图提交)。 以下查询使用department和employee数据表 子查询是指一个查询语句嵌套在另一个查询语句内部的查询。它可以嵌套在一个select、select…into语句、insert…into等语句中。在执行查询语句时,首先会执行子查询中的语句,然后将返回的结果作为外层查询的过滤条件,在子查询中通常可以使用in、exists、any、all操作符。 (5.1)带in关键字的子查询 使用in关键字进行子查询时,内层查询语句仅返回一个数据列,这个数据列中的值将供外层查询语句进行比较操作。. 练习题: 查询存在年龄为22岁的员工的部门(使用in关键字)。 提示:子查询是在employee表中查询出age等于22的did。 将查询语句和结果截图提交: (5.2)带exists关键字的子查询 Exists关键字后面的参数可以是任意一个子查询,这个子查询的作用相当于测试,它不产生任何数据,只返回ture或false,当返回值为ture时,外层查询才会执行。 练习题:查询employee表中是否存在年龄大于21岁的员工(子查询),如果存在,则查询department表中的所有记录(使用exists关键字)。 将查询语句和结果截图提交: 储存过程练习题 将代码截图提交: 调用存储过程时n输入90,将结果截图提交: Show procedure statusG 3.查看存储过程的状态(如果查看的是当前数据库下的存储过程,无需”数据库名.”作为前缀) Show create procedure 数据库名.存储过程名; 举例说明 4.删除存储过程语句(如果删除当前数据库下的存储过程,无需”数据库名.”作为前缀) Drop procedure 数据库名.存储过程名;



