MySQL使用教程(二)

来源:互联网 发布:iphone软件无法验证 编辑:程序博客网 时间:2024/05/16 11:16

3.3. 建并使用数据

3.3.1.建并选择数据

3.3.2.建表

3.3.3.将数据装入表中

3.3.4.从表索信息

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

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

·         建数据

·         建数据

·         数据到数据

·         以各方法从表中索数据

·         使用多个表

物园数据简单(特意的),但是不把它想象成可能用到似数据的真世界情况。例如,夫可以使用这样的一个数据来追踪家畜,或者医可以用它跟踪病畜记录。从MySQL网址上可以得后面章中将用到的含有部分查询例数据的物园分。有tar压缩格式 (http://downloads.mysql.com/docs/menagerie-db.tar.gz)Zip压缩格式 (http://downloads.mysql.com/docs/menagerie-db.zip)

使用SHOW句找出服器上当前存在什数据

mysql> SHOW DATABASES;

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

| Database |

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

| mysql    |

| test     |

| tmp      |

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

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

注意如果没有SHOWDATABASES限,不能看所有数据。参13.5.1.3“GRANTREVOKE

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

mysql> USE test

Database changed

注意,USEQUIT,不需要一个分号。(如果你喜,你可以用一个分号这样句;无碍)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访问数据,而不能用MenagerieMENAGERIE或其它一些量。表名也是这样的。(在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. 建表

建数据是很容易的部分,但是在这时它是空的,正如SHOWTABLES将告你的:

mysql> SHOW TABLES;

Empty set (0.00 sec)

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

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

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

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

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

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

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

mysql> CREATE TABLE pet (nameVARCHAR(20), owner VARCHAR(20),

    -> speciesVARCHAR(20), sex CHAR(1), birth DATE, death DATE);

VARCHAR适合于nameownerspecies列,因变长的。些列的度不必都相同,而且不必是20。你可以挑165535的任何度,从中选择一个最合理的。(如果选择得不合适,后来明你需要一个更的字段,MySQL提供一个ALTERTABLE句。)

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

然,birthdeath应选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 DATAINSERT句可以完成

假定你的纪录描述如下。(假定在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

1979-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),并且以CREATETABLE句中列出的列次序出。失的(例如未知的性,或仍然活着的物的死亡日期),你可以使用NULL了在你的文本文件中表示些内容,使用\N(反斜线,字母N。例如,Whistler记录应为(的空白是一个定位符)

name

owner

species

sex

birth

death

Whistler

Gwen

bird

\N

1997-12-09

\N

要想将文本文件“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 TERMINATEDBY '\r\n';

(在运行OS XApple机上,使用行束符'\r'。)

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

如果该语句失,可能是你安装的MySQL不与使用默认值的本地文件兼容。于如何更改5.6.4“LOADDATA LOCAL安全问题

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

mysql> INSERT INTO pet

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

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

个例子,你应该能看到及很多的入用多个INSERT句而非LOAD DATA句装你的初始记录


0 0
原创粉丝点击