返回介绍

第17单元 设置 MySQL 数据库

发布于 2024-01-28 22:01:16 字数 2996 浏览 0 评论 0 收藏 0

关系数据库是用于实现数据永久存储的一组表,同时还可能具有数据排序和索引的功能。关系数据库非常适合存储表格数据(例如CSV文件中的数据),其中每一个表代表一种变量类型,表的列对应变量,表的行对应观测值或记录。

虽然不使用Python也可以操作数据库,但你至少需要知道结构化查询语言(SQL)或其特定实现(例如MySQL),这是通过命令行或Python应用程序访问关系数据库的基础。

另外,你需要安装一个MySQL客户端(例如mysql),才能通过命令行与运行中的MySQL数据库服务器进行交互。所有MySQL命令都是不区分大小写的,而且每条命令必须以分号结尾。

以数据库管理员的身份使用mysql启动一个新的数据库项目(这些操作只需要执行一次)。

(1) 在shell命令行中启动mysql:

c:\myProject> mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
«More mysql output»
mysql>

后续所有的指令都在mysql命令行提示符下输入。

(2) 创建新的数据库用户(“dsuser”)和密码(“badpassw0rd”):

CREATE USER 'dsuser'@'localhost' IDENTIFIED BY 'badpassw0rd';

(3) 给项目创建一个新数据库(“dsdb”):

CREATE DATABASE dsdb;

(4)授予新用户对新数据库的访问权限:

GRANT ALL ON dsdb.* TO 'dsuser'@'localhost';

现在,可以在数据库dsdb中创建新表了。使用同样的mysql客户端,以常规用户身份登录:

c:\myProject> mysql -u dsuser -p dsdb
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
«More mysql output»
mysql>

通常,表都是一次创建而多次访问的。创建表之后,可以根据项目需求更改其属性。CREATE TABLE命令创建一个新表,后跟表名和所有的列信息组成的列表。每个列信息按列名称和该列数据类型的顺序进行定义。最常见的MySQL数据类型是TINYINT、SMALLINT、INT、FLOAT、DOUBLE、CHAR、VARCHAR、TINYTEXT、TEXT、DATE、TIME、DATETIME和TIMESTAMP。

以下命令使用empname(可变长度的文本)、salary(浮点数)和hired(日期)列创建表employee。表中的每个记录代表一个员工。

   USE dsdb;
   CREATE TABLE employee (empname TINYTEXT, salary FLOAT, hired DATE);

➾ Query OK, 0 rows affected (0.17 sec)

对于不再需要的表,可将其从数据库中删去。

   DROP TABLE employee;

➾ Query OK, 0 rows affected (0.05 sec)

DROP命令简短精炼,且不可撤销。正所谓覆水难收,在删除任何东西之前,请务必考虑清楚!

 数据库架构

数据库架构是描述所有表、列、数据类型、索引、约束以及不同表之间关系的数据库结构。架构是数据库的核心:将一个数据库的所有表中的数据删除后,剩下的就是数据库的架构。

只要存储空间允许,应使得每条记录都能自动生成主键和自动更新最后修改的时间戳,尽管这并非任何编程语言的标准。主键可以确保记录的唯一性,还可以加快搜索的速度。最后修改的时间戳使数据具备一定的可追溯性,而关键字NOT NULL标记的列确保每条记录在该列都具备一个有效值:

CREATE TABLE employee (id INT PRIMARY KEY AUTO_INCREMENT,
  updated TIMESTAMP, empname TINYTEXT NOT NULL, salary FLOAT NOT NULL,
  hired DATE);

如果想使用列(变量)进行排序、搜索或连接,就需要给该列添加索引:

   ALTER TABLE employee ADD INDEX(hired);

➾ Query OK, 0 rows affected (0.22 sec)Records: 0 Duplicates: 0 Warnings: 0

注意,索引大大增加了查询的时间,同时也显著增加了插入和删除的时间。另外,只有在将大量数据插入表中之后,才能创建索引。如果要插入新的数据,首先需要删除已有的索引:

DROP INDEX hired ON employee;

然后才能插入数据并重新添加索引。

如果某一列中所有的值都是唯一的(例如员工ID号或姓名),那就应该给该列添加UNIQUE约束。如果UNIQUE约束的列使用了长度可变的数据类型(例如VARCHAR、TINYTEXT或TEXT),则必须指定相应的长度:

ALTER TABLE employee ADD UNIQUE(empname(255));

主键总是有一个值(使用NOT NULL标记),而且它既是一个INDEX,也是UNIQUE的。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文