第二阶段、数据库的使用

数据库:在这里一mysql为例

首先使用数据库就必须安装

请添加图片描述

安装数据库(mysql)

数据库的安装和下载

数据库的使用和命令

连接和断开服务器

启动mysql服务:

sudo service mysql start

停止mysql服务:

sudo service mysql stop

要连接到服务器,我们通常需要提供MySQL的用户名来触发mysql,很可能,还需要密码。如果你的服 务器运行在一个其他的机器上,你还需要指定主机名。联系管理员来找到连接参数(例如主机名,用户 名和密码),当你知道了正确的参数后,你可以像下面那样连接:

shell> mysql -h host -u user -p
Enter password: ********

host和user表示你的MySQL服务器所运行的主机名和你的mysql用户名。在使用时,请替换成你自己 设置的相关值。__** 表示你输完上面命令后回车后,需要继续输入密码。 如果工作正常,你应该可以看到mysql提示符的一些介绍信息:


 shell> mysql -h host -u user -p
 Enter password: ********
 Welcome to the MySQL monitor. Commands end with ; or \g.
 Your MySQL connection id is 25338 to server version: 5.7.15-standard
 Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
 

 mysql>

mysql> 提示符告诉我们,mysql已经准备好了,等待我们输入SQL语句。 如果你正在登录MySQL运行的机器上,你可以忽略host,可以向以下这么简单地来使用:

shell> mysql -u user -p

当你在尝试登录的时候,你可能会出现错误信息,例如2002(HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2),这意味着你的MySQL服务 进程没有运行。咨询管理员或查看章节2,给你的操作系统安装和更新MySQL是比较合适的。 For help with other problems often encountered when trying to log in, see Section B.5.2, “Common Errors When Using MySQL Programs”. 有一些MySQL安装允许用来以匿名用户的方式连接到正在本地运行的MySQL服务。如果你是这种情况, 你在连接到服务器的时候,不加任何参数。如下。

shell> mysql

在你连接成功之后,你可以在mysql>命令提示符下输入QUIT(或\q)来断开连接。如下所示。

mysql> QUIT
Bye

查询

像前面章节讨论一样,请确保你已经连接到了服务器。連好之后,不要在里面查询任何数据庫,当然, 你也可以查。在这个时候,相比直接跳到创建表,加载数据到表,然后从中检索数据,在先对查询有一 定的了解,这是非常重要的,这部分描述了查询的基本原理,使用一些查询,你可以试着了解mysql是 如何工作的。 这里有一个简单的查询例子,查询的是版本号和当前日期。在mysql命令提示符中像如下一样输入:


1. mysql> SELECT VERSION(), CURRENT_DATE; 
2. +--------------+--------------+ 
3. | VERSION() | CURRENT_DATE | 
4. +--------------+--------------+ 
5. | 5.7.1-m4-log | 2012-12-25 | 
6. +--------------+--------------+ 
7. 1 row in set (0.01 sec) 8. mysql>
8. mysql>

这个查询描述了mysql的一些事情: 一个查询正常情况下包含一个SQL语句,然后跟上一个分号(;)(当然也有不输入分号的例外,如 QUIT,还有其他的,随后会了解到),。 当你执行一个查询,mysql会把它发送到服务器执行并显示结果,然后打印另一个mysql>命令提示 符,来为你的下一个查询作好准备。 mysql以表格(行和列)的方式显示查询结果。第一行包含列标签。接下来的行是查询结果。列标签是 你从数据庫表中提取的列的名字。如果你正在检索的不是一个表的列,而是一个表达式的值,mysql会 用表达式本身来标记列。 mysql会显示返回结果的行数和执行查询所消耗的时间,这可以给你一个服务性能的粗略显示。这些时 间值不是非常准确的,因为他们表示的是时钟时间(不是CPU或机器时间),因为他们会受到诸如加载 和网络延迟的因子影响。(简单起见,在接下来的例子中,“rows in set"有时没有显示) 关键詞不区别大小写,以下查询是等价的:

1. mysql> SELECT VERSION(), CURRENT_DATE; 
2. mysql> select version(), current_date; 
3. mysql> SeLeCt vErSiOn(), current_DATE;

以下是另一个查询,你可以使用mysql做一个简单的计算:

1. mysql> SELECT SIN(PI()/4), (4+1)*5; 
2. +------------------+---------+ 
3. | SIN(PI()/4) | (4+1)*5 | 
4. +------------------+---------+ 
5. | 0.70710678118655 | 25 | 
6. +------------------+---------+ 
7. 1 row in set (0.02 sec)

这些查询相对来说,比较短,也是单行语句。你可以在一行输入多条语句,仅仅需要在每一个语句后加 上一个分号:


1. mysql> SELECT VERSION(); SELECT NOW(); 
2. +------------------+ 
3. | VERSION() | 
4. +------------------+ 
5. | 5.7.10-ndb-7.5.1 | 
6. +------------------+ 
7. 1 row in set (0.00 sec) 
8. +---------------------+ 
9. | NOW() | 
10. 
11. 11. +---------------------+ 12. | 2016-01-29 18:02:55 | 13. +---------------------+ 14. 1 row in set (0.00 sec)


一个查询不需要把所有的都放一行,如此长的查询,需要放在多行不是问题,mysql决定你的语句是否 结束是查找分号,而不是查找输入行的结尾。(换言之,mysql接受自行格式输入:它可以一直接受输 入,直到看到分号) 以下是一个简单的多行语句:


1. mysql> SELECT 
2. -> USER() 
3. -> , 
4. -> CURRENT_DATE; 
5. +---------------+--------------+ 
6. | USER() | CURRENT_DATE | 
7. +---------------+--------------+
8. | jon@localhost | 2010-08-06 | 
9. +---------------+--------------+

在这个例子中,注意到在你输入多行的第一行然后回车后,提示符是如何从mysql> 改变成->的,这告 诉你,mysql还没有看到一个完整的语句,正在等待剩下的。提示符是你的朋友,因为他提供了有价值 的反馈。如果你使用这个反馈,你可以一直感知到mysql正在等待。 如果你打算取消正在输入的查询,你可以输入\c,像下面一样:

1. mysql> SELECT 
2. -> USER() 
3. -> \c 
4. mysql>

在这,可以注意到,在你输入\c之后,提示符切换回了mysql> 。以此提供了一个反馈,暗示已经为新 的查询做好了准备。 以下表格显示了每一个提示符所表示的含义:

提示符 含义
mysql> 已为新的查询作好准备
-> 正在等待多行的下一行
'> 正在等待以单引号开头的字符串的下一行
"> 正在等待以双引号开头的字符串的下一行
`> 正在等待以(`)号开头的字符串的下一行
/*> 正在等待以注释符(/*)开头的字符串的下一行

1. mysql> select user()` 
2. `> ` 
3. -> /* 
4. /*> */ 
5. -> ' 
6. '> ' 
7. -> " 
8. "> " 
9. -> \c

创建和使用数据库


1、 Creating and Selecting a Database 
2 、Creating a Table 
3、 Loading Data into a Table 
4、 Retrieving Information from a Table 

一旦你知道如何输入SQL语句的时候,你就可以准备访问一个数据庫。 假设,在你家(你的menagerie)有一些宠物,并且你想对他们的信息保持一个跟踪。这时候,你可以 创建表来存储和加载你渴望的信息。然后你就可以通过检索数据庫里的表来回答各种各样的问题,这部 分展示如何执行以下操作

1、创建数据库
2、创建表
3、加载数据到表
4、以不同的方式从表中检索数据
5、使用多个表
menagerie数据库是简单的,但不难想像到,在真实世界中,这样相似的数据库会被使用。例 如,像这样的数据库可以被农夫用于跟踪牲畜的信息,兽医跟踪病号记录。 使用SHOW语句来找到服务器上当前存在数据库:


1. mysql> SHOW DATABASES; 
2. +----------+ 
3. | Database | 
4. +----------+ 
5. | mysql | 
6. | test | 
7. | tmp | 
8. +----------+

mysql数据库描述的是用户权限。test数据库通常是用于用户作为测试使用。
在你的机器上面,通过这条语句显示出的数据库列表可能是不同的,SHOW DATABASES只会显示当前用 户具有权限的数据库,不会显示你没有权限的数据库。

如果test数据庫存在,尝试访问它:

1. mysql> USE test 
2. Database changed

USE,就像QUIT一样,不需要加分号(如果你喜欢,你可以加上分号)。USE语句还有另外一个特殊的 地方:它必须出现在单行。 对于接下来的例子,你可以使用test数据庫(如果你能访问它),但是你创建的任何东西都可以被 能访问它的用户删除。对于这个原因,你可能应该找你的MySQL管理员要属于你的数据庫。假如你想使 用menagerie,管理员应该执行像下面这个一样的语句:

 mysql> GRANT ALL ON menagerie.* TO 'your_mysql_name'@'your_client_host';

your_mysql_name是MySQL分配给你的用户名,your_client_host是你连接到的服务器的主机 名。

创建和选择数据库

创建menagerie数据库:

 mysql> CREATE DATABASE menagerie;

如果想在创建数据库时,指定数据库的字符编码(这里使用GBK),可以使用以下方式:

 mysql> create database menagerie DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;

或者使用utf8编码:

mysql> CREATE DATABASE menagerie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

或者直接修改配置文件

hadoop@node1:~/mysql_shell$ sudo vi /etc/mysql/my.cnf

然后在文件底部加入以下内容:

1. [mysqld] 2.3. character-set-server=utf8 4. collation-server=utf8_general_ci

接着重启MySQL服务:

1. hadoop@node1:~/mysql_shell$ sudo service mysql stop 
2. hadoop@node1:~/mysql_shell$ sudo service mysql start

通过 status 命令可以查看状态信息:

mysql> status

mysql Ver 14.14 Distrib 5.7.13, for Linux (x86_64) using EditLine wrapper

Connection id: 3 Current database: eduCloud Current user: root@localhost SSL: Not in use Current pager: stdout Using outfile: '' Using delimiter: ; Server version: 5.7.13-0ubuntu0.16.04.2 (Ubuntu) Protocol version: 10 Connection: Localhost via UNIX socket Server characterset: utf8 Db characterset: utf8 Client characterset: utf8 Conn. characterset: utf8 UNIX socket: /var/run/mysqld/mysqld.sock Uptime: 9 min 25 sec

Threads: 1 Questions: 62 Slow queries: 0 Opens: 128 Flush tables: 1 Open tables: 47 Queries per second avg: 0.109

使用(选择)menagerie数据库:

 1. mysql> USE menagerie 
 2. Database changed

还可以在连接到数据庫服务器的时候,指定要使用的数据庫menagerie:

1. shell> mysql -h host -u user -p menagerie 
2. Enter password: ********

默认情况下,登录mysql是无密码登录,可以通过以下方式修改密码:MySQL 5.7.6及之后的版本, 使用以下命令:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

MySQL 5.7.5及以前的版本,使用以下命令:

1. SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');

其中,MyNewPass是我们将要设置的新密码。

创建表

创建pet表(宠物表),包含列:宠物名字,拥有者,物种,性别,出生日期,死亡日期:

1. mysql> CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20), 
2.     -> species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);

一旦你创建了表,你可以查看刚刚创建的表是否是想创建的表:

1. mysql> SHOW TABLES; 
2. +---------------------+ 
3. | Tables in menagerie | 
4. +---------------------+ 
5. | pet | 
6. +---------------------+
7. mysql> DESCRIBE pet; 
8. +---------+-------------+------+-----+---------+-------+ 
9. | Field | Type | Null | Key | Default | Extra | 
10. +---------+-------------+------+-----+---------+-------+  
11. | name | varchar(20) | YES | | NULL | | 
12. | owner | varchar(20) | YES | | NULL | | 
13. | species | varchar(20) | YES | | NULL | | 
14. | sex | char(1) | YES | | NULL | | 
15. | birth | date | YES | | NULL | | 
10.| death | date | YES | | NULL | | 
16. +---------+-------------+------+-----+---------+-------+

可以看到表pet的字段,类型,等数据。
我们也可以通过脚本的方式进行创建表,在一个文件中写创建表的脚本,然后在mysql>中使用source 命令或.运行,如下:

 1. mysql> source ./testCreateTable.txt; 
 2. Database changed 
 3. Query OK, 0 rows affected, 1 warning (0.00 sec) 
 4. Query OK, 0 rows affected (0.24 sec)
1. mysql> \. ./studentScore.txt 
2. Database changed 
3. Query OK, 0 rows affected (0.14 sec) 
4.
5. Query OK, 0 rows affected (0.24 sec)

其中,testCreateTable.txt是脚本文件,内容如下:

1. use test 
2. drop table if exists testTable; 
3. create table testTable(name varchar(50), 
4. address varchar(50), 
5. timestamp timestamp, 
6. primary key(name));

猜你喜欢

转载自blog.csdn.net/weixin_58276266/article/details/131508836
今日推荐