热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

MySQL中文参考手册--创造并使用一个数据库_MySQL

既然你知道怎样输入命令,现在是存取一个数据库的时候了。假定在你的家(你的“动物园”)中有很多宠物,并且你想追踪关于他们各种各样类型的信息。你可以通过创建表来保存你的数据并根据所需要的信息装载他们做到,然后你可以通过从表中检索数据来回答关于你的动物不同
手册


  既然你知道怎样输入命令,现在是存取一个数据库的时候了。
  
  假定在你的家(你的“动物园”)中有很多宠物,并且你想追踪关于他们各种各样类型的信息。你可以通过创建表来保存你的数据并根据所需要的信息装载他们做到,然后你可以通过从表中检索数据来回答关于你的动物不同种类的问题。本节显示如何做到所有这些事情:
  
  怎样创建一个数据库
  怎样创建一个数据库表
  怎样装载数据到数据库表
  怎样以各种方法从表中检索数据
  怎样使用多个表
  动物园数据库将会是简单的(故意的),但是不难把它想象成可能用到相似类型数据库的真实世界情况。例如,这样的一个数据库能被一个农夫用来追踪家畜,或由一个兽医追踪病畜记录。
  
  使用SHOW语句找出在服务器上当前存在什么数据库:
  
  mysql> SHOW DATABASES;
  +----------+
  | Database |
  +----------+
  | mysql  |
  | test   |
  | tmp   |
  +----------+
  
  数据库列表可能在你的机器上是不同的,但是mysql和test数据库很可能的在其间。mysql是必需的,因为它描述用户存取权限,test数据库经常作为一个工作区提供给用户试试身手。
  
  如果test数据库存在,尝试存取它:
  
  mysql> USE test
  Database changed
  
  注意,USE,类似QUIT,不需要一个分号。(如果你喜欢,你可以用一个分号终止这样的语句;这无碍)USE语句在使用上也有另外一个特殊的地方:它必须在一个单行上给出。
  
  你可列在后面的例子中使用test数据库(如果你能访问它),但是你在该数据库创建的任何东西可以被与访问它的其他人删除,为了这个原因,你可能应该询问你的MySQL管理员许可你自己使用的一个数据库。假定你想要调用你的menagerie,管理员需要执行一个这样的命令:
  
  mysql> GRANT ALL ON menagerie.* TO your_mysql_name;
  
  这里your_mysql_name是分配给你的MySQL用户名。
  
  8.4.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)。然而,不建议把你的口令放在命令行上,因为这样做把它暴露出来,能被在你的机器上登录的其他用户窥探到。
  
  8.4.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到255的任何长度,无论哪个对你来说好象最合理。(如果你做了较差的选择,以后会变得你需要一个更长的字段,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,例如,如果你忘记在你表中的列的名字或他们是什么类型。
  
  8.4.3 将数据装入一个数据库表
  在你创建表后,你需要充实它。LOAD DATA和INSERT语句用于此。
  
  假定你的宠物纪录描述如下。(观察到MySQL期望日期时以YYYY-MM-DD格式;这可能与你习惯的不同。)
  
  name owner species sex birth death 
  Fluffy Harold cat f 1993-02-04  
  Claws Gwen cat m 1994-03-17  
  Buffy Harold dog f 1989-05-13  
  Fang Benny dog m 1990-08-27  
  Bowser Diane dog m 1998-08-31 1995-07-29 
  Chirpy Gwen bird f 1998-09-11  
  Whistler Gwen bird   1997-12-09  
  Slim Benny snake m 1996-04-29  
  
  因为你是从一张空表开始的,充实它的一个容易方法是创建包含为你的动物各一行一个文本文件,然后用一个单个语句装载文件的内容到表中。
  
  你可以创建一个文本文件“pet.txt”,每行包含一个记录,用定位符(tab)把值分开,并且以在CREATE TABLE语句中列出的列次序给出。对于丢失的值(例如未知的性别,或仍然活着的动物的死亡日期),你可以使用NULL值。为了在你的文本文件表示这些,使用\N。例如,对Whistler鸟的记录看起来像这样的(这里在值之间的空白是一个单个的定位字符):
  
  Whistler Gwen bird \N 1997-12-09 \N 
  
  为了装载文本文件“pet.txt”到pet表中,使用这个命令:
  
  mysql> LOAD DATA LOCAL INFILE "pet.txt" INTO TABLE pet;
  
  如果你愿意,你能明确地在LOAD DATA语句中指出列值的分隔符和行尾标记,但是缺省是定位符和换行符。这些对争取读入文件“pet.txt”的语句是足够的。
  
  当你想要一次增加一个新记录时,INSERT语句是有用的。在它最简单的形式,你为每一列提供值,以列在CREATE TABLE语句被列出的顺序。假定Diane把一只新仓鼠命名为Puffball,你可以使用一个这样INSERT语句增加一条新记录:
  
  mysql> INSERT INTO pet
    -> VALUES ('Puffball','Diane','hamster','f','1999-03-30',NULL);
  
  注意,这里字符串和日期值被指定为引号扩起来的字符串。另外,用INSERT,你能直接插入NULL代表不存在的值。你不能使用\N,就像你用LOAD DATA做
推荐阅读
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 推荐一个ASP的内容管理框架(ASP Nuke)的优势和适用场景
    本文推荐了一个ASP的内容管理框架ASP Nuke,并介绍了其主要功能和特点。ASP Nuke支持文章新闻管理、投票、论坛等主要内容,并可以自定义模块。最新版本为0.8,虽然目前仍处于Alpha状态,但作者表示会继续更新完善。文章还分析了使用ASP的原因,包括ASP相对较小、易于部署和较简单等优势,适用于建立门户、网站的组织和小公司等场景。 ... [详细]
  • 本文介绍了如何在MySQL中将零值替换为先前的非零值的方法,包括使用内联查询和更新查询。同时还提供了选择正确值的方法。 ... [详细]
  • 在数据分析工作中,我们通常会遇到这样的问题,一个业务部门由若干业务组构成,需要筛选出每个业务组里业绩前N名的业务员。这其实是一个分组排序的 ... [详细]
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • 本文由编程笔记小编整理,介绍了PHP中的MySQL函数库及其常用函数,包括mysql_connect、mysql_error、mysql_select_db、mysql_query、mysql_affected_row、mysql_close等。希望对读者有一定的参考价值。 ... [详细]
author-avatar
手机用户2702935927
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有