项目名称 | 项目七 数据库原理及应用操作 | 时间 | 2022.12.5 |
地点 | 知行楼604操作系统实验室 | 小组成员 | 无 |
1.安装MySQL 2.练习MySQL的基本使用 3.创建MySQL的数据库和表格 4.完成MySQL的基本操作 5.安装Navicat,并基本使用 |
|||
主要仪器设备: 装有MySQL的计算机。 |
|||
实验内容 1. 安装MySQL软件环境。 2. 查阅文档,了解MySQL使用。 |
|||
实验方法与步骤:至少手写两个实验内容,每个内容需写完整步骤及关键代码,不够可贴页 具体内容请参照本表格后的实验指导 |
|||
实验结果与分析 不能写与预期一致,每个实验内容应该有输入,对应的输出或展示效果 |
|||
实验体会 写真实体会 |
实验(训)项目七 数据库原理及应用操作
任务一 熟悉MySQL的安装、使用环境及其基本工具的使用
一、实验目的
熟悉MySQL的安装和用法环境。掌握MySQL管理工具Navicat的使用。了解在Navicat中执行SQL语句的方法。了解数据库及数据库对象。熟悉服务器的管理与使用。
二、实验内容
序:MySQL安装说明
步骤:
①打开MySQL 5.5的安装包mysql-5.5.28-win32.msi—Next,在如图1所示的界面中选择Typical进行默认安装
图1
②安装完成之后,继续进入如图2所示的配置界面:
图2
③选择配置方式,“Detailed Configuration(手动精确配置)”、“Standard Configuration(标准配置)”,我们选择“Detailed Configuration”,方便熟悉配置过程。
图3
④选择服务器类型,“Developer Machine(开发测试类,mysql占用很少资源)”、“Server Machine(服务器类型,mysql占用较多资源)”、“Dedicated MySQL Server Machine(专门的数据库服务器,mysql占用所有可用资源)”,一般选“Server Machine”,不会太少,也不会占满,实验所用则选择Developer Machine即可
图4
⑤选择mysql数据库的大致用途,“Multifunctional Database(通用多功能型,好)”、“Transactional Database Only(服务器类型,专注于事务处理,一般)”、“Non-Transactional Database Only(非事务处理型,较简单,主要做一些监控、记数用,对MyISAM数据类型的支持仅限于non-transactional),我这里选择“Multifunctional Database”,按“Next”继续。
图5
⑥对InnoDB Tablespace进行配置,就是为InnoDB 数据库文件选择一个存储空间,如果修改了,要记住位置,重装的时候要选择一样的地方,否则可能会造成数据库损坏,当然,对数据库做个备份就没问题了,这里不详述。我这里没有修改,使用用默认位置,直接按“Next”继续。
图6
⑦选择一般mysql访问量,同时连接的数目,“Decision Support(DSS)/OLAP(20个左右)”、“Online Transaction Processing(OLTP)(500个左右)”、“Manual Setting(手动设置,自己输一个数)”,我这里选“Decision Support(DSS)/OLAP”,按“Next”继续。
图7
⑧选择是否启用TCP/IP连接,设定端口,如果不启用,就只能在自己的机器上访问mysql数据库了,我这里启用,把前面的勾打上,Port Number:3306,在这个页面上,我们还可以选择“启用标准模式”(Enable Strict Mode),这样MySQL就不会允许细小的语法错误。熟悉MySQL以后,尽量使用标准模式,因为它可以降低有害数据进入数据库的可能性。按“Next”继续。
图8
⑨选择编码。这里我们选择默认的西文编码“Latin1”。有需要可以选择第三项手动设置默认编码,如需要正常使用汉字则选择第三个,然后在Character Set那里选择或填入“gbk”,当然也可以用“gb2312”,区别就是gbk的字库容量大,包括了gb2312的所有汉字,并且加上了繁体字。使用mysql的时候,在执行数据操作命令之前运行一次“SET NAMES GBK;”(运行一次就行了,GBK可以替换为其它值,视这里的设置而定),就可以正常的使用汉字了。按“Next”继续。
图9
⑩选择是否将mysql安装为windows服务,还可以指定Service Name(服务标识名称),是否将mysql的bin目录加入到Windows PATH(加入后,就可以直接使用bin下的文件,而不用指出目录名,比如连接,“mysql.exe -uusername -ppassword;”就可以了,不用指出mysql.exe的完整地址,很方便),我们这里全部打上了勾,Service Name不变。按“Next”继续。
图10
⑪这一步询问是否要修改默认root用户(超级管理)的密码(默认为空),“New root password”如果要修改,就在此填入新密码(如果是重装,并且之前已经设置了密码,在这里更改密码可能会出错,请留空,并将“Modify Security Settings”前面的勾去掉,安装配置完成后另行修改密码),“Confirm(再输一遍)”内再填一次,防止输错。我们这里设置密码为“root”。“Enable root access from remote machines(是否允许root用户在其它的机器上登陆,如果要安全,就不要勾上,如果要方便,就勾上它)”。最后“Create An Anonymous Account(新建一个匿名用户,匿名用户可以连接数据库,不能操作数据,包括查询)”,一般就不用勾了,设置完毕,按“Next”继续。
图11
⑫确认设置无误,如果有误,按“Back”返回检查。按“Execute”使设置生效。
图12
⑬设置完毕,按“Finish”结束mysql的安装与配置——这里有一个比较常见的错误,就是不能“Start service”,一般出现在以前有安装mysql的服务器上,解决的办法,先保证以前安装的mysql服务器彻底卸载掉了;不行的话,检查是否按上面一步所说,之前的密码是否有修改,照上面的操作;如果依然不行,将mysql安装目录下的data文件夹备份,然后删除,在安装完成后,将安装生成的 data文件夹删除,备份的data文件夹移回来,再重启mysql服务就可以了,这种情况下,可能需要将数据库检查一下,然后修复一次,防止数据出错。
2:Navicat与MySQL配置
本次实验所使用的Navicat与MySQL为免安装版,解压即可使用。解压后打开PStart.exe即可。
1、打开MySQL服务。
打开打开PStart.exe后,点击“启动MySQL服务”。实验所用的MySQL已事先配置好,用户名为“root”,密码为空。
2、学习使用MySQL管理工具Navicat的基本操作,建立连接MySQL并在它左边的树型结构中查看数据库,观察该数据库中的所有数据库对象,如表、视图、存储过程、默认、规则等,学习查询的创建、连接的关闭和删除。
①新建连接MySQL。打开Navicat,进入主界面后点击“连接”,在弹出的对话框中输入连接名“MySQL”,用户名为“root”,密码为空。输入之后点击“确定”(可事先点击“连接测试”),如图2.1所示:
图2.1
②打开连接MySQL,查看默认生成的数据库、表。右键单击新建的连接MySQL,选择“打开连接”,可以看到默认生成的三个数据库,以数据库“mysql”为例,点击打开,如图2.2所示。以数据库“mysql”中的表“help_category”为例,点击打开,如图2.3所示.
图2.2
图2.3
③新建查询。打开数据库“mysql”,点击Navicat主界面上方的“查询”,选择“新建查询”,在弹出的查询编辑器中输入如下语句:
USE mysql;
SELECT * FROM help_category;
点击上方的“运行”操作及结果如图2.4所示:
图2.4
④关闭、删除连接。右键点击连接“MySQL”选择“关闭连接”。同样的操作选择“删除连接”,结果如图2.5所示:
图2.5
任务二 数据库的创建和管理
一、实验目的
熟练掌握使用Navicat和Transact-SQL语言两种方法创建、修改和删除数据库。学习在Navicat中进行数据库的转储和导入。掌握管理数据库的有关系统存储过程。
二、实验内容
1、利用Navicat创建满足以下要求的数据库:
1)数据库存在于连接MySQL中;
2)数据库名称为mydb;
3)字符集选择utf8 – UTF-8 Unicode;
4)排序规则选择utf8_general_ci
具体步骤如下:新建连接“MySQL”—单击选择并右键—“新建数据库”—输入数据库名“mydb”、字符集“utf8 – UTF-8 Unicode”、排序规则“utf8_general_ci”—“确定”。如图1.1所示:
右键—数据库属性,可以看到如图1.2所示结果:
图1.2
2、利用Transact-SQL语言创建满足以下要求的数据库:
1)数据库存在于连接MySQL中;
2)数据库名称为mydb;
3)字符集选择utf8 – UTF-8 Unicode;
4)排序规则选择utf8_general_ci;
具体步骤如下:
点击“工具命令行”菜单,输入以下代码后回车。完成后,左侧列表中选中连接“MySQL”,点击“刷新”按钮,列表即可见到“testdb”。如图2.1、2.2所示:
CREATE DATABASE testdb DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
图2.1
图2.2
3、利用Navicat删除数据库testdb。
直接右键点击testdb选择删除即可,注意要关闭当前的SQL语句编写界面。
4、利用Transact-SQL语言删除数据库testdb。
步骤:点击“新建查询”,输入DROP DATABASE testdb 后运行。
刷新连接“MySQL”,查看结果。
8、转储MySQL数据库。
步骤:打开连接“MySQL”—右键单击数据库“mysql”—选择“转储
SQL文件”—将文件名改为“sql.sql”后保存在桌面,如图9.1所示:
图9.1
成功后将出现如图9.2所示情况:
图9.2
9、导入MySQL数据库。
①在连接“MySQL”中新建数据库“sql”(字符集与排序方式尽量一致)。
②打开数据库“sql”—右键单击—运行SQL文件—选择桌面的“sql.sql”文件—点击“确定”。如图10.1所示:
图10.1
③执行结果如图10.2所示则表示成功。关闭数据库sql后重新打开,对比数据库“sql”与最初的数据库“mysql”,看是否完全相同。
图10.2
任务三 表的创建和管理
一、实验目的
熟练掌握使用Navicat和Transact-SQL语言两种方法创建、修改和删除表。掌握管理表的有关系统存储过程。
二、实验内容
1、利用Navicat创建满足以下要求的数据库:①数据库存在于连接MySQL中;②数据库名称为xsgl; ③字符集选择utf8 – UTF-8 Unicode;排序规则选择utf8_general_ci。
2、在数据库xsgl中,利用Navicat创建以下表格:
1)表格名为xs(学生基本情况表);
2)表格中各个属性的定义如下:
| 列名 | 含义 | 数据类型 | 长度 | 能否取空值 |备注|
| ———— | ———— | ———— | ———— | ———— | ———— |
| xh | 学号 | int | | no | 主码 |
| xm | 姓名 | char | 8 | yes | |
| xb | 性别 | char | 2 | yesyes | |
| nl | 年龄 | tinyint | | yes | |
| zy | 专业 | char | 16 | yes | |
| jtzz | 家庭住址 | char | 50 | yes | |
具体步骤如下:打开新建的数据库“xsgl”–右键点击“表”–“新建表”。按照上表内容输入个属性的定义,填写“列名”、“数据类型”,并取消或选择“允许NULL值”前的选项,并右键点击“xh”,选择将其设为主键,如图2.1所示:
图2.1
点击“保存”,输入表名:xs。结果如图2.2所示:
图2.2
3、按照以下步骤向表格xs中添加如下记录:
1)打开Navicat;
2)打开连接MySQL找到数据库xsgl中的表格xs;
3)在表格xs上右击鼠标,选择“打开表”;
4)在接着出现的记录录入界面上添加记录。(方向键下增加新纪录。也可以直接复制黏贴)
添加完后如图3.1所示:
4、向表xs中增加“入学时间”属性列,其列名为rxsj,数据类型为datetime型。
步骤:右键单击xs表—设计表—加入列rxsj,设置数据类型为datetime。如图4.1所示:
图4.1
5、将表xs中nl(年龄)列的数据类型改为int型。
步骤:与第4项类似
6、在数据库xsgl中,利用Transact-SQL语言创建以下表格:
1)表格名为kc(课程情况表);
2)表格中各个属性的定义如下:
步骤:点击“新建查询”,输入以下代码,点击运行
USE xsgl;
create table kc
(
kch char(4) not null,
kcm char(20) null,
xss int null,
xf int null,
primary key(kch)
)engine=innodb default charset=utf8 auto_increment=1;
命令成功完成后,在 “xggl”数据库中右键点击“表”,选择“刷新”,结果如图所示:
7、利用Transact-SQL语言修改kc表。
①增加“成绩”一列cj,int型,允许为空值,默认为0。
步骤:点击“新建查询”,输入以下代码,点击运行
ALTER TABLE kc ADD COLUMN cj INT DEFAULT 0;
②修改cj列的类型为char。
步骤:点击“新建查询”,输入以下代码,点击运行
ALTER TABLE kc CHANGE COLUMN cj cj CHAR(4);
③修改cj列的列名为mark。
步骤:点击“新建查询”,输入以下代码,点击运行
ALTER TABLE kc CHANGE cj mark CHAR(4) DEFAULT 0;
④删除mark列。
步骤:点击“新建查询”,输入以下代码,点击运行
ALTER TABLE kc DROP COLUMN mark;
7、利用Navicat和Transact-SQL语言两种方式删除表kc。
①步骤:右键点击表“kc”,选择删除。
②步骤:点击“新建查询”,输入以下代码,点击执行
DROP TABLE kc
8、利用Transact-SQL将表xs重命名为Students。
步骤:点击“新建查询”,输入以下代码,点击执行
RENAME TABLE xsgl.xs TO xsgl.Students;
实验四 表数据的简单查询
一、实验目的
掌握SELECT语句的基本用法。掌握计算列的用法。掌握WHERE子句中各类查询条件的写法。
二、实验内容
1、在连接“MySQL”中新建数据库“world”,并将数据库文件world.sql导入到该数据库之中
2、查询world数据库的country表中的国名(Name)、洲名(Continent)和地区(Region)。
步骤:点击“新建查询”,输入以下代码,点击执行
USE world;
SELECT NAME,Continent,Region FROM country;
运行结果如图2.1:
图2.1
3、从world数据库的city表中搜索返回前20条的数据。
步骤:点击“新建查询”,输入以下代码,点击执行
USE world;
SELECT * FROM city LIMIT 0,20;
其中,“LIMIT M,N”中的M表示从第M条(不包括M)开始。
结果如图3.1:
图3.1
4、使用WHERE 子句从world 数据库的country表中检索出所有领土面积超过一百万平方公里的国家名称(Name)、洲名(Continent)以及领土面积(SurfaceArea)。
步骤:点击“新建查询”,输入以下代码,点击执行
USE world;
SELECT NAME,Continent,SurfaceArea
FROM country
WHERE SurfaceArea > 1000000;
结果如图4.1:
图4.1
5、查询在world数据库的country表中Name以字母C开头的国家的洲名Continent,地区Region。
步骤:点击“新建查询”,输入以下代码,点击执行
USE world;
SELECT Name,Continent,Region
FROM country
WHERE NAME like 'C%';
运行结果如图5.1:
图5.1
6、查询world数据库Country表中所有国家的Name和Condinent,并按生日SurfaceArea从小到大进行排列。
步骤:点击“新建查询”,输入以下代码,点击执行
USE world;
SELECT Name,Continent,SurfaceArea
FROM country
ORDER BY SurfaceArea;
运行结果如图6.1:
图6.1
练习巩固
7、查询country表中政体(GovernmentForm)属于共和国(Republic)的国家的Name和Population、GovernmentForm。
USE world;
SELECT NAME,Population,GovernmentForm
FROM country
WHERE GovernmentForm = 'Republic';
8、country表中查询前20个非洲国家的名称。
USE world;
SELECT NAME
FROM country
WHERE Continent= 'Africa'
LIMIT 0,20;
9、city表中查询阿富汗(Countrycode为AFG)的所有城市的名称和人口,并要求对查询结果按人口的降序排列。
USE world;
SELECT NAME,Population
FROM city
WHERE CountryCode= 'AFG'
ORDER BY Population DESC;
10、Country表中查询领土面积介于一百万和五百万平方公里之间的国家的名称和领土面积(领土面积以除以一万的结果显示)。
USE world;
SELECT NAME,SurfaceArea/10000
FROM country
WHERE Continent = 'Africa'
AND SurfaceArea BETWEEN 1000000 AND 5000000;
11、查询名称以“C”开头的亚洲国家或非洲国家的名称和洲名
USE world;
SELECT Name,Continent
FROM country
WHERE (Continent = 'Asia' OR Continent = 'Africa')
AND Name LIKE 'C%';
12、country表中查询独立年份为空的国家的名称、国家年份。
USE world;
SELECT NAME,IndepYear
FROM country
WHERE IndepYear is null;
三、课后练习题
以下题目在数据库world中完成。
1、查询country表中所有亚洲国家的名称、地区,要求查询结果按人口的升序排列。
2、查询city表中智利(CHL)或保加利亚(BGR)的城市名称。
3、查询country表中Region字段包含“Europe”的国家的全部信息。
4、查询所有君主立宪制(Constitutional Monarchy)国家的名称和人口,按人口降序排列。
实验五 表数据的维护
实验学时:1学时
实验类型:验证
实验要求:必做
一、实验目的
熟练掌握使用Transact-SQL语言和通过Navicat输入表数据、修改表数据和删除表数据的操作。
二、实验内容
1、在数据库world中建立一个名为newlanguage的表,其结构与表countrylanguage完全一样(注意各字段的默认值、字符集、排序方式等),如图1.1:
图1.1
2、在表newlanguage中插入中国的客家话,其名称为CountryCode为CHN,language为Kejia,isOfficial为F,percentage为0.3。
USE world;
INSERT INTO newlanguage
VALUES ('CHN','Kejia','F',0.3);
4、试将表countrylanguage中的所有记录插入到表newlanguage中去,其SQL命令为:
USE world;
INSERT INTO newlanguage
SELECT *
FROM countrylanguage;
5、将表newlanguage中Language为“Kejia”的语言的Percentage改为0.4
USE world;
UPDATE newlanguage
SET Percentage = 0.4
WHERE Language = 'Kejia';
6、将表newlanguage中语言的Percentage均减去0.1。
USE world;
UPDATE newlanguage
SET Percentage = Percentage - 0.1;
7、删除表newlanguage中澳大利亚(CountrCode为“AUS”)的英语记录。
USE world;
DELETE FROM newlanguage
WHERE CountryCode='AUS'
AND Language='English';
8、清空表newlanguage中的所有数据。
USE world;
TRUNCATE TABLE newlanguage;
三、课后练习题
以下题目在数据库world中完成。
1、通过Navicat,在country、countrylanguage、和city三个表中各输入10条记录。
2、将一条新的城市记录(Name:Beijing,Country:AFG,District:Beijing,Population:21148000)插入表city中。
3、插入一条语言记录(“CHN”,“Minnan”,“F”,0.5)到表countrylanguage。
4、删除CountryCode为“ABW”的语言记录。