2009年11月29日(mysql_3)

来源:互联网 发布:怎么找到我的淘宝店铺 编辑:程序博客网 时间:2024/04/30 14:55

如果你发生了这种情况的话,大部分可能是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语句,然后你按回车并等待结果,那么什么也不会发生。与其说怀疑查询花了很长时间,不如注意一下被提供的提示'>。提示告诉你mysql期待看到一个无终端的字符串剩余部分。(你发现语句的错误吗?那个字符串'Smith AND age<30落下了第二个单引号。)

基于此,你该做什么呢?最简单的就是消除这条命令。然而,在此你不能仅仅只用\c,因为mysql把它解释作为字符串的另一部分。所以,我们可以输入关闭的字符(这样mysql

就知道你已经完成字符串了),然后/c

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

'>'\c

mysql>

这样提示就回到mysql>了,就表示mysql已经为新的指令准备好了。

`>提示和'>和">提示是差不多的,但是`>提示你的是你已经开始但没有完成一个backtick-quoted标识符。

知道`>,'>,">提示表示什么是很重要的,你可能错误的输入了一个无终端的字符串,任意行行后你的输入被mysql给忽略——包括包含QUIT的行。这可能就会比较困惑,特别是如果你不知道在你消除当前指令时你应该先提供结束引用。

 

.3创建和使用数据库

一旦你知道如何输入命令,就可以准备存取数据库了。

设想在你家里你有一些宠物并且你要跟踪关于它们的各种信息。你能创建表格,支持和添加你的数据关于被需要的信息。然后你能回答关于你的动物的不同种类的问题通过从表格中获取数据。这部分你应该:

    创建数据库

    创建表格

    往表格中加入数据

    通过各种形式从表格中获取数据

    使用多个表格

这个动物园数据库是很简单的(道理上而言),但是不难想出真实世界中简单形式的数据库使用的情况。例如,一个像这样的数据库可以被一个农民用来跟踪家禽,或者一个兽医用来跟踪病人的记录。一个动物园分布包括一些查询和在mysql站点中接下来的被提到的使用的简单数据。在http://dev.mysql.com/doc是压缩文件和zip形式。

使用SHOW语句来显示存在服务器中的数据库

mysql> SHOW DATABASES;+----------+| Database |+----------+| mysql    || test     || tmp      |+----------+

Mysql数据库描述用户存取的特权。Test数据库经常被用作用户尝试事务的区域。

这条语句后数据库的列表可能与你电脑上显示的不一样;SHOW DATABASES不能显示一些你没有SHOW DATABASES权限的数据库。查考第12.5.5.11部分“SHOW DATABASES 语法”。

如果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你连接的服务器的主机。

..1创建和选择数据库

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

mysql>CREATE DATABASE menagerie;

在Unix中数据库名是灵敏的(不限SQL关键字),所以你你必须用menagerie指定你的数据库,而不可以使Menagerie,MENAGERIE或另一些变型。对于表名也一样。(在Windows下,这些限制就不适用啦,即使你应该在一个给定的查询中对于一个数据库或表格用一致的大小写。然而,由于各种原因,我们被提到的最好的练习总是用和创建时一致的字符型式。)

Note

在你尝试创建一个数据库的时候,如果你遇到像这样的错误ERROR 1044(42000):Access denied for user ‘monty’@’localhost’to database ‘menagerie’,意味着你的用户帐号没有这样操作的必需的权限。与管理员讨论或看看第5.4节,“The MySQL Access Privilege System”。

创建一个数据库以后并没有为使用而选中;你应该明确地去做。为了使用menagerie数据库,可使用这样的命令

Mysql>USE menagerie;

Database changed

你的数据库一旦被创建以后,但是你应该在你开始用mysql会话时,每次你应该选择它。你能执行USE语句像例子之中那样,或者,你能在行驶mysql时选择数据库在命令行选择数据库。你需要在连接属性的后面加入名字。例如:

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

Enter password: *******

注意menagerie在命令并不是你的密码。如果你想提供你的密码在命令行中是在-p选项之后,你应该没有间隔空间(例如,-pmypassword,而不是-p mypassword)。

然而,在命令行不被建议你的密码,因为对登陆你的机子的其他用户这样做的话就曝光了。