mysql8.0创建⼀个表_【数据库】8.0MySQL⼊门学习(⼋)
——创建并使⽤数据库、。。。
1.0 使⽤SHOW语句出服务器上当前存在什么数据库:
mysql> SHOW DATABASES;
每台机器上的数据库列表是不同的,但是很可能有mysql和test数据库。mysql是必需的,因为它描述⽤户访问权限,test数据库经常作为⽤户试⾝⼿的⼯作区。
可见我的数据库⾥⾯没有test。
2.0 没有就⾃⼰创建:
现在假设⼀个场景,假定在⼀个⼩动物园中有很多宠物,现在想跟踪关于它们各种类型的信息。我们通
过创建表来保存数据并根据所需要的信息装载他们,然后可以从表中检索数据来回答关于动物不同种类的问题。
在Unix下,数据库名称是区分⼤⼩写的(不像SQL关键字),因此你必须总是以menagerie访问数据库,⽽不能⽤Menagerie、MENAGERIE或其它⼀些变量。
对表名也是这样的。(在Windows下,该限制不适⽤,尽管你必须在⼀个给定的查询中使⽤同样的⼤⼩写来引⽤数据库和表。但是,由于多种原因,作为最好的惯例,⼀定要使⽤与数据库创建时的同样的⼤⼩写。)
mysql> CREATE DATABASE menagerie;
3.0 menagerie(⼩动物园)数据库我们可以访问它:
mysql>USE menagerie
USE,类似QUIT,不需要⼀个分号。(如果你喜欢,你可以⽤⼀个分号终⽌这样的语句;这⽆碍)USE语句在使⽤上也有另外⼀个特殊的地⽅:它必须在⼀个单⾏上给出。
数据库只需要创建⼀次,但是必须在每次启动mysql会话时在使⽤前先选择它。你可以根据上⾯的例⼦执⾏⼀个USE语句来实现。还可以在调⽤mysql时,通过命令⾏选择数据库,只需要在提供连接参数之后指定数据库名称。例如:
shell> mysql -h host -u user -p menagerie
Enter password: ********
注意,刚才显⽰的命令⾏中的menagerie不是你的 密码。如果你想要在命令⾏上在-p选项后提供 密码,则不能插⼊空格(例如,如-pmypassword,不是-p mypassword)。但是,不建议在命令⾏输⼊密码,因为这样会暴露 密码,能被在机器上登录的其它⽤户窥探到。
4.0 在该数据库创建的任何东西可以被访问它的其它⼈删除,因此,你应该询问MySQL管理员许可你使⽤⾃⼰的⼀个数据库。假定你想要调⽤你的menagerie,管理员需要执⾏这样⼀条命令:
mysql> GRANT ALL ON menagerie.* TO 'your_mysql_name'@'your_client_host';
这⾥your_mysql_name是分配给你的MySQL⽤户名,your_client_host是所连接的服务器所在的主机。
5.0 创建数据库是很容易的部分,但是在这时它是空的,正如SHOW TABLES将告诉你的:
mysql> SHOW TABLES;
6.0 较难的部分是决定你的数据库结构应该是什么:你需要什么数据库表,各数据库表中有什么样的列。
根据假设,我现在包含每个宠物记录的表,命名为pet表。它可能存在某些信息:
名字    动物的主⼈  种类  性别  年龄
其中,年龄⽐较特殊,年龄随着时间流逝⽽变化,这意味着你将要不断地更新你的记录。单独存储⼀个年龄某个数据很显然不是很好的解决⽅案,相反, 存储⼀个固定值例如⽣⽇⽐较好,那么,⽆论何时你需要年龄,可以以当前⽇期和出⽣⽇期之间的差来计算它。MySQL提供了⽇期运算函数,因此这并不困难。存储出⽣⽇期⽽⾮年龄还有其它优点:
你可以使⽤数据库完成这样的任务,例如⽣成即将到来的宠物⽣⽇的提⽰。
你可以相对于⽇期⽽不⽌是当前⽇期来计算年龄。例如,如果你在数据库存储死亡⽇期,你能很容易地计算出⼀只宠物死时有多⼤。
那么我们的数据库pet表内元素优化为:
名字    动物的主⼈  种类  性别  出⽣和死亡⽇期
7.0 使⽤⼀个CREATE TABLE语句指定你的数据库表的布局:
mysql> CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20),
-> species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);
可以随时使⽤DESCRIBE,例如,如果忘记表中的列的名称或类型时。
8.0 创建表后,需要填⼊内容。通过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
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
9.0 填充这么多数据⼀⾏⾏输⼊时很笨的⽅法。因为是从⼀个空表开始的,填充它的⼀个简易⽅法是创建⼀个⽂本⽂件,每个动物各⼀⾏,然后⽤⼀个语句将⽂件的内容装载到表中。
创建⼀个⽂本⽂件“”,每⾏包含⼀个记录,⽤定位符(tab)把值分开,并且以CREATE TABLE语句中列出的列次序给出。对于丢失的值(例如未知的性别,或仍然活着的动物的死亡⽇期),你可以使⽤NULL值。为了在你的⽂本⽂件中表⽰这些内容,使⽤\N(反斜线,字母N)。例如,Whistler鸟的记录应为(这⾥值之间的空⽩是⼀个定位符):
要想将⽂本⽂件“”装载到pet表中,使⽤这个命令:
mysql> LOAD DATA LOCAL INFILE '/' INTO TABLE pet;
请注意如果⽤Windows中的编辑器(使⽤\r\n做为⾏的结束符)创建⽂件,应使⽤:(在运⾏OS X的Apple机上,应使⽤⾏结束符'\r'。)
mysql> LOAD DATA LOCAL INFILE '/' INTO TABLE pet
-> LINES TERMINATED BY '\r\n';
(在运⾏OS X的Apple机上,应使⽤⾏结束符'\r'。)
<⽂件,放在G盘下⾯)(⾥⾯的空格都是按Tab键,不是⼀个或很多空格键造成的)。
第⼀次执⾏命令时,报出这样的错误:
原因是txt⽂件保存时默认ANSI格式,我们需要改成和mysql要求的格式utf-8⼀样的:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。