【翻译】MySQL-Tutorial ( 2 )

学好MySQL要有好的教程,这里翻译了几篇官方的MySQL教程(MySQL-Tutorial)和大家分享下。
MySQL Tutorial.pdf–链接里有这几篇Tutorial的英文原版pdf,可供英文较好的朋友们学习。

安装MySQL 5.7 Windows,Mac OS,CentOS,Ubuntu 使用SQL编程

【翻译】MySQL-Tutorial ( 1 )

3.3 第四步:开启客户端

回想一下,MySQL是一个客户机-服务器系统。一旦服务器启动,一个或多个客户端就可以连接到数据库服务器上。客户端可以在本地机器(本地客户端)上运行,也可以通过网络上的另一台机器(远程客户端)运行。要登录到MySQL服务器,您需要提供用户名和密码。在安装过程中,MySQL创建一个超级用户称为“root”,并给root赋予了一个临时密码。我希望你已经记录下这个密码!(否则,重新安装!)MySQL安装提供了一个命令行客户端程序称为“mysql”。(记得,服务器程序被称为“mysqld”后缀“d”;客户端程序没有后缀“d”)。让我们以超级用户root的身份开始一个命令行客户端。首先,确保服务器正在运行。如果服务器已关机,请查看上一步重新启动服务器。

对于 Windows:
启动另一个新的CMD程序来运行客户端:

// 改变当前目录至 < mysql _ home >\bin
// 假设MySQL安装在d:\myProject\mysql中
d:
cd \myProject\mysql\bin

// 以超级用户的身份开启客户端
mysql -u root -p
Enter password:
// 输入在安装时生成的超级用户临时密码
// 为了安全并不会显示你输入的任何字符
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.1.39-community MySQL Community Server (GPL)
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

mysql>
// 客户端启动。现在输入提示会更改为“MySQL >”。
// 现在可以发出SQL命令

对于 Mac OS :
打开一个新终端,以超级用户的身份发出这些命令来启动MySQL客户端:

// 改变当前目录至 < mysql _ home >\bin
cd /usr/local/mysql/bin

// 以超级用户的身份开启客户端
./mysql -u root -p
Enter password:
// 输入在安装时生成的超级用户临时密码
// 为了安全并不会显示你输入的任何字符
Welcome to the MySQL monitor. Commands end with ; or \g.
……
mysql>
// 客户端启动。现在输入提示会更改为“MySQL >”。
// 现在可以发出SQL命令

3.4 第五步:更改超级用户密码

如前面提到的,MySQL安装创建的超级用户会随机生成一个临时密码。超级用户root是一个可以做任何事情的特权用户,包括删除所有数据库。所以我们登录后必须立即更改根密码。

更改超级用户root的密码
让我们从开启客户端之后继续进行操作。
// 改变 ‘root’@’localhost’用户的密码。用您选择的密码替换XXXX
// 注意字符串将由一对单引号括起来
mysql> alter user ‘root’@’localhost’ identified by ‘xxxx’;
Query OK, 0 rows affected (0.00 sec)

// 注销和终止客户端程序
mysql> quit
Bye

重启客户端root密码已被更新
我们已经改变了根密码,退出客户端并重启客户端。再次登录root,提示时输入新密码。
对于 Windows :
// 改变当前目录至 < mysql _ home >\bin
mysql -u root -p
Enter password: //输入你的密码并回车,为了安全并不会显示你输入的任何字符
Welcome to the MySQL monitor.
……
mysql>
// 客户端启动,准备发出SQL命令

对于 Mac OS X :
// 改变当前目录至 < mysql _ home >\bin
cd /usr/local/mysql/bin
./mysql -u root -p
Enter password: //输入你的密码并回车,为了安全并不会显示你输入的任何字符
Welcome to the MySQL monitor.
……
mysql>
// 客户端启动,准备发出SQL命令

3.5 第六步:创建一个新用户

超级用户代表着他拥有特权。我们将创建一个新用户”myuser”——它有较小的权限。为了创建一个新用户,首先我们需要用超级用户root来启动客户端:
// 启动客户端
mysql -u root -p // Windows
./mysql -u root -p // Mac OS X
// 创建一个可以从本地登录,拥有密码xxxx的新用户:”myuser”
mysql> create user ‘myuser’@’localhost’ identified by ‘xxxx’;
Query OK (0.01 sec)
// 为myuser授予权限
mysql> grant all on . to ‘myuser’@’localhost’;
Query OK (0.01 sec)

mysql> quit

3.6 第七步:创建一个数据库,在数据库中创建新表,插入记录,查询和更新

一个MySQL服务器包含许多数据库。数据库包含许多表。表包含行(记录)和列(字段)。
让我们创建一个叫做“studentdb”的数据库并在其中创建一张表“class101”。表有三列:ID(int类型的整数),名称(varchar(50)-最多50个字符,可变长度的字符串),GPA(float类型的浮点数)。

警告:不要使用空白和特殊字符作为数据库名称,表名,列名。它们要么不支持,要么会给你带来更多的问题。

客户端会话小贴士:
在我们编程之前,这里有一些使用客户端的小贴士:

    1.您需要用分号(;)来终止您的命令,分号将命令发送到服务器进行处理。

Eg:
mysql> select * from class101 ;

    2.一个命令可以跨越几行。后续行的提示更改为>表示继续。您需要用分号终止该命令(;)。

Eg:
mysql> select *
-> from class101
->
-> ;
换句话说,如果你忘记键入“;”可以在下一行输入。

    3.您可以使用 \C 取消(中止)当前命令。

Eg:
mysql> select * from class101 \c

    4.如果使用了半个单引号,不关闭它,则继续提示更改为 ‘> (而不是 ->)自动结束单引号。

Eg:
mysql> select ‘xxx
‘> ‘\c

SQL 编程
让我们用刚创建的myuser用户来开启一个客户端。
// 开启一个客户端
// 移动到mysql的bin目录下
mysql -u myuser -p // Windows
./mysql -u myuser -p // Mac OS X
// 创建一个叫做studentdb的新数据库
mysql> create database if not exists studentdb;
Query OK, 1 row affected (0.08 sec)

// 显示该服务器中所有的数据库
mysql> show databases;
这里写图片描述
x rows in set (0.07 sec)

// 使用’studentdb’ 数据库作为默认数据库
// 在默认的数据库下,使用表可以只用’表名’来表示即可。如果没有指明数据库,则需要使用:’数据库名.表名’
mysql> use studentdb;
Database changed

// 如果数据库中有class101这张表,则先将其删除
mysql> drop table if exists class101;
Query OK, 0 rows affected, 1 warning (0.15 sec)

// 在默认数据库studentdb中创建一张新表叫做class101
// 具有三列制定类型的属性
mysql> create table class101 (id int, name varchar(50), gpa float);
Query OK, 0 rows affected (0.15 sec)

// 显示数据库’studentdb’中所有的表
mysql> show tables;
这里写图片描述
1 row in set (0.00 sec)

// 描述表class101
mysql> describe class101;
这里写图片描述
3 rows in set (0.04 sec)

// 在表class101中插入一行
// String字符串将由单引号括起,int与float值无需引号
mysql> insert into class101 values (11, ‘Tan Ah Teck’, 4.8);
Query OK, 1 row affected (0.03 sec)

// 插入另外一行
mysql> insert into class101 values (22, ‘Mohamed Ali’, 4.9);
Query OK, 1 row affected (0.03 sec)

// 在表calss101中查找所有的行与列
mysql> select * from class101;
这里写图片描述
2 rows in set (0.00 sec)

//在class101表中查找满足以下条件的行与列
mysql> select name, gpa from class101 where gpa > 4.85;
这里写图片描述
1 rows in set (0.00 sec)

// 更新选定记录的给定字段
mysql> update class101 set gpa = 4.4 where name = ‘Tan Ah Teck’;
Query OK, 1 row affected (0.05 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> select * from class101;
这里写图片描述
2 rows in set (0.00 sec)

//将选择的记录删除
mysql> delete from class101 where id = 22;
Query OK, 1 row affected (0.03 sec)
mysql> select * from class101;
这里写图片描述
1 rows in set (0.00 sec)

// 您可以将一组SQL命令存储在一个文件(称为SQL脚本)中并运行该脚本
// 而不是逐一输入命令。
// 使用编程文本编辑器来创建一个新的文件名为“mycommands.sql”
// 包含以下三个SQL语句。
// (对于 Windows)将文件保存在 “d:\myProject”下。
// (对于 Mac OS X)在”Documents”下保存文件。
insert into class101 values (33, ‘Kumar’, 4.8);
insert into class101 values (44, ‘Kevin’, 4.6);
Select * from class101;

// 在您创建的文件后,你可以使用下面的“source”命令来运行SQL脚本。
// 您需要提供脚本的完整路径。
// (对于 Windows)文件路径是:d:\myProject\mycommands.sql
// (对于 Mac OS X)文件路径是:~/Documents/mycommands.sql

mysql> source d:\myProject\mycommands.sql // For Windows
mysql> source ~/Documents/mycommands.sql // For Mac OS X
Query OK, 1 row affected (0.00 sec)
Query OK, 1 row affected (0.00 sec)
这里写图片描述
3 rows in set (0.00 sec)

4. 多对多关系

在书店里,一本书由一个或多个作者写;作者可以写零个或更多的书。这就是所谓的多对多关系。在一个单一的表中不复制任何一条信息用一个固定数量的列来捕获多对多关系是不可能的。例如,如果您在下面的表中组织数据,您将不知道要使用多少个作者列;您需要重复重复作者的所有数据。
这里写图片描述
书籍和作者之间的多对多关系可以用3个表格来建模,如下所示。一个图书表包含关于书籍的数据(如书名和价格);作者表包含了作者的数据(如姓名和电子邮件)。books_authors表加入书和作者表和捕捉许多书籍和作者之间的关系。
这里写图片描述

5. 备份和恢复数据库

5.1 通过“mysqldump”实现程序备份

可以通过使用“mysqldump”实用程序来备份
(1)整个服务器(所有数据库),
(2)选定的数据库,或
(3)数据库中选定表。
“mysqldump”程序生成SQL脚本,可以在以后执行重新创建数据库、表和列。
例如,下面的命令备份整个“studentdb”数据库SQL脚本为”backup_studentdb.sql”。

对于 Windows :
// 开始一个新的CMD
d:
cd \myProject\mysql\bin
mysqldump -u myuser -p –databases studentdb > “d:\myProject\backup_studentdb.sql”

对于 Mac OS X :
// 开始一个新的终端
cd /usr/local/mysql/bin
./mysqldump -u myuser -p –databases studentdb > ~/Documents/backup_studentdb.sql
// 表示当前登录用户的主目录
我们研究输出文件,其中包含创建数据库、创建表和插入语句,以便重新创建数据库和表。

5.2 通过MySQL客户端中的“source”命令恢复

您可以通过运行MySQL客户端的“source”命令从备份中恢复。例如,恢复之前备份的studentdb:

对于 Windows :
// 启动MySQL客户端
d:
cd \myproject\mysql\bin
mysql -u myuser -p
// 运行备份脚本重新创建数据库
mysql> drop database if exists studentdb; mysql> source d:\myProject\backup_studentdb.sql

对于 Mac OS X :
// 启动MySQL客户端
cd /usr/local/mysql/bin
./mysql -u myuser -p
// 运行备份脚本重新创建数据库
mysql> drop database if exists studentdb; mysql> source ~/Documents/backup_studentdb.sql

6. 总结常用的命令

(对于 Windows)启动MySQL服务器和客户端
// 启动服务器
cd path-to-mysql-bin
mysqld –console

// 关闭服务器
Ctrl-C

// 启动一个客户端
cd path-to-mysql-bin
mysql -u username -p
(对于 Mac OS X)启动MySQL服务器和客户端
// 启动/关闭服务器:
// 使用图形控件

// 启动客户端
cd /usr/local/mysql/bin
./mysql -u username -p

常用MySQL命令
mysql命令是不区分大小写。
//一般:

// 发送命令到服务器进行处理(或G)

\C
// (中止)–取消当前命令

//数据库级:
DROP DATABASE databaseName;
// 删除数据库

DROP DATABASE IF EXISTS databaseName;
// 仅当存在时删除

CREATE DATABASE databaseName;
// 创建一个新数据库

CREATE DATABASE IF NOT EXISTS databaseName;
// 如果不存在则创建该数据库

SHOW DATABASES;
// 显示服务器中所有的数据库

USE databaseName
// 设置默认数据库

//表级别:
DROP TABLE tableName;
DROP TABLE IF EXISTS tableName;
CREATE TABLE tableName (column1Definition, column2Definition, …);
CREATE TABLE IF NOT EXISTS tableName (column1Definition, column2Definition, …); SHOW TABLES;
// 显示数据库中所有的表

DESCRIBE tableName;
// 显示表中列的描述

DESC tableName;
// 和上一个一样

// 增删改查级别:
INSERT INTO tableName VALUES (column1Value, column2Value,…);
INSERT INTO tableName (column1Name, …, columnNName)
    VALUES (column1Value, …, columnNValue);
DELETE FROM tableName WHERE criteria;
UPDATE tableName SET columnName = expression WHERE criteria;
SELECT column1Name, column2Name, … FROM tableName
    WHERE criteria
    ORDER BY columnAName ASC|DESC, columnBName ASC|DESC, …;

// 在数据库中执行脚本
SOURCE full-Path-Filename

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值