创建和使用数据库

一旦知道如何输入SQL语句,就可以访问数据库了。

假设你家中有几只宠物(你的动物园),并且你希望跟踪有关它们的各种类型的信息。你可以通过创建表来保存数据并使用所需信息加载数据,然后,你可以通过从表中检索数据来回答有关你的动物的各种问题,本节介绍如何执行以下操作:

  • 创建一个数据库
  • 创建一个表
  • 将数据加载到表中
  • 以各种方式从表中检索数据
  • 使用多个表

动物园数据库很简单(故意),但要想到可能使用类似数据库的真实情况并不困难。例如,农民可以使用这样的数据库跟踪牲畜,或由兽医跟踪患者记录,可以从MySQL网站获得包含以下部分中使用的一些查询和样本数据的动物园发行版,它通过https://dev.mysql.com/doc/以压缩tar文件和Zip格式提供。

使用SHOW语句查找服务器上当前存在的数据库:

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

mysql数据库描述了用户访问权限,test数据库通常可用作工作空间供用户试用。

语句显示的数据库列表可能在你的计算机上有所不同,如果你没有SHOW DATABASES权限,SHOW DATABASES不会显示你没有权限的数据库。

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

mysql> USE testDatabase changed

QUIT一样,USE不需要分号(如果你愿意,你可以用分号终止这样的语句,它没有坏处)。USE语句在另一方面也是特殊的:它必须在一行上给出。

对于后面的示例,你可以使用测试数据库(如果你有权访问它),但是你在该数据库中创建的任何内容都可以被其他任何有权访问它的人删除。因此,你可能应该要求MySQL管理员允许使用你自己的数据库,假设你想调用你的menagerie,管理员需要执行如下语句:

mysql> GRANT ALL ON menagerie.* TO 'your_mysql_name'@'your_client_host';

其中your_mysql_name是分配给你的MySQL用户名,your_client_host是连接到服务器的主机。

创建和选择数据库

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

mysql> CREATE DATABASE menagerie;

在Unix下,数据库名称区分大小写(与SQL关键字不同),因此你必须始终将数据库作为menagerie引用,而不是MenagerieMENAGERIE或其他一些变体,表名也是如此。在Windows下,此限制不适用,但你必须在给定查询中使用相同的大小写引用数据库和表,但是,由于各种原因,建议的最佳做法始终是使用创建数据库时使用的相同字母。

如果你尝试创建数据库时收到错误,例如ERROR 1044 (42000): Access denied for user 'micah'@'localhost' to database 'menagerie',这意味着你的用户帐户没有必要的权限。

创建数据库不会选择它来使用,你必须明确地这样做,要使menagerie成为当前数据库,请使用以下语句:

mysql> USE menagerieDatabase changed

你的数据库只需创建一次,但每次开始mysql会话时都必须选择它才能使用,你可以通过发出USE语句来执行此操作,如示例中所示。或者,你可以在调用mysql时在命令行上选择数据库,只需在你可能需要提供的任何连接参数之后指定其名称,例如:

shell> mysql -h host -u user -p menagerieEnter password: ********
刚刚显示的命令中的menagerie不是你的密码,如果要在-p选项后的命令行上提供密码,则必须在没有中间空间的情况下执行此操作(例如,-ppassword,而不是-p password)。但是,建议不要在命令行中输入密码,因为这样做会让登录到你机器上的其他用户窥探密码。
你可以随时使用SELECT DATABASE()查看当前选择的数据库。