Chapter 3 Tutorial (入门)
Table of Contents [+/-]
3.1 Connecting to and Disconnecting from the Server
3.2 Entering Queries
3.3 Creating and Using a Database [+/-]
3.4 Getting Information About Databases and Tables
3.5 Using mysql in Batch Mode
3.6 Examples of Common Queries [+/-]
3.7 Using MySQL with Apache
这个章节提供了一个入门教程展示了如何使用mysql 客户端来创建 使用一个简单的数据库。
mysql 是一个交互式的程序,让你连接到MySQL server,执行查询,显示结果。
mysql也可以用于batch模式: 你可以预先把查询放到文件里.
查看mysql提供的选项,调用它的–help选项
shell> mysql –help
本章假设MySQL安装在你的机器上,MySQL服务器可用,你可以连接。如果这些没有,联系你的MySQL administrator
本章介绍了建立和使用数据库的整个过程。如果你只对访问某个现有的数据库有兴趣,你可能想跳过描述如何创建数据库和它包含的表的部分。
3.1 Connecting to and Disconnecting from the Server (连接和断开服务器)
连接到 server,你通常会需要提供MySQL 用户密码 ,当你调用mysql和一个密码。如果服务器不同于你登陆的机器上运行,你还需要制定一个主机名。
shell> mysql -h host -u user -p
Enter password: **
host 和user 代表主机名在你的MySQL 服务器上运行,你的username 。为你设置替换合适的值,**代表您的密码,输入时显示输入的密码:
如果成功,你会看到一些入口信息,其次是MySQL >提示:
The mysql> prompts 告诉你mysql是准备让你输入命令了:
如果你登陆机的机器是MySQL运行的机器, 你可以省略主机,并简单地使用以下:
shell> mysql -u user -p
如果,你尝试登陆,你得到一个报错 比如ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2),
它的意思说 MySQL server daemon(Unix) 或者service(Windows) 没有运行
3.2 Entering Queries
确保 你已经连接到 server,如前一节所讨论的, 不选择任何数据库,但这是好的。在这一点上, 更重要的是找出一点关于如何执行查询 相比创建表,
加载数据,并从他们来检查数据。
这里有一个简单的命令 告诉服务器来告诉你 它的版本号和当前日期
mysql> SELECT VERSION(), CURRENT_DATE;
+————+————–+
| VERSION() | CURRENT_DATE |
+————+————–+
| 5.6.22-log | 2015-07-08 |
+————+————–+
1 row in set (0.03 sec)
这说明了MySQL查询的几件事:
- 命令通常由一个SQL语句以分号结尾(也有一些例外,分号可以省略。退出,前面提到,是其中之一。我们以后会去给别人)
2.当你执行一个命令,mysql 发送到server 来执行和显示结果, 然后打印另一个mysql>prompt 来表明它已经准备你其他的命令。
3.mysql 显示查询输出表格形式(行和列),第一行包含了列的标签。接下来的行是查询结果,通常,列标签是从数据库表中获取列的名称。
如果你检索表达式的值,而不是一个表的列(在这个例子中显示),mysql 标签列使用正则表达式
- mysql 显示多少行被返回和查询执行多久了,它给你一个粗略的服务器性能。 这些值是不准确的,因为它们代表墙上时钟(not CPU or machine time)
因为它们受很多因素影响,比如服务器负载和网络延迟。
关键词可以进入任何lettercase。下列查询是等价的:
mysql> SELECT VERSION(), CURRENT_DATE;
mysql> select version(), current_date;
mysql> SeLeCt vErSiOn(), current_DATE;
这里是另一个查询。这表明,你可以使用MySQL作为一个简单的计算器:
mysql> SELECT SIN(PI()/4), (4+1)*5;
+——————+———+
| SIN(PI()/4) | (4+1)*5 |
+——————+———+
| 0.70710678118655 | 25 |
+——————+———+
1 row in set (0.02 sec)
迄今为止所有的查询都是比较短的,单行语句,你甚至可以输入多条语句在一行里:
mysql> SELECT VERSION(); SELECT NOW();
+————–+
| VERSION() |
+————–+
| 5.6.1-m4-log |
+————–+
1 row in set (0.00 sec)
+———————+
| NOW() |
+———————+
| 2010-08-06 12:17:13 |
+———————+
1 row in set (0.00 sec)
一个命令不需要全部在一个单一行上,所以需要几行的命令就不是问题。MySQL 通过你的结束符号确定
mysql> SELECT
-> USER()
-> ,
-> CURRENT_DATE;
+—————+————–+
| USER() | CURRENT_DATE |
+—————+————–+
| jon@localhost | 2010-08-06 |
+—————+————–+
3.3 Creating and Using a Database 创建和使用数据库
一旦你知道进入数据库,你准备访问数据库
假设在你家有几只动物,你需要跟踪他们获得各种不同类型的信息,你可以通过创建表来获得数据和加载获得的描述信息
然后你可以通过检索数据来回答不同种类的问题,本节将向您展示如何执行以下操作:
Create a database –创建数据库
Create a table —创建表
Load data into the table —加载数据到表
Retrieve data from the table in various ways —从各方面获取表中的数据
Use multiple tables –使用多个表
动物园数据是简单的(故意的),但不难想到现实世界的情况下,类似类型的数据库可能会被使用。比如,
这样的数据库可以被一个农民用于追踪牲畜,或者有兽医来记录病情。
Use the SHOW statement to find out what databases currently exist on the server:
mysql> SHOW DATABASES;
+———-+
| Database |
+———-+
| mysql |
| test |
| tmp |
+———-+
你可以使用test 数据库(如果你已经可以访问它) 比如下面的例子,但是你再数据库里创建的任何东西,可以被删除被任何人有访问权限的。
由于这个原因, 你需要告诉你的MySQL 管理员使用数据库的权限,假设你需要call你的menagerie,管理员需要执行下面的命令:
mysql> GRANT ALL ON menagerie.* TO ‘your_mysql_name’@’your_client_host’;
your_mysql_name 是MySQL 用户名字 your_client_host 你连接的客户机
3.4 Getting Information About Databases and Tables 得到数据库和表的信息
当你忘记了数据库或者表的名字, 或者表的结构是怎么样的(比如,列的名字) MySQL解决这个问题通过几个语句提供的信息
你之前已经从SHOW DATABASES 看到了, 列出了服务器的所有的数据库, 找出哪些数据库是当前选择的,使用DATABASE() 函数
mysql> SELECT DATABASE(); —显示当前使用的数据库
+————+
| DATABASE() |
+————+
| menagerie |
+————+
如果你当前没有使用任何的数据库,结果是NULL
找出默认数据库包含的表(比如,你不确定表的名字)
mysql> SHOW TABLES;
+———————+
| Tables_in_menagerie |
+———————+
| event |
| pet |
+———————+
3.5 Using mysql in Batch Mode 使用mysql 的Batch 模式
在先前的章节, 你使用mysql的交互式方式查询和查看结果,你可以使用bacth模式来运行,要做到这点,把你想运行的命令放到一个文件里,
然后告诉MySQL读取输入文件:
shell> mysql < batch-file
3.6 Examples of Common Queries 一些通用的查询例子:
这里有一些例子 如何使用MySQL 来解决常见的问题:
一些例子使用tabel shop 来为每个物品(项目编号) 为某个贸易商(经销商).
如果每个交易品都有一个固定的价格,那么(文章,经销商)是记录的主要关键。
shell> mysql your-database-name
( 在很多数数据库安装中,你可以使用数据库名字test)
您可以创建和填充这些语句的示例表
CREATE TABLE shop (
article INT(4) UNSIGNED ZEROFILL DEFAULT ‘0000’ NOT NULL,
dealer CHAR(20) DEFAULT ” NOT NULL,
price DOUBLE(16,2) DEFAULT ‘0.00’ NOT NULL,
PRIMARY KEY(article, dealer));
INSERT INTO shop VALUES
(1,’A’,3.45),(1,’B’,3.99),(2,’A’,10.99),(3,’B’,1.45),
(3,’C’,1.69),(3,’D’,1.25),(4,’D’,19.95);
After issuing the statements, the table should have the following contents:
SELECT * FROM shop;
+———+——–+——-+
| article | dealer | price |
+———+——–+——-+
| 0001 | A | 3.45 |
| 0001 | B | 3.99 |
| 0002 | A | 10.99 |
| 0003 | B | 1.45 |
| 0003 | C | 1.69 |
| 0003 | D | 1.25 |
| 0004 | D | 19.95 |
+———+——–+——-+