# 2021秋数据库实验 **Repository Path**: kylin8575543/db2021fall ## Basic Information - **Project Name**: 2021秋数据库实验 - **Description**: 2021秋数据库试验数据集 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-11-19 - **Last Updated**: 2022-02-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 2021秋数据库实验 #### 介绍 2021秋数据库试验数据集. 本数据集就是2021秋数据库系统原理实验课实训评测所用的数据集。如果你在实训平台上写的代码,不能通过评测,又找到出错的原因, 可以在此数据集上进行SQL语句练习,测试SQL语句的正确性。在确认正确后,再将语句复制粘贴到代码文件,然后提交评测。 如果你对SQL很熟悉,在评测环境下闯关很顺利,你根本不需要这个数据集。下面的教程你也可以直接跳过,这些过程不是评测所必须的,只是为你提供一个调试语句的环境。 #### 使用教程 1. 打开linux命令行窗口。 2. 连接到数据库,进入数据库的命令窗口。 3. 用先前实验中写的建库建表语句,创建与实训环境完全相同的数据库与表。 4. 退出数据库命令行,返回到linux命令行,导入数据集。 5. 现在练习环境下的数据库和数据集与实训环境完全相同,你可以重新连接到数据库,进行SQL语句的练习。 6. SQL语句调试运行正确后,可以直接COPY到代码文件,提交代码,开始评测。 #### 详细说明 1. 打开linux命令行窗口。 在实训环境的右上部,找到“命令行”入口,点击,即可进入linux命令行(shell). ![图1-实训环境的命令行入口](https://images.gitee.com/uploads/images/2021/1119/201948_9dfa7aa1_5580693.png "图1-命令行.png") 出现命令行窗口: ``` 版本库代码路径:/data/workspace/myshixun/ root@webssh-5258237:~# ``` 2. 连接到数据库,进入数据库的命令窗口。 在linux命令行,输入以下命令,即可连接到MySQL数据库。 `mysql -h127.0.0.1 -uroot -p123123` 命令行中的参数説明: -h:指定host的ip地址; -u:数据库用户名 -p:用户登录到本服务器的密码 注意各参数后没有空格!!!特别是-p之后的任何文字都会理解成密码的一部分。 屏幕显示如下内容: ``` mysql: [Warning] Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 12 Server version: 8.0.22 MySQL Community Server - GPL Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> ``` 你在上述提示中会看到警告信息,提示你不应该在命令行输入密码,这样做不安全,因为很容易被别人看到。 在通常环境下,你确实不该这样作,不过这只是一个实验,而且所有学生的MySQL实例赋予了相同的密码,没有什么好保密的。 当然,你也可以在命令行参数-p后不给出密码,直接回车,MySQL将提示你输入密码: `Enter password: ` 输入密码时,光标不会移动,也不会显示任何字符(不是你期待的*号!!!),正确输入123123并回车即可。 这样就不会有警告了, 你在平时工作时,就应该这么做! 在上述提示信息中你还会看到其它信息,比如MySQL的版本号8.0.22等等。 最后出现的是MySQL命令行的提示符: `mysql>` 你可以像在你本机一样进行MySQL的操作:建库,建表,增、删、改、查询等。 关于MySQL的相关操作命令,请参考[MySQL 8.0 Reference Manual](https://dev.mysql.com/doc/refman/8.0/en/)。 这里仅列出最常用的命令: - show databases; --列出服务器上所有的数据库,包括(4个)系统数据库。你创建数据库,都会出现在这个列表中。 - use 数据库名; --指定某个数据库为当前工作数据库,在后面的实验中,你第一件要作的事,就是把实验数据库设置为当前数据库; - show tables; --列出当前数据库中所有的表。 - create table ...; --建表。 - insert,delete,update,select等命令。 - quit -- 退出mysql命令行环境() 注意,MySQL所有的语句都以分号结束,语句可以分多行书写, MySQL会一直等到分号才开始执行你的命令(use、quit语句是例外,可以省略分号)! 3. 建库建表 请复制你在前一实验中建库建表的语句,创建数据库和表。直接粘贴在mysql命令行提示符之后,并回车即可。你可能需要分几步来完成,比如,先建数据库,切换到当前数据库, 然后,再粘贴建表命令块。 `mysql>` 建库建表完成后,在MySQL命令行键入quit,退出MySQL命令行,回到linux命令行。 4. 在linux命令行,克隆data_inport.sql文件(它在db2021fall开源项目中): 仅下载data_inport.sql(下载到当前文件夹): `wget https://gitee.com/kylin8575543/db2021fall/raw/master/data_inport.sql` 克隆整个db2021fall项目(包含本README文件): `git clone https://gitee.com/kylin8575543/db2021fall.git` 如果下载整个git项目,你会发现,虚拟服务器上多了一个项目文件夹:db2021fall. 该文件夹下的data_import.sql就是导入数据的脚本。 5. 导入数据集。 在linux命令行,输入以下命令: ``` mysql -h127.0.0.1 -uroot -p123123 < data_inport.sql 2>/dev/null 或者(取决于你下载了单个文件,还是下载了整个文件夹): mysql -h127.0.0.1 -uroot -p123123 < db2021fall/data_inport.sql 2>/dev/null ``` 如果你想看到导入的过程,可以去掉上述命令行尾部的输出重定向部分。 6.重新进入MySQL命令行管理窗口。 ``` mysql -h127.0.0.1 -uroot p123123 ... mysql> ``` 开始练习SQL语句吧! #### SQL Server与MySQL的区别 SQL Server的命令行管理工具是sqlcmd.其用户名与密码与MySQL不同,另外其数据导入命令也稍有不同。 在linux命令行启动SQL Server命令行管理工具: `sqlcmd -S 127.0.0.1 -U sa -P '<123123Aa!@>' ` 上述命令中,参数 -S指定server的IP地址, -U指定用户名, -P指定该用户登录到服务器的密码。 下面是一段操作示例,这个示例创建了数据库mydb,并指定其为当前工作数据库,在当前数据库中建表t,往表t里插入了3行数据,接下来作了一次查询,最后键入exit退出了SQL Server的命令行工具: ``` root@evassh-5204970:~# sqlcmd -S 127.0.0.1 -U sa -P '<123123Aa!@>' 1> create database mydb; 2> go 1> use mydb; 2> go Changed database context to 'mydb'. 1> create table t(c int primary key); 2> go 1> insert into t values(1),(2),(3); 2> go (3 rows affected) 1> select * from t; 2> go c ----------- 1 2 3 (3 rows affected) 1> exit root@evassh-5204970:~# ``` 注意,SQL Server需要发出go命令,执行你输入的语句。 在linux命令行向SQL Server导入数据,可用以下命令(注意脚本文件data_inport.sql的路径,如有必要需补充完整): `sqlcmd -S 127.0.0.1 -U sa -P '<123123Aa!@>' -i 'data_inport.sql'` 脚本文件的下载,与你使用SQL Server还是MySQL无关,下载过程如前所述。 #### 特技 1. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 2. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 3. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 4. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 5. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)