没有合适的资源?快使用搜索试试~ 我知道了~
Mysql学习-生成数据库和表及应用数据库.pdf
需积分: 1 0 下载量 191 浏览量
2024-06-13
07:39:35
上传
评论
收藏 559KB PDF 举报
温馨提示
试读
27页
mysql创建数据库和表及其应用
资源推荐
资源详情
资源评论
Mysql
学习——生成数据库和表及应用数据库
一旦你知道了如何输入 SQL 语句,你就准备好访问数据库了。
假设你家里养了几只宠物(你的动物园),你想跟踪关于它们的各种信息。你可以
通过创建表来保存你的数据,并用所需的信息加载它们。然后,你可以通过从表中
检索数据来回答关于你的动物的不同问题。本文将向你展示如何执行以下操作:
1. 创建一个数据库
2. 创建一个表
3. 将数据加载到表中
4. 以各种方式从表中检索数据
5. 使用多个表
这个动物园数据库很简单(故意的),但不难想象在现实世界中类似类型的数据库
可能被使用的情况。例如,农民可以使用这样的数据库来跟踪牲畜,或者兽医可以
使用它来跟踪病历。包含以下部分中使用的一些查询和样本数据的动物园分发可以
从
MySQL
网站获得。它可以以压缩的
tar
文件和
Zip
格式在
https://dev.mysql.com/doc/
上获得。
使用 SHOW 语句查找服务器上当前存在的数据库:
mysql> SHOW DATABASES;
+----------+
| Database |
+----------+
| mysql |
| test |
| tmp |
+----------+
mysql
数据库描述了用户访问权限。
test
数据库通常作为用户尝试操作的工作区。
在你的机器上,通过该语句显示的数据库列表可能有所不同;如果你没有
SHOW
DATABASES
权限,那么
SHOW DATABASES
将不会显示你没有权限的数据库。参见
“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 是您用来连接到 MySQL 服务器的主机名或 IP 地址。这些信息
对于配置 MySQL 用户权限和连接参数至关重要。
通常,在 MySQL 中,用户权限是基于用户名和来源主机的组合来定义的。这意味
着同一个用户名从不同的主机连接时,可能会有不同的权限。例如,MySQL 管理员
可以为用户 your_mysql_name 从 your_client_host 连接时分配特定的权限。
1 生成和选择一个数据库
如果管理员在设置你的权限时为你创建了数据库,你可以直接开始使用它。否则,
你需要自己创建数据库。
mysql> CREATE DATABASE menagerie;
在
Unix
系统下,数据库名称是区分大小写的(与
SQL
关键字不同),所以你必须
始终将你的数据库称为 menagerie,而不是 Menagerie、MENAGERIE 或其他变体。这也
适用于表名。(在
Windows
系统下,这个限制不适用,尽管在给定的查询中,你必
须始终使用相同的大小写来引用数据库和表。然而,出于各种原因,推荐的最佳实
践是始终使用创建数据库时使用的大小写。)
注意:
如果在尝试创建数据库时出现类似 ERROR 1044 (42000): Access denied for user
'micah'@'localhost' to database 'menagerie'的错误,这意味着你的用户帐户没有必
要的权限。请与管理员讨论此问题,或参阅
“
访问控制和帐户管理
”
部分。
创建数据库并不会自动选择它供使用;你必须明确地进行选择。要将 menagerie 设置
为当前数据库,请使用以下语句:
mysql> USE menagerie
Database changed
你的数据库只需要创建一次,但每次开始一个 mysql 会话时,你都必须选择它
以供使用。你可以通过发出如示例所示的 USE 语句来完成这个操作。另外,你也可
以在调用 mysql 时在命令行上选择数据库。只需在可能需要提供的任何连接参数之
后指定其名称。例如:
$> mysql -h host -u user -p menagerie
Enter password: ********
重要提示:
刚才显示的命令中的 menagerie 不是你的密码。如果你想在-p 选项后在命令行中提
供密码,你必须在没有空格的情况下这样做(例如,写成-ppassword,而不是-p
password)。但是,不建议在命令行上放置你的密码,因为这样做会将密码暴露给
登录到你机器上的其他用户,他们可能会窥探到你的密码。
注意:
你可以随时使用 SELECT DATABASE()来查看当前选择了哪个数据库。
这条 SQL 语句会返回一个结果集,显示当前活动的数据库名称。如果你在执行此语
句前已经使用 USE 语句选择了一个数据库,那么返回的将是那个数据库的名称。如
果你还没有选择任何数据库,这条语句可能返回 NULL 或者一个空字符串,具体取决
于 MySQL 的版本和配置。
为了保持数据库连接的安全性,建议不要在命令行中直接包含密码,而是使用-p 选
项(不跟密码),这样 MySQL 会提示你输入密码,从而避免密码泄露的风险。
2 生成一个表
创建数据库是容易的部分,但此时它是空的,正如 SHOW TABLES 命令告诉你的那
样:
mysql> SHOW TABLES;
Empty set (0.00 sec)
决定数据库的结构是更困难的部分:你需要什么表,以及每个表中应该有哪些列。
你想要一个包含每只宠物记录的表。这个表可以被称为宠物表,它至少应该包含每
只动物的名字。因为名字本身并不太有趣,所以表中应该包含其他信息。例如,如
果你的家庭中有不止一个人养宠物,你可能想要列出每只动物的主人。你还可能想
要记录一些基本的描述性信息,如物种和性别。
那么年龄呢?这可能很有趣,但它不适合存储在数据库中。随着时间的推移,年龄
会发生变化,这意味着你必须经常更新你的记录。相反,最好存储一个固定值,如
出生日期。然后,每当你需要年龄时,你可以通过计算当前日期和出生日期之间的
差异来得到它。MySQL 提供了执行日期算术的函数,所以这并不难。存储出生日期
而不是年龄还有其他优点:
你可以使用数据库来执行诸如为即将到来的宠物生日生成提醒等任务。(如果你认
为这种类型的查询有点傻,请注意,这与在商业数据库环境中你可能要问的问题是
一样的,即确定在当前周或月中需要向哪些客户发送生日祝福,以实现计算机辅助
的个性化服务。)
你可以根据除当前日期以外的日期来计算年龄。例如,如果你在数据库中存储了死
亡日期,你可以很容易地计算出宠物去世时的年龄。
你可能还能想到其他类型的信息,这些信息在宠物表中会很有用,但目前已经确定
的信息就足够了:名字、主人、物种、性别、出生和死亡。
使用 CREATE TABLE 语句来指定你的表布局:
mysql> CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20),
species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);
VARCHAR 是名字、主人和物种列的一个好选择,因为这些列的值长度是可变的。这些
列定义中的长度不需要都相同,也不需要都是 20。你通常可以选择从 1 到 65535
的任何长度,只要你觉得最合理就行。如果你做了一个糟糕的选择,后来发现你需
要一个更长的字段,MySQL 提供了 ALTER TABLE 语句来修改。
在动物记录中,可以选择几种类型的值来表示性别,例如 'm' 和 'f',或者可能是
'male' 和 'female'。最简单的是使用单个字符 'm' 和 'f'。
对于出生和死亡列,使用 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 语句,例如,如果你忘记了表中的列名或它们的数
据类型,DESCRIBE 语句就会非常有用。通过执行 DESCRIBE tablename;,你可以快速
查看表的结构,包括列名、数据类型、是否可以为 NULL、键信息、默认值等。这
是一个非常方便的命令,特别是当你需要回顾或确认表的详细设计时。
3 载入数据到表格中
在创建表之后,你需要填充数据。
LOAD DATA
和
INSERT
语句对此非常有用。
假设你的宠物记录可以如此描述。(请注意,MySQL 期望的日期格式为
'YYYY-MM-DD';这可能与你习惯的不同。)
由于您是从一个空表开始的,因此填充它的一种简单方法是创建一个文本文件,其
中包含每个动物的记录行,然后使用一条语句将文件内容加载到表中。
您可以创建一个名为 pet.txt 的文本文件,其中包含每行一条记录,值由制表符分
剩余26页未读,继续阅读
资源评论
icysmile131
- 粉丝: 3698
- 资源: 159
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 关于如何快速入手Kotlin
- ALTIUM库 常用电阻电容芯片类2D3D PCB封装库AD库(2D3D封装库).zip
- keil5安装教程keil5安装教程
- 所得到的多多多多多多多
- GNSS芯片 AG3335M芯片的,EVB 硬件设计图
- 阿云主机网络连接详细操作.docx
- 网络爬虫软件研究与开发pdf
- Java项目-基于SSM+JSP的母婴用品网站的设计与实现(源码+数据库脚本+部署视频+代码讲解视频+全套软件)
- 基于微信小程序的购物商城app设计带Java后端+源代码+文档说明+数据库.zip
- 基于51单片机外设应用设计.DSN后缀PROTEUS仿真仿真源文件及C语言实例源码例程合集(300个).zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功