学好MySQL要有好的教程,这里翻译了几篇官方的MySQL教程(MySQL-Tutorial)和大家分享下。
MySQL Tutorial.pdf–链接里有这几篇Tutorial的英文原版pdf,可供英文较好的朋友们学习。
MySQL-Tutorial
安装MySQL 5.7 Windows,Mac OS,CentOS,Ubuntu 使用SQL编程
1.关系数据库和SQL简介
1.1关系数据库
关系数据库组织表中的数据。表有行(或记录)和列(或字段)。表是基于公共列来消除数据冗余并确保数据完整性的。
流行的关系数据库管理系统(RDBMS)包括商业Oracle、IBM DB2、微软SQL Server和Access、SAP Sybase和Teradata、MySQL,PostgreSQL,嵌入式Apache Derby(java db)、connect(Mini SQL)、SQLite和Apache OpenOffice Base。
1.2结构查询语言(SQL)
SQL是一种高级语言,称为结构查询语言,是专为与关系数据库交互而设计的。SQL定义了一组命令,如选择、插入、更新、删除、创建表,删除表,等。
在1970年 ,Edgar F. Codd(IBM)提出关系数据库模型。作为一种较早的编程语言,SQL后来由Donald D. Chamberlin和Raymond F. Boyce在IBM继续发展更新。Oracle公司随后又把它带到一个新的高度。ANSI(美国国家标准协会)于1986成立了第一个SQL标准(简称SQL-86或sql-87),随后在1989(SQL-89)、1992(SQL-92或SQL2)、1999(SQL-99或SQL3)、2003(SQL-2003),2006(sql-2006)和2011(sql-2011)分别发布了不同的新版本。然而,所有的数据库厂商都有自己的数据库,例如,PL / SQL(Oracle)、Transact-SQL(微软、SAP),PL / pgsql(PostgreSQL)。
1.3 SQL实例
一个关系数据库系统包含很多数据库。数据库包括一个或多个表。有行(或记录)和列(或字段)的表。
假设我们已经在”studentdb”这个数据库中创建了一个叫做”class101”的表。它有3列:ID、name、GPA。列具有数据类型。我们选择:int(整数)ID,float(浮点数)GPA,varchar(50)(最多50个字符的可变长度字符串)name。
Database: studentdb
Table: class101
id (INT) name (VARCHAR(50)) gpa (FLOAT) 1001 Tan Ah Teck 4.5 1002 Mohammed Ali 4.8 1003 Kumar 4.8 1004 Kevin Jones 4.6
SQL提供了一个简单和直观的方式来与关系数据库进行交互。
SELECT
– 语法
SELECT column1, column2, … FROM tableName WHERE criteria
SELECT * FROM tableName WHERE criteria
– 举例
SELECT name, gpa FROM class101
– 从表class101中选择列的name和GPA
| name | gpa |
|---|---|
| Tan Ah Teck | 4.5 |
| Mohammed Ali | 4.8 |
| Kumar | 4.8 |
| Kevin Jones | 4.6 |
SELECT * FROM class101
– 从表class101中选择所有列
– 通配符*表示所有列
| id | name | gpa |
|---|---|---|
| 1001 | Tan Ah Teck | 4.5 |
| 1002 | Mohammed Ali | 4.8 |
| 1003 | Kumar | 4.8 |
| 1004 | Kevin Jones | 4.6 |
SELECT name, gpa FROM class101 WHERE gpa >= 4.7
– 选择行满足标准的列中的name和GPA
– 您可以使用 =, >, <, >=, <=, <> (!=) 来比较数字
| name | gpa |
|---|---|
| Mohammed Ali | 4.8 |
| Kumar | 4.8 |
SELECT name, gpa FROM class101 WHERE name = ‘Tan Ah Teck’
– (=或!=)字符串表示完全匹配。字符串用单引号括起来
| name | gpa |
|---|---|
| Tan Ah Teck | 4.5 |
SELECT name FROM class101 WHERE name LIKE ‘k%’
– 使用LIKE字符串模式匹配
– 通配符 % 与零个或更多个(任意)字符匹配
– 通配符 _ 匹配一个字符
| name |
|---|
| Kumar |
| Kevin Jones |
SELECT * FROM class101 WHERE gpa > 4 AND name LIKE ‘k%’ ORDER BY gpa DESC, name ASC
– 使用 AND, OR, NOT 连接简单的条件判断
– 通过使用DESC(降)或ASC(升)为查询结果排序
| id | name | gpa |
|---|---|---|
| 1003 | Kumar | 4.8 |
| 1004 | Kevin Jones | 4.6 |
DELETE
– 语法
DELETE FROM tableName WHERE criteria
– 举例
DELETE FROM class101
– 删除表的所有行,当心没有撤销!
DELETE FROM class101 WHERE id = 33
– 删除符合条件的行
INSERT
– 语法
INSERT INTO tableName VALUES (firstColumnValue, …, lastColumnValue) – 所有列
INSERT INTO tableName (column1, column2, …) VALUES (value1, value2, …) – 选中列
– 举例
INSERT INTO class101 VALUES (1001, ‘Tan Ah Teck’, 4.5)
–列举出每一列的值
INSERT INTO class101 (name, gpa) VALUES (‘Peter Jones’, 4.55)
– 丢失的字段将设置为默认值或NULL
UPDATE
– 语法
UPDATE tableName SET column = value WHERE criteria
– 举例
UPDATE class101 SET gpa = 5.0 – 所有列
UPDATE class101 SET gpa = gpa + 1.0 WHERE name = ‘Tan Ah Teck’ – 选中列
CREATE TABLE
– 语法
CREATE TABLE tableName (column1Name column1Type, column2Name column2Type, …)
– 举例
CREATE TABLE class101 (id INT, name VARCHAR(50), gpa FLOAT)
DROP TABLE
– 语法
DROP TABLE tableName
– 举例
DROP TABLE class101
– 删除表。当心没有撤销!!!
注:
1.不区分大小写:SQL关键字,名称(标识符),字符串可能会或可能不区分大小写,取决于不同数据库的实现情况。
在MySQL中,关键字不区分大小写。
为了清楚起见,我在本文中显示大写的关键字。
对于程序员来说,最好将名字(标识符)和字符串视为区分大小写的。
在MySQL中,列名总是不区分大小写的,但在UNIX中表名是区分大小写的,但在Windows中不区分大小写(这很混乱!)。
字符串比较中的不区分大小写取决于使用的排序顺序。
2.字符串:SQL字符串以单引号括起来,但大多数实现(如MySQL)也接受双引号。
2.MySQL关系数据库管理系统(RDBMS)
SQL是一种与关系数据库交互的编程语言。另一方面,MySQL是一个软件系统——关系型数据库管理系统。
MySQL是最常用的,最好的开源和免费的关系数据库管理系统(RDBMS)之一。MySQL由Michael “Monty” Widenius和David Axmark1995年开发,由瑞典公司称为MySQL AB。2008被Sun公司收购了。Sun微系统公司于2010被甲骨文公司收购。MySQL是成功的,不仅因为它是免费和开源的(有很多免费和开源的数据库,如Apache Derby(java db),connect(Mini SQL),SQLite,PostgreSQL,Apache OpenOffice’s Base),而是它速度、可靠性、易使用、性能、连接性(全网络支持)、便携性(运行在大多数的操作系统,如Unix,Windows,Mac),安全(SSL的支持),体积小,和丰富的功能较优。MySQL支持所有预期的功能,在一个高性能的关系型数据库,如交易、外键、复制、查询、存储过程、视图和触发器。MySQL通常部署在一个LAMP(Linux Apache MySQL PHP),服务器(Windows Apache MySQL PHP),或MAMP(Mac OS apachemysql PHP)环境中。所有的组件都是免费的,开源的,包括操作系统。MySQL的网站主页是:https://www.mysql.com。MySQL的最终参考的是MySQL参考手册,可在:https://dev.mysql.com/doc 中获得。巨大的参考手册PDF有超过3700页!!!
MySQL作为一个客户机服务器系统在TCP/IP网络上运行。服务器在具有IP地址的计算机、在选定的TCP端口号上运行。MySQL的默认的TCP端口号是3306。用户可以通过客户端程序访问服务器,在给定的IP地址和TCP端口号连接到服务器。MySQL数据库服务器包含一个或多个数据库。数据库包含一个或多个表。表由行(或记录)和列(或字段)组成。
3.如何安装MySQL 5.7并从sql开始
编程
我希望你在你自己的机器上安装MySQL,因为我想让你学习如何安装,定制和操作复杂的工业软件系统。安装可能是这个练习中最难的部分。
3.1 第一步:下载和安装MySQL
在 Windows 上安装
1.从https://dev.mysql.com/downloads/mysql/下载MySQL的ZIP文件:
A. 选择General Available (GA) Releases选项卡。
B. 在MySQL Community Server 5.7.xx下 ⇒ 在Select Platform中选择Microsoft Windows。
C.在Other Downloads中,下载Windows (x86, 64-bit), ZIP ARCHIVE (mysql-5.7.xx-winx64.zip)或Windows (x86, 32bit), ZIP ARCHIVE (mysql-5.7.xx-win32.zip)。(你需要知道自己的电脑是32位还是64位的)
D. 没有必要Login或Sign up-只需点击No thanks, just start my downloads!。
2.创建一个项目目录,名称叫做”d:\myProject” (或者为 “c:\myProject”)。
解压下载文件到你的工程目录。MySQL将会被解压为:d:\myProject\mysql-5.7.{xx}-winx64。为便于使用,我们将缩短和重命名目录d:\myProject\mysql。注意并记住你的MySQL安装目录!!!
3.(从MySQL 5.7.7以后新规则)初始化数据库:启动CMD(管理员)和发出这些命令:
//更改目录到MySQL的安装目录
//假设你的MySQL安装目录是 d:\myProject\mysql
d:
cd \myProject\mysql\bin
//初始化数据库。创建一个无需密码的根用户。在控制台上继续输入:
mysqld –initialize –console
……
…… [注] 临时密码是[email protected]生成的: xxxxxxxx
在安装过程中,一个超级用户有一个临时密码了,如上图所示。注意临时密码,复制并保存在某个地方,或者最好还是拍张照片!!!!
4.如果你犯了错误,删除整个MySQL目录,重复步骤2和步骤3。
在 Mac OS X 上安装
1.从https://dev.mysql.com/downloads/mysql/下载MySQL的DMG Archive文件:
A. 选择General Available (GA) Releases选项卡。
B. 在MySQL Community Server 5.7.xx下 ⇒ 在Select Platform中选择Mac OS X。
C.为您的特定的Mac OS版本选择适当的DMG Archive,如果有多个版本可用则可以多选。否则,你没有其他的选择,只能选择你适合的版本!
★ 检查你的操作系统版本⇒点击苹果的标志⇒关于本机。
★ 检查您的Mac OS是32位还是64位⇒请阅读:http://support.apple.com/kb/ht3696。除非你有一个dinosaurera机,否则它应该是64位!
D. 没有必要Login或Sign up-只需点击No thanks, just start my downloads!。
2.安装MySQL:
A.Downloads⇒双击.dmg文件下载。
B.双击mysql-5.7.{xx}-osx10.x-xxx.pkg
C.按照屏幕上的说明安装mysql。在安装过程中,一个超级用户会临时随机生成密码。注意密码,复制并保存在某处,最好还是拍张照片!!!
D. MySQL将安装在/usr/local MySQL”。注意这个安装目录!!
E. 弹出.dmg文件。
3.如果你犯了一个错误的地方,停止服务器(点击苹果图标⇒系统偏好⇒MySQL⇒停止),删除目录/usr/local/mysql-5.7.{xx}…,并重新运行安装。重新启动服务器(点击苹果图标⇒系统偏好⇒MySQL⇒开始)。您可能需要重新启动您的机器。
在 Ubuntu 上安装
我将默认安装mysql目录为:d:\myProject\mysql 或 /usr/local/mysql (Mac OS)。注意你的MySQL安装目录。此后,我在这篇文章中将MySQL安装目录表示为 < MYSQL_HOME > 。
3.2 第三步:启动服务器
(译者注:从3.1到3.2没有第二步,原文如此)
MySQL是一个客户端-服务器系统。数据库作为服务器应用程序运行。用户通过客户端程序访问数据库服务器,本地或远程通过网络,如图所示:
1. 服务器程序被称为“mysqld”(一个后缀“d”表示它是一个守护进程,守护进程是一个非交互式进程运行在后台)。
2. 客户端程序被称为“MySQL”(没有“d”)。
程序mysqld和mysql保存在MySQL安装目录的子目录“bin”中。
启动数据库服务器
Windows启动服务器
通过一个CMD shell来启动:
//改变当前目录到MySQL的“bin”目录
//假设MySQL安装目录“d:\myProject\mysql”
d:
cd \myProject\mysql\bin
//启动MySQL数据库服务器
mysqld –console
……
……
xxxxxx:XX XX XX [注]:mysqld:准备连接。
Version: ‘5.7.xx’ socket: ” port: 3306 MySQL Community Server (GPL)
注:–console 选项将服务器输出消息指示到控制台。没有这个选项,你会看到一个空白的屏幕。