搜档网
当前位置:搜档网 › mysql教程

mysql教程

mysql教程
mysql教程

第3章:教程

目录

3.1. 连接与断开服务器

3.2. 输入查询

3.3. 创建并使用数据库

3.3.1. 创建并选择数据库

3.3.2. 创建表

3.3.3. 将数据装入表中

3.3.

4. 从表检索信息

3.4. 获得数据库和表的信息

3.5. 在批处理模式下使用my sql

3.6. 常用查询的例子

3.6.1. 列的最大值

3.6.2. 拥有某个列的最大值的行

3.6.3. 列的最大值:按组

3.6.

4. 拥有某个字段的组间最大值的行

3.6.5. 使用用户变量

3.6.6. 使用外键

3.6.7. 根据两个键搜索

3.6.8. 根据天计算访问量

3.6.9. 使用AUTO_INCREMENT

3.7. 孪生项目的查询

3.7.1. 查找所有未分发的孪生项

3.7.2. 显示孪生对状态的表

3.8. 与Apache一起使用MySQL

本章通过演示如何使用mysql客户程序创造和使用一个简单的数据库,提供一个MySQL的入门教程。mysql(有时称为“终端监视器”或只是“监视”)是一个交互式程序,允许你连接一个MySQL服务器,运行查询并察看结果。mysql可以用于批模式:你预先把查询放在一个文件中,然后告诉mysql执行文件的内容。本章将介绍使用mysql的两个方法。

要想查看由mysql提供的选择项目表,可以用--help选项来调用:

shell> mysql --help

本章假定mysql已经被安装在你的机器上,并且有一个MySQL服务器可以连接。否则,请联络MySQ L 管理员。(如果你是管理员,则需要查阅本手册的其它章节,例如第5章:数据库管理。)

本章描述建立和使用一个数据库的全过程。如果你仅仅对访问一个已经存在的数据库感兴趣,可以跳过描述怎样创建数据库及它所包含的表的章节。

由于本章是一个教程,省略了许多细节。关于这里所涉及的主题的详细信息,请查阅本手册的相关章节。

3.1. 连接与断开服务器

为了连接服务器,当调用mysql时,通常需要提供一个MySQL用户名并且很可能需要一个密码。如果服务器运行在登录服务器之外的其它机器上,还需要指定主机名。联系管理员以找出进行连接所使用的参数 (即,连接的主机、用户名和使用的密码)。知道正确的参数后,可以按照以下方式进行连接:

shell> mysql -h host -u user -p

Enter password: ********

host和user分别代表MySQL服务器运行的主机名和MySQL账户用户名。设置时替换为正确的值。******** 代表你的密码;当mysql显示Enter password:提示时输入它。

如果有效,你应该看见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.1.2-alpha-standard

Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql>

mysql> 提示符告诉你mysql准备为你输入命令。

一些MySQL安装允许用户以匿名(未命名)用户连接到本地主机上运行的服务器。如果你的机器是这种情况,你应该能不带任何选项地调用mysql与该服务器连接:

shell> mysql

成功地连接后,可以在mysql>提示下输入QUIT (或\q)随时退出:

mysql> QUIT

Bye

在Unix中,也可以按control-D键断开服务器。

在下列章节的大多数例子都假设你连接到了服务器。由mysql>提示指明。

3.2. 输入查询

确保你连接上了服务器,如在先前的章节讨论的。连接上服务器并布代表选择了任何数据库,但这样就可以了。知道关于如何查询的基本知识,比马上跳至创建表、给他们装载数据并且从他们检索数据更重要。本节描述输入命令的基本原则,使用几个查询,你能尝试了解mysql是如何工作的。

这是一个简单的命令,要求服务器告诉它的版本号和当前日期。在mysql>提示输入如下命令并按回车键:

mysql> SELECT VERSION(), CURRENT_DATE;

+-----------------+--------------+

| VERSION() | CURRENT_DATE |

+-----------------+--------------+

| 5.1.2-alpha-log | 2005-10-11 |

+-----------------+--------------+

1 row in set (0.01 sec)

mysql>

这询问说明mysql的几个方面:

·一个命令通常由SQL语句组成,随后跟着一个分号。(有一些例外不需要分号。早先提到的QUIT 是一个例子。后面我们将看到其它的例子。)

·当发出一个命令时,mysql将它发送给服务器并显示执行结果,然后显示另一个mysql>显示它准备好接受其它命令。

·mysql用表格(行和列)方式显示查询输出。第一行包含列的标签,随后的行是查询结果。通常,列标签是你取自数据库表的列的名字。如果你正在检索一个表达式而非表列的值(如刚才的例子),mysql用表达式本身标记列。

·mysql显示返回了多少行,以及查询花了多长时间,它给你提供服务器性能的一个大致概念。因为他们表示时钟时间(不是CPU 或机器时间),并且因为他们受到诸如服务器负载和网络延时的影响,因此这些值是不精确的。(为了简洁,在本章其它例子中不再显示“集合中的行”。)

能够以大小写输入关键词。下列查询是等价的:

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.0

2 sec)

至此显示的命令是相当短的单行语句。你可以在一行上输入多条语句,只需要以一个分号间隔开各语句:

mysql> SELECT VERSION(); SELECT NOW();

+-----------------+

| VERSION() |

+-----------------+

| 5.1.2-alpha-log |

+-----------------+

1 row in set (0.00 sec)

+---------------------+

| NOW() |

+---------------------+

| 2005-10-11 15:15:00 |

+---------------------+

1 row in set (0.00 sec)

不必全在一个行内给出一个命令,较长命令可以输入到多个行中。mysql通过寻找终止分号而不是输入行的结束来决定语句在哪儿结束。(换句话说,mysql接受自由格式的输入:它收集输入行但直到看见分号才执行。)

这里是一个简单的多行语句的例子:

mysql> SELECT

-> USER()

-> ,

-> CURRENT_DATE;

+---------------+--------------+

| USER() | CURRENT_DATE |

+---------------+--------------+

| jon@localhost | 2005-10-11 |

+---------------+--------------+

在这个例子中,在输入多行查询的第一行后,要注意提示符如何从mysql>变为->,这正是mysql如何指出它没见到完整的语句并且正在等待剩余的部分。提示符是你的朋友,因为它提供有价值的反馈,如果使用该反馈,将总是知道mysql正在等待什么。

如果你决定不想执行正在输入过程中的一个命令,输入\c取消它:

mysql> SELECT

-> USER()

-> \c

mysql>

这里也要注意提示符,在你输入\c以后,它切换回到mysql>,提供反馈以表明mysql准备接受一个新命令。

下表显示出可以看见的各个提示符并简述它们所表示的mysql的状态:

当你打算在一个单行上发出一个命令时,通常会“偶然”出现多行语句,但是没有终止分号。在这种情况中,mysql等待进一步输入:

mysql> SELECT USER()

->

如果出现这种情况(你认为输完了语句,但是只有一个->提示符响应),很可能mysql正在等待分号。如果你没有注意到提示符的提示,在意识到你需要做什么之前,你可能会呆坐一会儿。输入一个分号完成语句,mysql将执行:

mysql> SELECT USER()

-> ;

+---------------+

| USER() |

+---------------+

| jon@localhost |

+---------------+

在字符串收集期间将出现'> 和"> 提示符(提示MySQL正等待字符串的结束)。在MySQL中,可以写由…'?或…"?字符括起来的字符串(例如,'hello'或"goodbye"),并且mysql允许输入跨越多行的字符串。当看到一个'> 或"> 提示符时,这意味着已经输入了包含以…'?或…"?括号字符开始的字符串的一行,但是还没有输入终止字符串的匹配引号。这显示你粗心地省掉了一个引号字符。例如:

mysql> SELECT * FROM my_table WHERE name = 'Smith AND age < 30; '>

如果你输入SELECT语句,然后按Enter(回车)键并等待结果,什么都没有出现。不要惊讶,“为什么该查询这么长呢?”,注意">提示符提供的线索。它告诉你mysql期望见到一个未终止字符串的余下部分。(你看见语句中的错误吗?字符串"Smith丢掉了第二个引号。)

走到这一步,你该做什么?最简单的是取消命令。然而,在这种情况下,你不能只是输入\c,因为mysql 作为它正在收集的字符串的一部分来解释它!相反,应输入关闭的引号字符(这样mysql知道你完成了字符串),然后输入\c:

mysql> SELECT * FROM my_table WHERE name = 'Smith AND age < 30; '> '\c

mysql>

提示符回到mysql>,显示mysql准备好接受一个新命令了。

`> 提示符类似于'> 和"> 提示符,但表示你已经开始但没有结束以`> 开始的识别符。

知道'>和">提示符的含义很重要,因为如果你错误地输入一个未终止的字符串,任何后面输入的行将要被mysql忽略--包括包含QUIT的行!这可能令人相当困惑,特别是如果取消当前命令前还不知道你需要提供终止引号。

3.3. 创建并使用数据库

3.3.1. 创建并选择数据库

3.3.2. 创建表

3.3.3. 将数据装入表中

3.3.

4. 从表检索信息

知道怎样输入命令,便可以访问数据库了。

假定在你的家(你的“动物园”)中有很多宠物,并且你想跟踪关于它们各种类型的信息。你可以通过创建表来保存你的数据并根据所需要的信息装载他们,然后你可以从表中检索数据来回答关于动物不同种类的问题。本节显示如何做到所有这些事情:

·创建数据库

·创建数据库表

·装载数据到数据库表

·以各种方法从表中检索数据

·使用多个表

动物园数据库很简单(特意的),但是不难把它想象成可能用到类似数据库的真实世界情况。例如,农夫可以使用这样的一个数据库来追踪家畜,或者兽医可以用它跟踪病畜记录。从MySQL网址上可以获得后面章节中将用到的含有部分查询和样例数据的动物园分发。有tar压缩格式

(https://www.sodocs.net/doc/8c2648329.html,/docs/menagerie-db.tar.gz)和Zip压缩格式

(https://www.sodocs.net/doc/8c2648329.html,/docs/menagerie-db.zip)。

使用SHOW语句找出服务器上当前存在什么数据库:

mysql> SHOW DATABASES;

+----------+

| Database |

+----------+

| mysql |

| test |

| tmp |

+----------+

可能你的机器上的数据库列表是不同的,但是很可能有mysql和test数据库。mysql是必需的,因为它描述用户访问权限,test数据库经常作为用户试身手的工作区。

请注意如果没有SHOW DATABASES权限,则不能看见所有数据库。参见13.5.1.3节,“GRANT和REVOKE语法”。

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

mysql> USE test

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是所连接的服务器所在的主机。

3.3.1. 创建并选择数据库

如果管理员在设置权限时为你创建了数据库,你可以开始使用它。否则,你需要自己创建数据库:

mysql> CREATE DATABASE menagerie;

在Unix下,数据库名称是区分大小写的(不像SQL关键字),因此你必须总是以menagerie访问数据库,而不能用Menagerie、MENAGERIE或其它一些变量。对表名也是这样的。(在Windows下,该限制不适用,尽管你必须在一个给定的查询中使用同样的大小写来引用数据库和表。但是,由于多种原因,作为最好的惯例,一定要使用与数据库创建时的同样的大小写。)

创建数据库并不表示选定并使用它,你必须明确地操作。为了使menagerie成为当前的数据库,使用这个命令:

mysql> USE menagerie

Database changed

数据库只需要创建一次,但是必须在每次启动mysql会话时在使用前先选择它。你可以根据上面的例子执行一个USE语句来实现。还可以在调用mysql时,通过命令行选择数据库,只需要在提供连接参数之后指定数据库名称。例如:

shell> mysql -h host -u user -p menagerie

Enter password: ********

注意,刚才显示的命令行中的menagerie不是你的密码。如果你想要在命令行上在-p选项后提供密码,则不能插入空格(例如,如-pmypassword,不是-p mypassword)。但是,不建议在命令行输入密码,因为这样会暴露密码,能被在机器上登录的其它用户窥探到。

3.3.2. 创建表

创建数据库是很容易的部分,但是在这时它是空的,正如SHOW TABLES将告诉你的:

mysql> SHOW TABLES;

Empty set (0.00 sec)

较难的部分是决定你的数据库结构应该是什么:你需要什么数据库表,各数据库表中有什么样的列。

你将需要一个包含你每个宠物的记录的表。它可称为pet表,并且它应该包含,最少,每个动物的名字。因为名字本身不是很有趣,表应该包含另外的信息。例如,如果在你豢养宠物的家庭有超过一个人,你可能想要列出每个动物的主人。你可能也想要记录例如种类和性别的一些基本的描述信息。

年龄呢?那可能有趣,但是存储到一个数据库中不是一件好事情。年龄随着时间流逝而变化,这意味着你将要不断地更新你的记录。相反, 存储一个固定值例如生日比较好,那么,无论何时你需要年龄,可以以当前日期和出生日期之间的差来计算它。MySQL提供了日期运算函数,因此这并不困难。存储出生日期而非年龄还有其它优点:

·你可以使用数据库完成这样的任务,例如生成即将到来的宠物生日的提示。(如果你认为这类查询有点蠢,注意,这与从商务数据库来识别出不久要发给生日祝贺的客户是同一个问题,因为计算机帮助私人联络。)

·你可以相对于日期而不止是当前日期来计算年龄。例如,如果你在数据库存储死亡日期,你能很容易地计算出一只宠物死时有多大。

你可能想到pet表中其它有用的其它类型信息,但是到目前为止这些已经足够了:名字、主人、种类,性别、出生和死亡日期。

使用一个CREATE TABLE语句指定你的数据库表的布局:

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

VARCHAR适合于name、owner和species列,因为列值是变长的。这些列的长度不必都相同,而且不必是20。你可以挑选从1到65535的任何长度,从中选择一个最合理的值。(如果选择得不合适,后来证明你需要一个更长的字段,MySQL提供一个ALTER TABLE语句。)

可以用多种类型的值来表示动物记录中的性别,例如,"m"和"f",或"male"和"female"。使用单字符"m"和"f"是最简单的方法。

很显然,birth和death列应选用DATE数据类。

创建了数据库表后,SHOW TABLES应该产生一些输出:

mysql> SHOW TABLES;

+---------------------+

| Tables in menagerie |

+---------------------+

| pet |

+---------------------+

为了验证你的表是按你期望的方式创建,使用一个DESCRIBE语句:

mysql> DESCRIBE pet;

+---------+-------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+---------+-------------+------+-----+---------+-------+

| name | varchar(20) | YES | | NULL | |

| owner | varchar(20) | YES | | NULL | |

| species | varchar(20) | YES | | NULL | |

| sex | char(1) | YES | | NULL | |

| birth | date | YES | | NULL | |

| death | date | YES | | NULL | |

+---------+-------------+------+-----+---------+-------+

你可以随时使用DESCRIBE,例如,如果你忘记表中的列的名称或类型时。

3.3.3. 将数据装入表中

创建表后,需要填入内容。通过LOAD DATA和INSERT语句可以完成该任务。

假定你的宠物纪录描述如下。(假定在MySQL中期望的日期格式是YYYY-MM-DD;这可能与你习惯的不同。)

因为你是从一个空表开始的,填充它的一个简易方法是创建一个文本文件,每个动物各一行,然后用一个语句将文件的内容装载到表中。

你可以创建一个文本文件“pet.txt”,每行包含一个记录,用定位符(tab)把值分开,并且以CREATE TABLE语句中列出的列次序给出。对于丢失的值(例如未知的性别,或仍然活着的动物的死亡日期),你可

以使用NULL值。为了在你的文本文件中表示这些内容,使用\N(反斜线,字母N)。例如,Whistler鸟的记录应为(这里值之间的空白是一个定位符):

要想将文本文件“pet.txt”装载到pet表中,使用这个命令:

mysql> LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet;请注意如果用Windows中的编辑器(使用\r\n做为行的结束符)创建文件,应使用:

mysql> LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet -> LINES TERMINATED BY '\r\n';

(在运行OS X的Apple机上,应使用行结束符'\r'。)

如果你愿意,你能明确地在LOAD DATA语句中指出列值的分隔符和行尾标记,但是默认标记是定位符和换行符。这对读入文件“pet.txt”的语句已经足够。

如果该语句失败,可能是你安装的MySQL不与使用默认值的本地文件兼容。关于如何更改请参见5.6.4节,“LOAD DATA LOCAL安全问题”。

如果想要一次增加一个新记录,可以使用INSERT语句。最简单的形式是,提供每一列的值,其顺序与CREATE TABLE语句中列的顺序相同。假定Diane把一只新仓鼠命名为Puffball,你可以使用下面的INSERT语句添加一条新记录:

mysql> INSERT INTO pet

-> VALUES

('Puffball','Diane','hamster','f','1999-03-30',NULL);

注意,这里字符串和日期值均为引号扩起来的字符串。另外,可以直接用INSERT语句插入NULL代表不存在的值。不能使用LOAD DATA中所示的的\N。

从这个例子,你应该能看到涉及很多的键入用多个INSERT语句而非单个LOAD DATA语句装载你的初始记录。

3.3.

4. 从表检索信息

3.3.

4.1. 选择所有数据

3.3.

4.2. 选择特殊行

3.3.

4.3. 选择特殊列

3.3.

4.4. 分类行

3.3.

4.

5. 日期计算

3.3.

4.6. NULL值操作

3.3.

4.7. 模式匹配

3.3.

4.8. 计数行

3.3.

4.9. 使用1个以上的表

SELECT语句用来从数据表中检索信息。语句的一般格式是:

SELECT what_to_select

FROM which_table

WHERE conditions_to_satisfy;

what_to_select指出你想要看到的内容,可以是列的一个表,或*表示“所有的列”。which_table指出你想要从其检索数据的表。WHERE子句是可选项,如果选择该项,conditions_to_satisfy指定行必须满足的检索条件。

3.3.

4.1. 选择所有数据

SELECT最简单的形式是从一个表中检索所有记录:

mysql> SELECT * FROM pet;

+----------+--------+---------+------+------------+------------+

| name | owner | species | sex | birth | death | +----------+--------+---------+------+------------+------------+

| Fluffy | Harold | cat | f | 1993-02-04 | NULL | | Claws | Gwen | cat | m | 1994-03-17 | NULL | | Buffy | Harold | dog | f | 1989-05-13 | NULL |

| Fang | Benny | dog | m | 1990-08-27 | NULL | | Bowser | Diane | dog | m | 1979-08-31 | 1995-07-29 |

| Chirpy | Gwen | bird | f | 1998-09-11 | NULL | | Whistler | Gwen | bird | NULL | 1997-12-09 | NULL | | Slim | Benny | snake | m | 1996-04-29 | NULL | | Puffball | Diane | hamster | f | 1999-03-30 | NULL | +----------+--------+---------+------+------------+------------+

如果你想要浏览整个表,可以使用这种形式的SELECT,例如,刚刚装载了初始数据集以后。也有可能你想到Bowser的生日看起来不很对。查阅你原来的家谱,你发现正确的出生年是1989,而不是1979。

至少有两种修正方法:

·编辑文件“pet.txt”改正错误,然后使用DELETE和LOAD DATA清空并重新装载表:

· mysql> DELETE FROM pet;

· mysql> LOAD DATA LOCAL INFILE 'pet.txt' INTO TABLE pet;

然而, 如果这样操做,必须重新输入Puffball记录。

·用一个UPDATE语句仅修正错误记录:

· mysql> UPDATE pet SET birth = '1989-08-31' WHERE name = 'Bowser';

UPDATE只更改有问题的记录,不需要重新装载数据库表。

3.3.

4.2. 选择特殊行

如上所示,检索整个表是容易的。只需要从SELECT语句中删掉WHERE子句。但是一般你不想看到整个表,特别地当表变得很大时。相反,你通常对回答一个具体的问题更感兴趣,在这种情况下在你想要的信息上进行一些限制。让我们看一些他们回答的有关你宠物的问题的选择查询。

可以从表中只选择特定的行。例如,如果你想要验证你对Bowser的生日所做的更改,按下述方法选择Bowser的记录:

mysql> SELECT * FROM pet WHERE name = 'Bowser';

+--------+-------+---------+------+------------+------------+

| name | owner | species | sex | birth | death |

+--------+-------+---------+------+------------+------------+

| Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 | +--------+-------+---------+------+------------+------------+

输出证实正确的年份记录为1989,而不是1979。

字符串比较时通常对大小些不敏感,因此你可以将名字指定为"bowser"、"BOWSER"等,查询结果相同。

你可以在任何列上指定条件,不只仅仅是name。例如,如果你想要知道哪个动物在1998以后出生的,测试birth列:

mysql> SELECT * FROM pet WHERE birth > '1998-1-1';

+----------+-------+---------+------+------------+-------+

| name | owner | species | sex | birth | death |

+----------+-------+---------+------+------------+-------+

| Chirpy | Gwen | bird | f | 1998-09-11 | NULL |

| Puffball | Diane | hamster | f | 1999-03-30 | NULL |

+----------+-------+---------+------+------------+-------+

可以组合条件,例如,找出雌性的狗:

mysql> SELECT * FROM pet WHERE species = 'dog' AND sex = 'f'; +-------+--------+---------+------+------------+-------+

| name | owner | species | sex | birth | death |

+-------+--------+---------+------+------------+-------+

| Buffy | Harold | dog | f | 1989-05-13 | NULL |

+-------+--------+---------+------+------------+-------+

上面的查询使用AND逻辑操作符,也有一个OR操作符:

mysql> SELECT * FROM pet WHERE species = 'snake' OR species = 'bird';

+----------+-------+---------+------+------------+-------+

| name | owner | species | sex | birth | death |

+----------+-------+---------+------+------------+-------+

| Chirpy | Gwen | bird | f | 1998-09-11 | NULL |

| Whistler | Gwen | bird | NULL | 1997-12-09 | NULL |

| Slim | Benny | snake | m | 1996-04-29 | NULL |

+----------+-------+---------+------+------------+-------+

AND和OR可以混用,但AND比OR具有更高的优先级。如果你使用两个操作符,使用圆括号指明如何对条件进行分组是一个好主意:

mysql> SELECT * FROM pet WHERE (species = 'cat' AND sex = 'm') -> OR (species = 'dog' AND sex = 'f');

+-------+--------+---------+------+------------+-------+

| name | owner | species | sex | birth | death |

+-------+--------+---------+------+------------+-------+

| Claws | Gwen | cat | m | 1994-03-17 | NULL |

| Buffy | Harold | dog | f | 1989-05-13 | NULL |

+-------+--------+---------+------+------------+-------+ 3.3.4.3. 选择特殊列

如果你不想看到表中的所有行,就命名你感兴趣的列,用逗号分开。例如,如果你想要知道你的动物什么时候出生的,选择name和birth列:

mysql> SELECT name, birth FROM pet;

+----------+------------+

| name | birth |

+----------+------------+

| Fluffy | 1993-02-04 |

| Claws | 1994-03-17 |

| Buffy | 1989-05-13 |

| Fang | 1990-08-27 |

| Bowser | 1989-08-31 |

| Chirpy | 1998-09-11 |

| Whistler | 1997-12-09 |

| Slim | 1996-04-29 |

| Puffball | 1999-03-30 |

+----------+------------+

找出谁拥有宠物,使用这个查询:

mysql> SELECT owner FROM pet;

+--------+

| owner |

+--------+

| Harold |

| Gwen |

| Harold |

| Benny |

| Diane |

| Gwen |

| Gwen |

| Benny |

| Diane |

+--------+

请注意该查询只是简单地检索每个记录的owner列,并且他们中的一些出现多次。为了使输出减到最少,增加关键字DISTINCT检索出每个唯一的输出记录:

mysql> SELECT DISTINCT owner FROM pet;

+--------+

| owner |

+--------+

| Benny |

| Diane |

| Gwen |

| Harold |

+--------+

可以使用一个WHERE子句结合行选择与列选择。例如,要想查询狗和猫的出生日期,使用这个查询:

mysql> SELECT name, species, birth FROM pet

-> WHERE species = 'dog' OR species = 'cat';

+--------+---------+------------+

| name | species | birth |

+--------+---------+------------+

| Fluffy | cat | 1993-02-04 |

| Claws | cat | 1994-03-17 |

| Buffy | dog | 1989-05-13 |

| Fang | dog | 1990-08-27 |

| Bowser | dog | 1989-08-31 |

+--------+---------+------------+

3.3.

4.4. 分类行

你可能已经注意到前面的例子中结果行没有以特定的顺序显示。然而,当行按某种方式排序时,检查查询输出通常更容易。为了排序结果,使用ORDER BY子句。

这里是动物生日,按日期排序:

mysql> SELECT name, birth FROM pet ORDER BY birth;

+----------+------------+

| name | birth |

+----------+------------+

| Buffy | 1989-05-13 |

| Bowser | 1989-08-31 |

| Fang | 1990-08-27 |

| Fluffy | 1993-02-04 |

| Claws | 1994-03-17 |

| Slim | 1996-04-29 |

| Whistler | 1997-12-09 |

| Chirpy | 1998-09-11 |

| Puffball | 1999-03-30 |

+----------+------------+

在字符类型列上,与所有其他比较操作类似,分类功能正常情况下是以区分大小写的方式执行的。这意味着,对于等同但大小写不同的列,并未定义其顺序。对于某一列,可以使用BINARY强制执行区分大小写的分类功能,如:ORDER BY BINARY col_name.

默认排序是升序,最小的值在第一。要想以降序排序,在你正在排序的列名上增加DESC(降序)关键字:

mysql> SELECT name, birth FROM pet ORDER BY birth DESC;

+----------+------------+

| name | birth |

+----------+------------+

| Puffball | 1999-03-30 |

| Chirpy | 1998-09-11 |

| Whistler | 1997-12-09 |

| Slim | 1996-04-29 |

| Claws | 1994-03-17 |

| Fluffy | 1993-02-04 |

| Fang | 1990-08-27 |

| Bowser | 1989-08-31 |

| Buffy | 1989-05-13 |

+----------+------------+

可以对多个列进行排序,并且可以按不同的方向对不同的列进行排序。例如,按升序对动物的种类进行排序,然后按降序根据生日对各动物种类进行排序(最年轻的动物在最前面),使用下列查询:

mysql> SELECT name, species, birth FROM pet

-> ORDER BY species, birth DESC;

+----------+---------+------------+

| name | species | birth |

+----------+---------+------------+

| Chirpy | bird | 1998-09-11 |

| Whistler | bird | 1997-12-09 |

| Claws | cat | 1994-03-17 |

| Fluffy | cat | 1993-02-04 |

| Fang | dog | 1990-08-27 |

| Bowser | dog | 1989-08-31 |

| Buffy | dog | 1989-05-13 |

| Puffball | hamster | 1999-03-30 |

| Slim | snake | 1996-04-29 |

+----------+---------+------------+

注意DESC关键字仅适用于在它前面的列名(birth);不影响species列的排序顺序。

3.3.

4.

5. 日期计算

MySQL提供了几个函数,可以用来计算日期,例如,计算年龄或提取日期部分。

要想确定每个宠物有多大,可以计算当前日期的年和出生日期之间的差。如果当前日期的日历年比出生日期早,则减去一年。以下查询显示了每个宠物的出生日期、当前日期和年龄数值的年数字。

mysql> SELECT name, birth, CURDATE(),

-> (YEAR(CURDATE())-YEAR(birth))

-> - (RIGHT(CURDATE(),5)

-> AS age

-> FROM pet;

+----------+------------+------------+------+

| name | birth | CURDATE() | age |

+----------+------------+------------+------+

| Fluffy | 1993-02-04 | 2003-08-19 | 10 |

| Claws | 1994-03-17 | 2003-08-19 | 9 |

| Buffy | 1989-05-13 | 2003-08-19 | 14 |

| Fang | 1990-08-27 | 2003-08-19 | 12 |

| Bowser | 1989-08-31 | 2003-08-19 | 13 |

| Chirpy | 1998-09-11 | 2003-08-19 | 4 |

| Whistler | 1997-12-09 | 2003-08-19 | 5 |

| Slim | 1996-04-29 | 2003-08-19 | 7 |

| Puffball | 1999-03-30 | 2003-08-19 | 4 |

+----------+------------+------------+------+

此处,YEAR()提取日期的年部分,RIGHT()提取日期的MM-DD (日历年)部分的最右面5个字符。比较MM-DD值的表达式部分的值一般为1或0,如果CURDATE()的年比birth的年早,则年份应减去1。整个表达式有些难懂,使用alias (age)来使输出的列标记更有意义。

尽管查询可行,如果以某个顺序排列行,则能更容易地浏览结果。添加ORDER BY name子句按照名字对输出进行排序则能够实现。

mysql> SELECT name, birth, CURDATE(),

-> (YEAR(CURDATE())-YEAR(birth))

-> - (RIGHT(CURDATE(),5)

-> AS age

-> FROM pet ORDER BY name;

+----------+------------+------------+------+

| name | birth | CURDATE() | age |

+----------+------------+------------+------+

| Bowser | 1989-08-31 | 2003-08-19 | 13 |

| Buffy | 1989-05-13 | 2003-08-19 | 14 |

| Chirpy | 1998-09-11 | 2003-08-19 | 4 |

| Claws | 1994-03-17 | 2003-08-19 | 9 |

| Fang | 1990-08-27 | 2003-08-19 | 12 |

| Fluffy | 1993-02-04 | 2003-08-19 | 10 |

| Puffball | 1999-03-30 | 2003-08-19 | 4 |

| Slim | 1996-04-29 | 2003-08-19 | 7 |

| Whistler | 1997-12-09 | 2003-08-19 | 5 |

+----------+------------+------------+------+

为了按age而非name排序输出,只要再使用一个ORDER BY子句:

mysql> SELECT name, birth, CURDATE(),

-> (YEAR(CURDATE())-YEAR(birth))

-> - (RIGHT(CURDATE(),5)

-> AS age

-> FROM pet ORDER BY age;

+----------+------------+------------+------+

| name | birth | CURDATE() | age |

+----------+------------+------------+------+

| Chirpy | 1998-09-11 | 2003-08-19 | 4 |

| Puffball | 1999-03-30 | 2003-08-19 | 4 |

| Whistler | 1997-12-09 | 2003-08-19 | 5 |

| Slim | 1996-04-29 | 2003-08-19 | 7 |

| Claws | 1994-03-17 | 2003-08-19 | 9 |

| Fluffy | 1993-02-04 | 2003-08-19 | 10 |

| Fang | 1990-08-27 | 2003-08-19 | 12 |

| Bowser | 1989-08-31 | 2003-08-19 | 13 |

| Buffy | 1989-05-13 | 2003-08-19 | 14 |

+----------+------------+------------+------+

可以使用一个类似的查询来确定已经死亡动物的死亡年龄。你通过检查death值是否是NULL来确定是哪些动物,然后,对于那些非NULL值的动物,需要计算出death和birth值之间的差:

mysql> SELECT name, birth, death,

-> (YEAR(death)-YEAR(birth)) -

(RIGHT(death,5)

-> AS age

-> FROM pet WHERE death IS NOT NULL ORDER BY age;

+--------+------------+------------+------+

| name | birth | death | age |

+--------+------------+------------+------+

| Bowser | 1989-08-31 | 1995-07-29 | 5 |

+--------+------------+------------+------+

查询使用death IS NOT NULL而非death != NULL,因为NULL是特殊的值,不能使用普通比较符来比较,以后会给出解释。参见3.3.4.6节,“NULL值操作”。

如果你想要知道哪个动物下个月过生日,怎么办?对于这类计算,年和天是无关的,你只需要提取birth列的月份部分。MySQL提供几个日期部分的提取函数,例如YEAR( )、MONTH( )和DAYOFMONTH( )。在这里MONTH()是适合的函数。为了看它怎样工作,运行一个简单的查询,显示birth和MONTH(birth)的值:

mysql> SELECT name, birth, MONTH(birth) FROM pet;

+----------+------------+--------------+

| name | birth | MONTH(birth) |

+----------+------------+--------------+

| Fluffy | 1993-02-04 | 2 |

| Claws | 1994-03-17 | 3 |

| Buffy | 1989-05-13 | 5 |

| Fang | 1990-08-27 | 8 |

| Bowser | 1989-08-31 | 8 |

| Chirpy | 1998-09-11 | 9 |

| Whistler | 1997-12-09 | 12 |

| Slim | 1996-04-29 | 4 |

| Puffball | 1999-03-30 | 3 |

+----------+------------+--------------+

找出下个月生日的动物也是容易的。假定当前月是4月,那么月值是4,你可以找在5月出生的动物(5月),方法是:

mysql> SELECT name, birth FROM pet WHERE MONTH(birth) = 5;

+-------+------------+

| name | birth |

+-------+------------+

| Buffy | 1989-05-13 |

+-------+------------+

如果当前月份是12月,就有点复杂了。你不能只把1加到月份数(12)上并寻找在13月出生的动物,因为没有这样的月份。相反,你应寻找在1月出生的动物(1月) 。

你甚至可以编写查询,不管当前月份是什么它都能工作。采用这种方法不必在查询中使用一个特定的月份,DATE_ADD( )允许在一个给定的日期上加上时间间隔。如果在NOW( )值上加上一个月,然后用MONTH()提取月份,结果产生生日所在月份:

mysql> SELECT name, birth FROM pet

-> WHERE MONTH(birth) = MONTH(DATE_ADD(CURDATE(),INTERVAL 1 MONTH));

完成该任务的另一个方法是加1以得出当前月份的下一个月(在使用取模函数(MOD)后,如果月份当前值是12,则“回滚”到值0):

mysql> SELECT name, birth FROM pet

-> WHERE MONTH(birth) = MOD(MONTH(CURDATE()), 12) + 1;

注意,MONTH返回在1和12之间的一个数字,且MOD(something,12)返回在0和11之间的一个数字,因此必须在MOD( )以后加1,否则我们将从11月( 11 )跳到1月(1)。

3.3.

4.6. NULL值操作

NULL值可能令人感到奇怪直到你习惯它。概念上,NULL意味着“没有值”或“未知值”,且它被看作与众不同的值。为了测试NULL,你不能使用算术比较操作符例如=、<或!=。为了说明它,试试下列查询:

mysql> SELECT 1 = NULL, 1 <> NULL, 1 < NULL, 1 > NULL;

+----------+-----------+----------+----------+

| 1 = NULL | 1 <> NULL | 1 < NULL | 1 > NULL |

+----------+-----------+----------+----------+

| NULL | NULL | NULL | NULL |

+----------+-----------+----------+----------+

很显然你不能通过这些比较得到有意义的结果。相反使用IS NULL和IS NOT NULL操作符:

mysql> SELECT 1 IS NULL, 1 IS NOT NULL;

+-----------+---------------+

| 1 IS NULL | 1 IS NOT NULL |

+-----------+---------------+

| 0 | 1 |

+-----------+---------------+

请注意在MySQL中,0或NULL意味着假而其它值意味着真。布尔运算的默认真值是1。

对NULL的特殊处理即是在前面的章节中,为了决定哪个动物不再是活着的,使用death IS NOT NULL而不使用death != NULL的原因。

在GROUP BY中,两个NULL值视为相同。

执行ORDER BY时,如果运行ORDER BY ... ASC,则NULL值出现在最前面,若运行ORDER BY ... DESC,则NULL值出现在最后面。

NULL操作的常见错误是不能在定义为NOT NULL的列内插入0或空字符串,但事实并非如此。在NULL 表示"没有数值"的地方有数值。使用IS [NOT] NULL则可以很容易地进行测试,如下所示:

mysql> SELECT 0 IS NULL, 0 IS NOT NULL, '' IS NULL, '' IS NOT NULL;

+-----------+---------------+------------+----------------+ | 0 IS NULL | 0 IS NOT NULL | '' IS NULL | '' IS NOT NULL | +-----------+---------------+------------+----------------+

MYSQL数据库基本操作详细教程

MYSQL数据库 学习目标: ●掌握MYSQL基本知识 ●学习数据库管理和操作 ●掌握数据库设计方法 ●熟练运用SQL编程语言 基本概念 MYSQL数据库是关系型数据库。 关系型:使用一个关系,来表示实体信息和实体之间的联系。关系:就是二维表,有行有列的表格。 这两张表通过班级名称关联起来。 关系型数据库:就是由二维表及其之间的联系组成的数据组织。 同一个表中数据结构完全一致。 数据是由记录组成 记录是由字段组成。 SQL:结构化查询语言 专门用于处理关系型数据库编程语言。 PHP也是编程语言 变量,流程控制,函数

数据库服务器的结构 DBS = DBMS + DB 数据库系统= 数据库管理系统+ 数据库(数据) 命令行客户端

数据在服务器上是如何存储的? 操作服务器 通过服务管理来操作服务器 开始->运行-> 3306是MYSQL服务程序的默认端口号 可以用netstat –an命令查看服务是否启动

命令行命令控制服务器的启动和关闭 Net start mysql Net stop mysql 错误原因:没有权限 解决办法:用管理员方式启动命令行窗口 C/S, client / server客户端/服务器方式访问数据库命令行客户端工具

流程: 1.连接和认证,提供4个参数,分别是主机地址,端口号,用户名,密码 2.向MYSQL数据库服务器发送SQL 3.MYSQL服务器接收并执行SQL,并且把结果返回给客户端 4.客户端对结果进行显示 5.断开服务器连接。Exit, quit, \q 2,3,4这几步可以循环执行 知识: 非关系型数据库,NOSQL,not only sql 不仅仅是SQL 代表:redis, mongodb 数据存储有点象数组,key/value SQL语言 存储数据: 首先建立数据库 之后建立数据表(字段定义) 操作数据 数据有哪些操作 CURD CREATE UPDATE READ DELETE(DROP)

数据库mySQL教程

什么是 MySQL? ?
MySQL 是一种数据库。数据库定义了存储信息的结构。 在数据库中,存在着一些表。类似 HTML 表格,数据库表含有行、列以及单元。 在分类存储信息时,数据库非常有用。一个公司的数据库可能拥有这些表:"Employees", "Products", "Customers" 以及 "Orders"。
数据库表
数据库通常包含一个或多个表。每个表都一个名称(比如 "Customers" 或 "Orders")。 每个表包含带有数据的记录(行)。 下面是一个名为 "Persons" 的表的例子: LastName Hansen Svendson Pettersen FirstName Ola Tove Kari Address Timoteivn 10 Borgvn 23 Storgt 20 City Sandnes Sandnes Stavanger
上面的表含有三个记录 (每个记录是一个人) 和四个列 (LastName, FirstName, Address 以及 City)。
查询
通过 MySQL,我们可以向数据库查询具体的信息,并得到返回的记录集。 请看下面的查询:
SELECT LastName FROM Persons
上面的查询选取了 Persons 表中 LastName 列的所有数据,并返回类似这样的记录集: LastName Hansen Svendson

Pettersen
连接到一个 MySQL 数据库
在您能够访问并处理数据库中的数据之前,您必须创建到达数据库的连接。 在 PHP 中,这个任务通过 mysql_connect() 函数完成。 语法 mysql_connect(servername,username,password);
参数 servername username password 例子
描述 可选。规定要连接的服务器。默认是 "localhost:3306"。 可选。规定登录所使用的用户名。默认值是拥有服务器进程的用户的名称。 可选。规定登录所用的密码。默认是 ""。
在下面的例子中,我们在一个变量中 ($con) 存放了在脚本中供稍后使用的连接。如果连 接失败,将执行 "die" 部分:

Sql基础教程

SQL 基础
SQL 简介
SQL 是用于访问和处理数据库的标准的计算机语言。
什么是 SQL?
? ? ?
SQL 指结构化查询语言 SQL 使我们有能力访问数据库 SQL 是一种 ANSI 的标准计算机语言
编者注:ANSI,美国国家标准化组织
SQL 能做什么?
? ? ? ? ? ? ? ? ? ?
SQL 面向数据库执行查询 SQL 可从数据库取回数据 SQL 可在数据库中插入新的纪录 SQL 可更新数据库中的数据 SQL 可从数据库删除记录 SQL 可创建新数据库 SQL 可在数据库中创建新表 SQL 可在数据库中创建存储过程 SQL 可在数据库中创建视图 SQL 可以设置表、存储过程和视图的权限
SQL 是一种标准
SQL 是一门 ANSI 的标准计算机语言,用来访问和操作数据库系统。SQL 语句用于取回 和更新数据库中的数据。SQL 可与数据库程序协同工作,比如 MS Access、DB2、 Informix、MS SQL Server、Oracle、Sybase 以及其他数据库系统。 不幸地是,存在着很多不同版本的 SQL 语言,但是为了与 ANSI 标准相兼容,它们必须 以相似的方式共同地来支持一些主要的关键词(比如 SELECT、UPDATE、DELETE、 INSERT、WHERE 等等)。

注释:除了 SQL 标准之外,大部分 SQL 数据库程序都拥有它们自己的私有扩展!
RDBMS
RDBMS 指的是关系型数据库管理系统。 RDBMS 是 SQL 的基础,同样也是所有现代数据库系统的基础,比如 MS SQL Server, IBM DB2, Oracle, MySQL 以及 Microsoft Access。 RDBMS 中的数据存储在被称为表(tables)的数据库对象中。 表是相关的数据项的集合,它由列和行组成。
现代的 SQL 服务器构建在 RDBMS 之上。
DBMS - 数据库管理系统(Database Management System)
数据库管理系统是一种可以访问数据库中数据的计算机程序。 DBMS 使我们有能力在数据库中提取、修改或者存贮信息。 不同的 DBMS 提供不同的函数供查询、提交以及修改数据。
RDBMS - 关系数据库管理系统(Relational Database Management System)
关系数据库管理系统 (RDBMS) 也是一种数据库管理系统, 其数据库是根据数据间的关系来组织和访问数 据的。 20 世纪 70 年代初,IBM 公司发明了 RDBMS。 RDBMS 是 SQL 的基础,也是所有现代数据库系统诸如 Oracle、SQL Server、IBM DB2、Sybase、 MySQL 以及 Microsoft Access 的基础。
SQL 语法
数据库表
一个数据库通常包含一个或多个表。每个表由一个名字标识(例如“客户”或者“订单”)。表包含带有数据 的记录(行)。 下面的例子是一个名为 "Persons" 的表:
Id 1
LastName Adams
FirstName John
Address Oxford Street
City London

MySQL数据库基础与实例教程练习题参考答案

MySQL数据库基础与实例教程练习题参考答案 由于时间仓促,答案中难免存在错误,不妥之处恳请读者批评指正! 第一章答案 1.数据库管理系统中常用的数学模型有哪些? 数据库管理系统通常会选择某种“数学模型”存储、组织、管理数据库中的数据,常用的数学模型包括“层次模型”、“网状模型”、“关系模型”以及“面向对象模型”等。 2.您听说过的关系数据库管理系统有哪些?数据库容器中通常包含哪些数据库对象? 目前成熟的关系数据库管理系统主要源自欧美数据库厂商,典型的有美国微软公司的SQL Server、美国IBM公司的DB2和Informix、德国SAP公司的Sybase、美国甲骨文公司的Oracle。 数据库容器中通常包含表、索引、视图、存储过程、触发器、函数等数据库对象。 3.通过本章知识的讲解,SQL与程序设计语言有什么关系? SQL并不是一种功能完善的程序设计语言,例如,不能使用SQL构建人性化的图形用户界面(Graphical User Interface,GUI),程序员需要借助Java、VC++等面向对象程序设计语言或者HTML的FORM表单构建图形用户界面(GUI)。如果选用FORM表单构建GUI,程序员还需要使用JSP、PHP或者.NET编写Web应用程序,处理FORM表单中的数据以及数据库中的数据。 其他答案: 1、首先SQL语言是数据库结构化查询语言,是非过程化编程语言。而程序设计语言则有更多的面向对象及逻辑程序设计。比如用SQL语言编写图形用户界面(例如窗口、进度条),是无法实现的。 2、SQL语言可以说是,程序设计语言和数据库之间的一个翻译官。程序设计语言需要操作数据库时,需要借助(或者说调用)SQL语言来翻译给数据库管理系统。 3、不同数据库管理系统会有一些特殊的SQL规范,比如 limit关键词在SQL Server中无法使用。而这些规范与程序设计语言无关。 4.通过本章的学习,您了解的MySQL有哪些特点? 与题目2中列举的商业化数据库管理系统相比,MySQL具有开源、免费、体积小、便于安装,但功能强大等特点。 5.通过本章的学习,您觉得数据库表与电子表格(例如Excel)有哪些区别? 限于本章的知识点:外观上,关系数据库中的一个数据库表和一个不存在“合并单元格”的电子表格(例如Excel)相同。与电子表格不同的是:同一个数据库表的字段名不能重复。为了优化存储空间以及便于数据排序,数据库表的每一列必须指定某种数据类型。 关系数据库中的表是由列和行构成的,和电子表格不同的是,数据库表要求表中的每一行记录都必须是唯一的,即在同一张数据库表中不允许出现完全相同的两条记录。 6.您所熟知的数据库设计辅助工具有哪些?您所熟知的模型、工具、技术有哪些? 数据库设计辅助工有数据模型、数据建模工具、关系数据库设计技术。其中常用的数据模型有ER模型和类图;常用的数据建模工具如ERwin、PowerDesigner、Visio等;常用的关系数据库设计技术如数据库规范化技术。 1.模型 数据模型有E-R图或者类图等数据模型。业务模型有程序流程图、数据流程图DFD、时序

MySql数据库教学大纲

XX学院计算机系 《MySql数据库》课程教学大纲 一、课程的性质与任务 (一)本课程的性质 《数据库(一)》主要面向计算机软件技术专业、网络技术专业全体学生,是计算机软件技术、网络技术专业的一门专业基础课,是计算机专业的一门承前启后的、必修的专业课程。 (二)本课程的任务 本课程是计算机软件技术、网络技术专业的专业基础课程,主要与web网站系统的开发相结合,随着数据库技术的不断发展,掌握数据库的日常操作和维护是计算机相关专业学生必须具备的技能,因此该课程在计算机相关专业的学习中具有相当重要的地位。 二、课程的基本要求 通过学习《数据库(一)》这门课程,应使学生了解数据库的基础知识、MySQL数据库的安装和配置、MySQL的常用命令、数据库和表的操作、视图管理和函数管理等内容,并初步具备数据库开发和管理的能力。 三、课程内容 (一)课程内容 第1章理解数据库 了解:什么是数据、数据的描述 理解:数据模型的分类 掌握:数据的完整性 熟练掌握:数据库相关概念 教学重点:数据库系统的组成和结构 教学难点:数据库系统的体系结构 第2章设计数据库 了解:数据库设计的概述 理解:需求的分析

掌握:数据库的设计 熟练掌握:概念结构设计、逻辑结构设计 教学重点:数据库的物理设计 教学难点:数据库的物理设计 第3章创建数据库 了解:MySQL概述 理解:数据管理和数据库系统 掌握:MySQL的安装与配置 熟练掌握:数据库的创建、查看、修改和删除 教学重点:数据库的相关操作 教学难点:MySQL的配置与数据库的操作 第4章数据库的基本应用 了解:数据表的概述 理解:数据的完整性与字段约束 掌握:表的结构及表的操作 熟练掌握:表中数据的查询 教学重点:表中数据的查询、插入、修改与删除 教学难点:SQL语句的使用 第5章数据库的高级应用 了解:索引与视图的功能 理解:数据库的存储过程 掌握:索引与视图的创建 熟练掌握:MySQL常用函数的使用 教学重点:索引与视图的创建、MySQL常用函数 教学难点:MySQL编程 (二)实验、实训、实习内容 实训一:数据库基础 MySQL的安装(2学时) 实训内容:在MySQL下创建数据库、删除数据库、修改数据库 实训要求:在Windows下安装MySQL、配置并成功登录,能够独立完成数据库的相关操作。 实训方式:上机

MySQL入门教程(官方推荐)

MySQL教程(官方推荐) --很经典的教程 本节提供一个教程,帮助熟悉MySQL。在完成这个教程时,将创建一个样例数据库和这个数据库中的表,然后增加、检索、删除和修改信息与数据库进行交互。此外,在操作这个样例数据库的过程中,将能学到下列东西:■ 如何利用mysql客户机程序与MySQL通信。 ■ SQL 语言的基本语句。(如果您曾经使用过其他RDBMS,从而熟悉SQL,那么浏览一下这个教程,看看SQL 的MySQL版与您熟悉的版本有何差别也是很好的。)正如上一节所述, MySQL采用客户机/服务器体系结构,其中服务器运行在存放数据库的机器上,而客户机通过网络连接到服务器。这个教程主要基于mysql客户机的应用。mysql读取您的SQL 查询,将它们发送给服务器,并显示结果。mysql运行在MySQL所支持的所有平台上,并提供与服务器交互的最直接的手段,因此,它首先是一个逻辑上的客户机。 在本书中,我们将用samp_db 作为样例数据库的名称。但是有可能在您完成本例子的过程中需要使用另一个数据库名。因为可能在您的系统上已经有某个人使用了samp_db 这个名称,或者管理员给您指定了另一个数据库名称。在后面的例子中,无论是哪种情况,都用数据库的实际名称代替samp_db。表名可以像例子所显示的那样精确地使用,即使系统中的多个人都具有他们自己的样例数据库也是如此。顺便说一下,在MySQL中,如果有人使用了相同的表名也没什么关系。一旦各个用户都具有自己的数据库, MySQL将一直保留这些数据库名,防止各用户互相干扰。 1.4.1基本要求 为了试验这个教程中的例子,必须安装MySQL。特别是必须具有对MySQL客户机和某个MySQL服务器的访问权。相应的客户机程序必须位于您的机器上。至少需要有mysql程序,最好还有mysqlimport程序。服务器也可以位于您的机器上,尽管这不是必须的。实际上,只要允许连接到服务器,那么服务器位于何位置都没有关系。若服务器正巧运行在您的机器上,适当的客户机程序又已经安装,那么就可以开始试验了。如果您尚需设法搞到MySQL,可参阅附录A“获得和安装软件”的说明。如果您正自己安装MySQL,可参阅这一章,或把它给管理员看。如果网络访问是通过一个因特网服务商(ISP)进行的,那么可查看该服务商是否拥有MySQL。如果该ISP 不提供MySQL服务,可查看附录J“因特网服务商”以得到某些选择更适合的服务商的建议。 除MySQL软件外,还需要得到创建样例数据库及其表的权限。如果您没有这种权限,可以向MySQL管理员咨询。管理员可通过运行mysql并发布如下的命令提供这种权限: MySQL与mysql的区别

初学者使用MySQL_Workbench_创建数据库教程

初学者使用MySQL_Workbench_创建数据库 教程 MySQL Workbench 是 MySQL AB 最近释放的可视数据库设计工具。这个工具是设计 MySQL 数据库的专用工具。 MySQL Workbench 拥有很多的功能和特性;这篇由Djoni Darmawikarta 写的文章通过一个示例展现了其中的一些。我们将针对一个订单系统建立一个物理数据模型,这里的订单系统可以是销售单也可以是订单,并且使 用 forward-engineer(正向引擎)将我们的模型生成为一个 MySQL 数据库。 MySQL Workbench 是 MySQL 最近释放的可视数据库设计工具。这个工具是设计 MySQL 数据库的专用工具。 你在 MySQL Workbench 中建立的被称之为物理数据模型。一个物理数据模型是针对一个特定 RDBMS 产品的数据模型;本文中的模型将具有一些 MySQL 的独特规范。我们可以使用它生成(forward-engineer)数据库对象,除了包含表和列(字段)外,也可以包含视图。 MySQL Workbench 拥有很多的功能和特性;这篇由 Djoni Darmawikarta写的文章通过一个示例展现了其中的一些。我们将针对一个订单系统建立一个物理数据模型,这里的订单系统可以是销售单也可以是订单,并且使 用 forward-engineer(正向引擎)将我们的模型生成为一个 MySQL 数据库。我们的示例中使用 MySQL Workbench 创建的物理模型看上去就像下图这样:

创建订单方案(ORDER Schema) 首先让我们来创建一个保存订单物理模型的方案。点击 + 按钮(红色标注的地方)

mysql数据库教程

以前的blog服务器瘫痪后终于从客服那里拿回了数据,但是空间商给备份的数据库是一堆.frm,.myd,.myi文件,而现在恢复数据库要求导入.sql文件,我对数据库一窍不通,这可咋整。没办法,又得求助Google,倒腾…磨叽…倒腾……终于给解决了。 先说说这几种文件是干什么的,*.frm是描述了表的结构,*.myd保存了表的数据记录,*.myi则是表的索引。 现在将.frm,.myd,myi转换为.sql有两种方法: 1、把这些乱七八糟的文件一并复制到你的数据库的data下的数据库文件夹,直接就可以使用,无需转换为sql格式。前提是mysql的版本一致,字体一致。此方法简单快捷但不是没个人都能做到。其实根本就无法做到,除非你是在本地测试或者你是个人独霸一台服务器。像我这种用虚拟主机的,空间商一般是不会把数据库目录都给你让你去瞎折腾的,所以此方法基本无用,弃之。 2、在本地安装MySQL数据库,将.frm,.myd,myi转换为.sql,再导入即可。这种方法当然会麻烦一些了,首先得会安装MySQL才行。反正我不大会装,设置也不懂,干脆把安装MySQL的方法也贴在这儿吧,图我就不贴了,只贴文字和每一步要选择的选项,安装的MySQL为当前最新版本5.1.44。 安装MySQL: MySQL请自行下载,大概一百零几兆,下载后双击打开,出来欢迎安装界面,点Next,出来安装选项,有三种:Typical、Complete、Custom,默认是Typical,建议改成Custom,因为Typical模式不允许改变安装路径,只能安装在C盘(我介绍的就是Custom的安装方法)。点Next,到这一步需要选择要安装的组件和安装路径,组件就用默认的,安装路径自己选择,在根目录下最好,因为后面要用到Dos命令,这样方便。注意:安装mysql的路径中,不能含有中文!一切就绪后点Install,安装很快,完成后是介绍MySQL公司的界面,Next,Next,之后是Setup Wizard界面。帮助用户设置MySQL的,别以为装完了就没事了。这里有两个复选框,Configure the MySQL Server Now和Register the MySQL Server Now,把第二个对勾取消掉,它是让你注册的,没什么用。点Finish,下面开始配置MySQL。 配置MySQL: 又是欢迎界面,Next,看到两个选项,选择Detailed Configuration,点Next 继续,下面这个选项是选择mysql应用于何种类型,第一种是开发服务器,将只用尽量少的内存,第二种是普通WEB服务器,将使用中等数量内存,最后一种是这台服务器上面只跑mysql数据库,将占用全部的内存,我选择第二种,你可根据自己的需求,选择其他选项,点Next继续,下面是选择数据库用途,第一种是多功能用途,将把数据库优化成很好的innodb存储类型和高效率的myisam 存储类型,第二种是只用于事务处理类型,最好的优化innodb,但同时也支持myisam,最后一种是非事务处理类型,适合于简单的应用,只有不支持事务的

MySQL基础傻瓜式教程

MySQL基础傻瓜式教程 一、总述 本文是面向信息管理与信息系统的同学所做的傻瓜式教程,不会涉及太多IT技术细节,尤其不会涉及数据库底层的特点,更偏向于数据库的应用。 (一)信管的哪些同学需要安装MySQL? 1.觉得SQL Server过于笨重而转用轻量级数据库的使用者。 2.电脑不兼容SQL Server。 3.将SQL Server卸载后,由于注册表及其他残留未清理,导致无法再次安装上的。 4.有意试图在Linux系统开发数据库的。 (二)MySQL概述 MySQL是一款非常流行的轻量级数据库,其基本版(社区版)特点是开源、轻量、功能强大,然而它并非没有缺点,缺点会在后文中慢慢提到。 MySQL的相关产品很多,尤其近两年官方推出了一整套适用于各个层面使用的工具及插件,所以MySQL的使用相对于一两年前,MySQL的易用性获得了很大的提升,这也是推荐的原因。 相对于SQL Server,体积小是一大优势;相对于PostgreSQL,与中文用户的兼容性更好(本人安装PostgreSQL的时候,疯狂报错)。 二、下载安装MySQL 就像前文所说,MySQL的易用性有很大的提升。 其实,前两年,包括现在,很多教程依旧是推荐大家下载压缩包,然后通过配置文件和cmd命令行进行安装。 然而,如果你的志愿不是当一个专司实现数据库的码农(coding worker)或高级码农(senior coding worker, just kidding),或者只是想用数据库,对它的底层的大部分东西都表示不感兴趣,那么,本文应该比较适合你。

(一)下载MySQL 现在,想在Windows系统安装MySQL及相关插件,是一件非常简单的事情,MySQL推出的MySQL Installer就是一个管理官方的核心及插件的管理器。 进入网页:https://www.sodocs.net/doc/8c2648329.html,/downloads/installer/ 看到如图位置: 如果你是64bit用户,不用担心,包括installer在内,有很多插件只有32bit版,这部分插件是32bit和64bit版本的MySQL通用的,如果需要特别让64bit兼容的一定会有64bit版本。(比如,MySQL的JDBC驱动器,只显示32bit这一个版本,64位的MySQL和64bit的Java可以通过它完美连接。) 这里有两个版本,第一个比较小,第二个比较大。第一个就是installer的主体程序,installer的本质是一个下载+安装+配置一体化工具,所以可以直接从Installer下载安装包;第二个除了installer的主体程序之外,还集成了MySQL核心程序和所有windows下常用插件的安装包。如果你的下载速度很快的话,推荐下载第二个,通过installer直接下载,可能需要翻墙…… 另外,由于旧版本有一个很严重的,可以称之为Bug,所以请尽量用新版。 (二)安装MySQL 声明:本人本机是Win7 64bit,已经安装好MySQL,而我,懒得卸载重装,所以在一个WinXP 32bit的虚拟机上演示安装,演示使用时,会在本机演示,中途有不一样的东西请不要在意。(虚拟机的相关攻略会在未来放出) 打开installer,等待若干时间,出现如下界面:

mysql数据库安装及其使用教程.

mysql数据库下载和安装 注:本次我们选择的mysql数据的版本是5.5,大家也可以下载其他的版本进行安装。接下来的步骤图片的有点小,大家可以利用word自带的放大功能,进行放大查看。 第一部分:mysql数据库下载的详细步骤 第1步:在浏览器输入:https://www.sodocs.net/doc/8c2648329.html,/可以看到如图:1-1所示的界面 图1-1 第2步:我们依次选中Downloads、Community、MySQL Community Server后如图1-2所示,最后我们点击图中4圈出来的超链接,最后跳转到如图:1-3所示的界面。 图:1-2 第3步:在图1-3中我们选择对应的版本进行,下载。

本次我们选择下载的是用2标出的,因为我的电脑是64位的,如果电脑是32位的,选择下载用1标出来的。然后会跳转到如图1-4所示的界面。 提示:用1标出来的是:完整的32位Windows的msi安装程序。用2标出来的是:完整的64位Windows的msi安装程序。 第4步:在图1-4中,我们选择:No thanks, just start my download. 意思就是说直接下载 到这里,我们的下载步骤基本完成了,大家就耐心等待下载完成吧!! 提示:如何卸载按照默认路径安装mysql的方法: 如果,电脑中存在mysql数据库,而无法使用,则说明是安装不完成。则要卸载。

(1): 如果按照第二部分的方法进行安装,用一般的方法进行卸载,重启就可以清理干净,再重新安装。 (2): 如果按照的默认的路径安装mysql数据库,用一般的卸载方法是卸载不干净,再用一般方法卸载之后,还要按照下面的方法,进行操作。 图1: 在图1中,在组织中选择文件夹和搜索选项并打开,如图2所示,选择查看,再选择显示隐藏文件、文件夹和驱动器

MySQL数据库_教学大纲

《MySQL数据库》课程教学大纲 学时:64学时(其中:讲课学时:24 上机学时:40) 先修课程:计算机基础、java基础入门 后续课程:Java面向对象编程、JavaWeb程序开发入门 适用专业:信息及其计算机相关专业 开课部门:计算机科学技术学院 一、课程的性质与目标 《MySQL数据库》是面向计算机相关专业的一门专业基础课,涉及数据库基础知识、MySQL数据库的安装和配置、数据库和表的操作、事务管理、存储过程管理、视图管理、数据库的高级操作等内容,通过本课程的学习,学生能够了解数据库的基础知识,掌握MySQL的开发和管理技术。 二、课程的主要内容及基本要求 第一章数据库入门(4学时) [知识点] 数据库存储结构 SQL语言 MySQL安装与配置 MySQL目录结构 MySQL的使用 [重点] MySQL安装与配置 MySQL的使用 [难点] 数据库存储结构 [基本要求] 了解数据库的存储结构和SQL语言

掌握MySQL的安装、配置和使用 [实践与练习] 动手安装和配置MySQL数据库,熟悉MySQL的使用。 第二章数据库和表的基本操作(7学时) [知识点] 数据库的基本操作 数据类型 数据表的基本操作 表的约束 设置表的字段值自增 索引的创建和删除 [重点] 数据库的基本操作 数据类型 数据表的基本操作 表的约束 索引 [难点] 表的约束 索引 [基本要求] 掌握数据库的基本操作 掌握数据类型 掌握数据表的基本操作 掌握表的约束 掌握索引的创建和删除 [实践与练习] 建议考核课后习题,并安排上机,重点考核对数据库和数据表的操作以及索引的创建和删除。 第三章添加、更新与删除数据(6学时) [知识点]

mysql数据库安装及其使用教程

数据库下载和安装mysql ,大家也可以下载其他的版本进行安装。接下数据的版本是5.5注:本次我们选择的mysql ,进行放大查看。来的步骤图片的有点小,大家可以利用word自带的放大功能mysql第一部分:数据库下载的详细步骤 1-1所示的界面https://www.sodocs.net/doc/8c2648329.html,/第1可以看到如图:步:在浏览器输入: 图1-1 第2步:我们依次选中Downloads、Community、MySQL Community Server后如图1-2所示,最后我们点击图中4圈出来的超链接,最后跳转到如图:1-3所示的界面。 1-2 图 第3步:在图1-3中我们选择对应的版本进行,下载。 本次我们选择下载的是用2标出的,因为我的电脑是64位的,如果电脑是32位的,选择下载用1标出来的。然后会跳转到如图1-4所示的界面。 提示:用1标出来的是:完整的32位Windows的msi安装程序。用2标出来的是:完整的64位Windows的msi安装程序。

意思就是说直接下载No thanks, just start my download. 中,我们选择:1-4步:在图4第 到这里,我们的下载步骤基本完成了,大家就耐心等待下载完成吧!! 提示:如何卸载按照默认路径安装mysql的方法: 如果,电脑中存在mysql数据库,而无法使用,则说明是安装不完成。则要卸载。 (1): 如果按照第二部分的方法进行安装,用一般的方法进行卸载,重启就可以清理干净,再重新安装。 (2): 如果按照的默认的路径安装mysql数据库,用一般的卸载方法是卸载不干净,再用一般方法卸载之后,还要按照下面的方法,进行操作。

(Word修改版)MySql数据库入门教程

?MySql入门教程 ?一、连接MYSQL 格式:mysql -h 主机地址-u 用户名-p用户密码 1、例1:连接到本机上的MYSQL。 首先在打开DOS窗口,然后进入目录mysqlbin,再键入命令mysql-uroot-p,回车后提示你输密码,如果刚安装好MYSQL,终极用户root是没有密码的,故直接回车即 可进入到MYSQL中了,MYSQL的提示符是:mysql> 2、例2:连接到远程主机上的MYSQL。假设远程主机的IP为:110.110.110.110,用 户名为root,密码为abcd123。则键入以下命令: mysql -h110.110.110.110 -uroot-pabcd123 (注:u和root能不用加空格,其他也相同) 3、退出MYSQL 命令:exit(回车)二、修改密码 格式:mysqladmin -u 用户名-p 旧密码password新密码 1、例1:给root加个密码ab12。首先在DOS下进入目录mysqlbin,然后键入以下命 令 mysqladmin -uroot -passwordab12 注:因为开始时root没有密码,所以-p旧密码一项就能省略了。 2、例2:再将root的密码改为djg345。 mysqladmin -uroot -pab12 passworddjg345 三、增加新用户(注意:和上面不同,下面的因为是MYSQL环境中的命令,所以后面都带 一个分号作为命令结束符) 格式:grant select on 数据库.* to 用户名@登录主机identified by"密码" 例1、增加一个用户test1密码为abc,让他能在所有主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入MYSQL,然后键入以下命令:grant select,insert,update,delete on *.* to test1@"%" Identified by"abc"; 但例1增加的用户是十分危险的,你想如某个人知道test1的密码,那么他就能在

MySQL基础与实例教程教案

计算机与信息工程学院 教案 2015―2016学年度第1学期 课程名称 MySQL数据库 主讲教师孔祥盛 授课对象 2017计算机科学与技术1、2班 授课时间周一1、2、3、4 授课地点 A12-0304 A14-0321

教案(首页) 教案编写时间:

2.预留版面不够可另附页。

第1章数据库设计概述 一、教学目的: 【了解】:本章抛开MySQL讲解关系数据库设计的相关知识,以“选课系统”为例,讲解“选课系统”数据库的设计流程。 【掌握】:通过本章的学习,学生将具备一定的数据库设计能力 二、教学重点: 教学重点是E-R图的设计。 教学难点是关系数据库的设计。 三、教学难点: 教学难点是关系数据库的设计。 四、教学进程(含教学内容、教学方法、辅助手段、师生互动、时间分配、板书设计、作业布置等): 教学内容: 本章首先介绍数据库概述,然后介绍数据库设计的相关知识,并以选课系统E-R图为例介绍关系数据库的设计过程。通过本章的学习,读者可以了解关系数据库的设计流程。教学过程设计: 新课导入、案例教学、课堂讨论、作业讲评。 教学方法: 以多媒体讲授为主,适当结合提问、设问、讨论等方法。 内容提要: 1.1 数据库概述 1.1.1 关系数据库管理系统 1.1.2 关系数据库 1.1.3 结构化查询语言SQL 1.2 数据库设计的相关知识 1.2.1 商业知识和沟通技能 1.2.2 数据库设计辅助工具 1.2.3 “选课系统”概述 1.2.4 定义问题域 1.2.5 编码规范

1.3 E-R图 1.3.1 实体和属性 1.3.2 关系 1.3.3 E-R图的设计原则 1.4 关系数据库设计 1.4.1 为每个实体建立一张数据库表 1.4.2 为每张表定义一个主键 1.4.3 增加外键表示一对多关系 1.4.4 建立新表表示多对多关系 1.4.5 为字段选择合适的数据类型 1.4.6 定义约束(constraint)条件 1.4.7 评价数据库表设计的质量 1.4.8 使用规范化减少数据冗余 1.4.9 避免数据经常发生变化 4、课后小结和布置作业(5分钟) 讨论与思考: 1.数据库管理系统中常用的数学模型有哪些? 2.您听说过的关系数据库管理系统有哪些?数据库容器中通常包含哪些数据库对象? 3.通过本章知识的讲解,SQL与程序设计语言有什么关系? 4.通过本章的学习,您了解的MySQL有哪些特点? 5.通过本章的学习,您觉得数据库表与电子表格(例如Excel)有哪些区别?6.您所熟知的数据库设计辅助工具有哪些?您所熟知的模型、工具、技术有哪些?7.请您罗列出“选课系统”需要实现哪些功能,使用数据库技术能够解决“选课系统”中的哪些商业问题? 8.您所熟知的编码规范有哪些? 9.您是如何理解“E-R图中实体间的关系是双向的”?能不能举个例子? 10.E-R图中,什么是基数?什么是元?什么是关联?

MySQL数据库入门—教学大纲可打印

《MySQL数据库入门》课程教学大纲 一、课程的性质与目标 《MySQL数据库入门》是面向计算机相关专业的一门专业基础课,涉及数据库基础知识、MySQL数据库的安装和配置、数据库和表的操作、事务管理、存储过程管理、视图管理、数据库的高级操作等内容,通过本课程的学习,学生能够了解数据库的基础知识,掌握MySQL的开发和管理技术。 二、课程的主要内容及基本要求 第一章数据库入门(4学时) [知识点] 数据库存储结构 SQL语言 MySQL安装与配置 MySQL目录结构 MySQL的使用 [重点] MySQL安装与配置 MySQL的使用 [难点] 数据库存储结构 [基本要求] 了解数据库的存储结构和SQL语言 掌握MySQL的安装、配置和使用 [实践与练习]

动手安装和配置MySQL数据库,熟悉MySQL的使用。 第二章数据库和表的基本操作(8学时) [知识点] 数据库的基本操作 数据类型 数据表的基本操作 表的约束 设置表的字段值自增 索引的创建和删除 [重点] 数据库的基本操作 数据类型 数据表的基本操作 表的约束 索引 [难点] 表的约束 索引 [基本要求] 掌握数据库的基本操作 掌握数据类型 掌握数据表的基本操作 掌握表的约束 掌握索引的创建和删除 [实践与练习] 建议考核课后习题,并安排上机,重点考核对数据库和数据表的操作以及索引的创建和删除。 第三章添加、更新与删除数据(8学时) [知识点] 添加数据

更新数据 删除数据 [重点] 添加数据 更新数据 删除数据 [难点] 添加数据 更新数据 删除数据 [基本要求] 掌握向表中添加、更新和删除数据 [实践与练习] 建议上机动手添加、更新和删除数据,掌握MySQL提供的数据库操作语言,包括插入数据的INSERT语句,更新数据的UPDATE语句以及删除数据的DELETE语句。 第四章单表查询(8学时) [知识点] SELECT语句 按条件查询 聚合函数 对查询结果排序 分组查询 使用LIMIT限制查询结果的数量 函数 为表和字段取别名 [重点] SELECT语句 按条件查询 聚合函数 对查询结果排序

Mysql基础操作笔记

MySql 入门教程 一、连接MYSQL 格式:mysql -h 主机地址-u 用户名-p 用户密码 1、例1:连接到本机上的MYSQL。 首先在打开DOS 窗口,然后进入目录mysqlbin,再键入命令mysql -uroot -p, 回车后提示你输密码,如果刚安装好MYSQL,终极用户root 是没有密码的,故直 接回车即可进入到MYSQL 中了,MYSQL 的提示符是:mysql> 2、例2:连接到远程主机上的MYSQL。假设远程主机的IP为:110.110.110.110, 用户名为root,密码为abcd123。则键入以下命令: mysql -h110.110.110.110 -uroot -pabcd123 (注:u 和root 能不用加空格,其他也相同) 3、退出MYSQL 命令:exit (回车) 二、修改密码 格式:mysqladmin -u 用户名-p 旧密码password 新密码 1、例1:给root 加个密码ab12。首先在DOS 下进入目录mysqlbin,然后键入以下命令 mysqladmin -uroot -password ab12 注:因为开始时root 没有密码,所以-p 旧密码一项就能省略了。 2、例2:再将root 的密码改为djg345。 mysqladmin -uroot -pab12 password djg345 三、增加新用户(注意:和上面不同,下面的因为是MYSQL 环境中的命令,所以后面 都带一个分号作为命令结束符) 格式:grant select on 数据库.* to 用户名@登录主机identified by "密码" 例1、增加一个用户test1 密码为abc,让他能在所有主机上登录,并对所有数据库有 查询、插入、修改、删除的权限。首先用以root 用户连入MYSQL,然后键入以下命令:grant select,insert,update,delete on *.* to test1@"%" Identified by "abc"; 但例1 增加的用户是十分危险的,你想如某个人知道test1 的密码,那么他就能在Generated by Foxit PDF Creator ? Foxit Software https://www.sodocs.net/doc/8c2648329.html, For evaluation only. internet 上的所有一台计算机上登录你的mysql 数据库并对你的数据能为所欲为了,解决办 法见例2。 例2、增加一个用户test2 密码为abc,让他只能在localhost 上登录,并能对数据库mydb 进行查询、插入、修改、删除的操作(localhost 指本地主机,即MYSQL 数据库所在的那台主机),这样用户即使用知道test2 的密码,他也无法从internet 上直接访问数据库,只能通过MYSQL 主机上的web 页来访问了。 grant select,insert,update,delete on mydb.* to test2@localhost identified by "abc"; 如果你不想test2 有密码,能再打一个命令将密码消掉。 grant select,insert,update,delete on mydb.* to test2@localhost identified by ""; 下面来看看MYSQL 中有关数据库方面的操作。注意:必须首先登录到MYSQL 中,以 下操作都是在MYSQL 的提示符下进行的,而且每个命令以分号结束。 又一篇安装的文章

MySql入门教程

MySql入门教程 一、连接MYSQL 格式:mysql -h主机地址-u用户名-p用户密码 1、例1:连接到本机上的MYSQL。 首先在打开DOS窗口,然后进入目录mysqlbin,再键入命令mysql -uroot -p,回车后提示你输密码,如果刚安装好MYSQL,终极用户root是没有密码的,故直 接回车即可进入到MYSQL中了,MYSQL的提示符是:mysql> 2、例2:连接到远程主机上的MYSQL。假设远程主机的IP为:110.110.110.110, 用户名为root,密码为abcd123。则键入以下命令: mysql -h110.110.110.110 -uroot -pabcd123 (注:u和root能不用加空格,其他也相同) 3、退出MYSQL命令:exit (回车) 二、修改密码 格式:mysqladmin -u用户名-p旧密码password 新密码 1、例1:给root加个密码ab12。首先在DOS下进入目录mysqlbin,然后键入以下命 令 mysqladmin -uroot -password ab12 注:因为开始时root没有密码,所以-p旧密码一项就能省略了。 2、例2:再将root的密码改为djg345。 mysqladmin -uroot -pab12 password djg345 三、增加新用户(注意:和上面不同,下面的因为是MYSQL环境中的命令,所以后面 都带一个分号作为命令结束符) 格式:grant select on 数据库.* to 用户名@登录主机identified by "密码" 例1、增加一个用户test1密码为abc,让他能在所有主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入MYSQL,然后键入以下命令:grant select,insert,update,delete on *.* to test1@"%" Identified by "abc"; 但例1增加的用户是十分危险的,你想如某个人知道test1的密码,那么他就能在

相关主题