一、实验目的
熟练掌握使用Navicat和Transact-SQL语言两种方法创建、修改和删除数据库。学习在Navicat中进行数据库的转储和导入。掌握管理数据库的有关系统存储过程。
二、实验内容
1、利用Navicat创建满足以下要求的数据库:
1)数据库存在于连接MySQL中;
2)数据库名称为mydb;
3)字符集选择utf8 -- UTF-8 Unicode;
4)排序规则选择utf8_general_ci
步骤:
右键—数据库属性,可以看到如下图所示结果
2、利用Transact-SQL语言创建满足以下要求的数据库:
1)数据库存在于连接MySQL中;
2)数据库名称为mydb;
3)字符集选择utf8 -- UTF-8 Unicode;
4)排序规则选择utf8_general_ci;
步骤:
点击“新建查询”,在查询编辑器输入以下代码:
CREATE DATABASE testdb DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
点击“运行”,结果如下图所示:
完成后,左侧列表中选中连接“MySQL”,点击“刷新”按钮,列表即可见到“testdb”
3、利用Transact-SQL语言查看数据库及表的信息。
①查看连接中的所有数据库
步骤:点击“新建查询”,输入以下代码:
USE mysql;
SHOW DATABASES;
运行,结果如下图所示:
②查看数据库mysql中所有的表
步骤:点击“新建查询”,输入以下代码:
USE mysql;
SHOW DATABASES;
运行,结果如下图所示:
③查看数据库“mysql”中表“help_keyword”的结构
步骤:点击“新建查询”,输入以下代码并运行:
USE mysql;
SHOW TABLES;
结果如下图所示:
4、利用Navicat修改数据库mydb,修改其排序方式为utf8_bin。
步骤:右键单击数据库“mydb”—数据库属性,在排序方式中选择“utf8_bin”—“确定”。
5、利用Transact-SQL语言修改数据库mydb的字符集为Latin1;
步骤:点击“新建查询”,输入以下代码:
ALTER DATABASE mydb DEFAULT CHARACTER SET = latin1
运行,结果如下图所示:
关闭数据库“mydb”后重新打开,查看数据库属性,可以看到下图结果:
6、利用Navicat删除数据库mydb。
直接右键点击mydb选择删除即可,注意要关闭当前的SQL语句编写界面
7、利用Transact-SQL语言删除数据库testdb。
步骤:点击“新建查询”,输入以下代码:
DROP DATABASE testdb
运行,结果如下图所示:
刷新连接“MySQL”,查看结果
8、转储MySQL数据库。
步骤:打开连接“MySQL”—右键单击数据库“mysql”—选择“转储SQL文件”—将文件名改为“sql.sql”后保存在桌面,如下图所示:
成功后将出现如下图所示情况:
9、导入MySQL数据库。
①在连接“MySQL”中新建数据库“sql”(字符集与排序方式尽量一致)。
②打开数据库“sql”—右键单击—运行SQL文件—选择桌面的“sql.sql”文件—点击“确定”。如下图所示:
③执行结果如下图所示则表示成功。关闭数据库sql后重新打开,对比数据库“sql”与最初的数据库“mysql”,内容完全相同。
三、课后练习题
1、分别用以下几种语句查看数据库“mysql”中任意表的结构或数据(先输入:“USE mysql;”):
①SHOW COLUMNS FROM 表名;
②DESCRIBE 表名;
③DESC 表名
④SELECT * FROM 表名
2、思考以下问题:
1)mysql中utf8编码的utf8_bin,utf8_general_cs,utf8_general_ci三者的区别
答:
utf8_bin将字符串中的每一个字符用二进制数据存储,区分大小写
utf8_genera_ci不区分大小写,ci为case insensitive的缩写,即大小写不敏感
utf8_general_cs区分大小写,cs为case sensitive的缩写,即大小写敏感
2)不同编码方式的数据库之间进行转储和导入会不会出现错误
答:
需要保证导出文件的编码集和要导入的目标库的编码集一致。这里注意,同一服务的不同库可能有不同设置,同一库中可能不同表有不同设置,同一表中可能不同字段有不同设置。不论原始数据、过程中的数据,编码是怎样的,只要保证最终转换后的字符编码、编码命令配置是一致的,就不会出现错误
四、出现的问题及解决方案
问题:
ORDER BY关键字降序排序问题
SQL AND & OR 运算符与优先级问题
WHERE语句的特殊条件——例如is null、between and、like模糊查询等问题