数据库:在这里一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));