Ch14学习笔记——MySQL数据库系统
14.1 MySQL简介
MySQL (MySQL2018 )是一个关系数据库系统(Codd 1970 )。在关系数据库中,数据存储在表中。每个表由多个行和列组成。表中的数据相互关联。表也可能与其他表有关联。关系结构使得可在表上运行查询来检索信息并修改数据库中的数据。关系数据库系统的标准查询语言是SQL (结构化查询语言),包括MySQL。
14.2 安装MySQL
在Ubuntu20.04
中使用sudo apt install mysql-server
安装MySQL。
使用mysql_secure_installation
命令进行安全配置
一路yes保持默认,设置密码
到此已完成MySQL数据库的安装和配置。
14.3 使用MySQL
使用命令sudo mysql -u root -p
命令连接到数据库。
14.3.1 简单的命令
命令 | 作用 |
---|---|
SHOW DATABASES; | 显示数据库 |
CREATE DATABASE |
创建数据库 |
DROP DATABASE |
删除数据库 |
use |
选择数据库 |
14.3.2 复杂一点点的命令
1. MySQL中的数据类型
- 数值类型
INT
:整数4字节,TINYINT
:1字节,SMALLINT
:2字节FLOAT
:浮点数
- 字符串类型
CHAR(size)
:固定长度字符串,长度为1~255字节VARCHAR(size)
:可变长字符串,但不能使用任何空格TEXT
:可变长度的字符串
- 日期和时间类型
DATE
:日期格式为YYYY-MM-DD
格式TIME
:以HH:MM:SS
格式保存时间
2. 表操作
创建表和删除表
使用CREATE TABLE <TABLENAME>
命令创建表,使用DROP TABLE <TABLENAME>
删除表
-
示例 创建一个带有如下数据结构的表
struct students{ int student_id; # an integer ID number must exist char name[20]; # name string of 20 chars int score; # an integer exam score, which may not exist }
使用如下命令
CREATE TABLE students ( student_id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, name CHAR(20), score INT );
修改表
-
插入行
INSERT INTO table_name VLAUES (columnValue1, columnValue2, ... .);
-
删除行
DELETE FROM table_name; # delete all rows of a table DELETE FROM table_name WHERE condition; # delete row by condition
-
更新表
UPDATE table_name SET col1 = value1, col2 = value2, ... WHERE condition;
-
修改表
ALTER TABLE table_name RENAME TO new_name; # 修改表名 ALTER TABLE table_name ADD column_name datatype; # 添加列 ALTER TABLE table_name DROP column_name datatype; # 删除列 ALTER TABLE table_name ALTER COLUMN column_name datatype; # 修改行
14.3.13 关联表
1. 一对一关系
一对一(1-1 )关系是指两个表仅基于一个匹配行相互关联的关系。可以使用主键-外键约束条件创建这类关系。
2. 一对多关系
在数据块中,一对多或1-M关系比1-1关系更常见,也更有用。一对多关系是指一 个表中的一行在另一个表中有多个匹配行的关系。可以使用主键-外键关系来创建这种关系。
3. 多对多关系
如果一个表中的多条记录与另一个表中的多条记录相关,则两个表具有多对多(M-M) 关系。
4. 连接操作
在MySQL中,可使用连接操作在多个表中检索数据。连接操作有4种不同的类型。
-
(INNER) JOIN table 1, table2
:检索两个表中共有的项。 -
LEFT JOIN table 1, table2
:检索表1中的项以及两个表中共有的项。 -
RIGHT JOIN tablel,table2
:检索表2中的项以及两个表中共有的项。 -
OUTER JOIN tabell,table2
:检索两个表中非共有以及没有用的项。
14.3.16 MySQL 脚本
与普通Unix/Linux sh 一样,MySQL shell也可以接受和执行脚本文件。MySQL脚本文 件的后缀是.sql
。它们包含MySQL服务器要执行的MySQL命令。我们可以使用MySQL 脚本来创建数据库,在数据库中创建表,插入表条目和修改表内容,而不是手动输入命令行。