MySQL(从0基础开始)

前言

RDBMS

RDBMS 即关系数据库管理系统(Relational Database Management System)的特点:
1.数据以表格的形式出现
2.每行为各种记录名称
3.每列为记录名称所对应的数据域
4.许多的行和列组成一张表单
5.若干的表单组成database

RDBMS 术语

数据库: 数据库是一些关联表的集合。
数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
列: 一列(数据元素) 包含了相同类型的数据, 例如邮政编码的数据。
行:一行(元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。
主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
外键:外键用于关联两个表。
复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。
MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。

在这里插入图片描述

MySQL两种下载方式:1.本地下载MySQL服务(cmd执行SQL语句);2.下载小皮面板(Navicat连接数据库,执行SQL语句)

在这里插入图片描述

在这里插入图片描述

这个可以更改外网ip,需要对应ip主机开启连接服务

在这里插入图片描述

MYSQL

登录 MySQL

mysql -h 主机名 -u 用户名 -p

启动及关闭 MySQL 服务器

启动 MySQL 服务器:

1、通过 “服务” 管理工具: 打开"运行"对话框(Win + R),输入 services.msc,找到"MySQL"服务,右击选择"启动"。

2、通过命令提示符: 打开命令提示符(以管理员身份),输入以下命令:

net start mysql

关闭MySQL服务器:

1、**通过 “服务” 管理工具:**同样打开"运行"对话框,输入 services.msc,找到 “MySQL” 服务,右击选择"停止"。

2、通过命令提示符: 打开命令提示符(以管理员身份),输入以下命令:

net stop mysql

管理MySQL的命令

USE 数据库名 :

选择要操作的Mysql数据库,使用该命令后所有Mysql命令都只针对该数据库。

mysql> use RUNOOB;
Database changed

SHOW DATABASES:

列出 MySQL 数据库管理系统的数据库列表。

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| RUNOOB             |
| cdcol              |
| mysql              |
| onethink           |
| performance_schema |
| phpmyadmin         |
| test               |
| wecenter           |
| wordpress          |
+--------------------+
10 rows in set (0.02 sec)

SHOW TABLES:

显示指定数据库的所有表,使用该命令前需要使用 use 命令来选择要操作的数据库。

mysql> use RUNOOB;
Database changed
mysql> SHOW TABLES;
+------------------+
| Tables_in_runoob |
+------------------+
| employee_tbl     |
| runoob_tbl       |
| tcount_tbl       |
+------------------+
3 rows in set (0.00 sec)

SHOW COLUMNS FROM 数据表:

显示数据表的属性,属性类型,主键信息 ,是否为 NULL,默认值等其他信息。

mysql> SHOW COLUMNS FROM runoob_tbl;
+-----------------+--------------+------+-----+---------+-------+
| Field           | Type         | Null | Key | Default | Extra |
+-----------------+--------------+------+-----+---------+-------+
| runoob_id       | int(11)      | NO   | PRI | NULL    |       |
| runoob_title    | varchar(255) | YES  |     | NULL    |       |
| runoob_author   | varchar(255) | YES  |     | NULL    |       |
| submission_date | date         | YES  |     | NULL    |       |
+-----------------+--------------+------+-----+---------+-------+
4 rows in set (0.01 sec)

SHOW INDEX FROM 数据表:

显示数据表的详细索引信息,包括PRIMARY KEY(主键)。

mysql> SHOW INDEX FROM runoob_tbl;
+------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table      | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| runoob_tbl |          0 | PRIMARY  |            1 | runoob_id   | A         |           2 |     NULL | NULL   |      | BTREE      |         |               |
+------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
1 row in set (0.00 sec)

SHOW TABLE STATUS [FROM db_name] [LIKE ‘pattern’] \G:

该命令将输出Mysql数据库管理系统的性能及统计信息。

mysql> SHOW TABLE STATUS  FROM RUNOOB;   # 显示数据库 RUNOOB 中所有表的信息

mysql> SHOW TABLE STATUS from RUNOOB LIKE 'runoob%';     # 表名以runoob开头的表的信息
mysql> SHOW TABLE STATUS from RUNOOB LIKE 'runoob%'\G;   # 加上 \G,查询结果按列打印

管理MySQL的命令视频演示

MySQL 连接

使用 MySQL 二进制方式连接

mysql -u your_username -p password         注:cmd中书写命令
-u 参数用于指定用户名。
-p 参数表示需要输入密码。

使用 PHP 脚本连接 MySQL

PHP 提供了 mysqli_connect() 函数来连接数据库。

该函数有 6 个参数,在成功链接到 MySQL 后返回连接标识,失败返回 FALSE 。
mysqli_connect(host, username, password, dbname,port, socket);

在这里插入图片描述

你可以使用 PHP 的 mysqli_close() 函数来断开与 MySQL 数据库的链接。

该函数只有一个参数为 mysqli_connect() 函数创建连接成功后返回的 MySQL 连接标识符。

bool mysqli_close ( mysqli $link )
注:本函数关闭指定的连接标识所关联的到 MySQL 服务器的非持久连接。如果没有指定 link_identifier,则关闭上一个打开的连接。

提示:通常不需要使用 mysqli_close(),因为已打开的非持久连接会在脚本执行完毕后自动关闭。
实例
<?php
$dbhost = 'localhost';  // mysql服务器主机地址
$dbuser = 'root';            // mysql用户名
$dbpass = '123456';          // mysql用户名密码
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
    die('Could not connect: ' . mysqli_error());
}
echo '数据库连接成功!';
mysqli_close($conn);
?>

MySQL 创建数据库

CREATE DATABASE 数据库名;

如果数据库已经存在,执行 CREATE DATABASE 将导致错误。

为了避免这种情况,你可以在 CREATE DATABASE 语句中添加 IF NOT EXISTS 子句:

CREATE DATABASE IF NOT EXISTS mydatabase;

MySQL 删除数据库

DROP DATABASE <database_name>;        -- 直接删除数据库,不检查是否存在
或
DROP DATABASE [IF EXISTS] <database_name>;     
注:IF EXISTS 是一个可选的子句,表示如果数据库存在才执行删除操作,避免因为数据库不存在而引发错误。
	database_name 是你要删除的数据库的名称。

MySQL 选择数据库

USE database_name; 
注:进入数据库后,任何后续的查询和操作都将在此数据库上执行。

MySQL 数据类型(此处未写)

MySQL 支持所有标准 SQL 数值数据类型。

这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL 和 NUMERIC),以及近似数值数据类型(FLOAT、REAL 和 DOUBLE PRECISION)。

关键字INT是INTEGER的同义词,关键字DEC是DECIMAL的同义词。

BIT数据类型保存位字段值,并且支持 MyISAM、MEMORY、InnoDB 和 BDB表。

作为 SQL 标准的扩展,MySQL 也支持整数类型 TINYINT、MEDIUMINT 和 BIGINT。下面的表显示了需要的每个整数类型的存储和范围。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

MySQL 创建数据表

创建 MySQL 数据表需要以下信息:

  • 表名
  • 表字段名
  • 定义每个表字段的数据类型
CREATE TABLE table_name (
    column1 datatype,
    column2 datatype,
    ...
);
table_name 是你要创建的表的名称。
column1, column2, ... 是表中的列名。
datatype 是每个列的数据类型。

MySQL 删除数据表

DROP TABLE table_name ;    -- 直接删除表,不检查是否存在
或
DROP TABLE [IF EXISTS] table_name;
table_name 是要删除的表的名称。
IF EXISTS 是一个可选的子句,表示如果表存在才执行删除操作,避免因为表不存在而引发错误。

MySQL插入数据

MySQL 表中使用 INSERT INTO 语句来插入数据。

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
参数说明:

table_name 是你要插入数据的表的名称。
column1, column2, column3, ... 是表中的列名。
value1, value2, value3, ... 是要插入的具体数值。
注:如果数据是字符型,必须使用单引号 ' 或者双引号 ",如: 'value1', "value1"。

在这里插入图片描述

MySQL 查询数据

MySQL 数据库使用 SELECT 语句来查询数据。

SELECT column1, column2, ...
FROM table_name
[WHERE condition]
[ORDER BY column_name [ASC | DESC]]
[LIMIT number];
column1, column2, ... 是你想要选择的列的名称,如果使用 * 表示选择所有列。
table_name 是你要从中查询数据的表的名称。
WHERE condition 是一个可选的子句,用于指定过滤条件,只返回符合条件的行。
ORDER BY column_name [ASC | DESC] 是一个可选的子句,用于指定结果集的排序顺序,默认是升序(ASC)。
LIMIT number 是一个可选的子句,用于限制返回的行数。

在这里插入图片描述

WHERE 子句

我们知道从 MySQL 表中使用 SELECT 语句来读取数据。

如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句中。

WHERE 子句用于在 MySQL 中过滤查询结果,只返回满足特定条件的行。

SELECT column1, column2, ...
FROM table_name
WHERE condition;
参数说明:

column1, column2, ... 是你要选择的列的名称,如果使用 * 表示选择所有列。
table_name 是你要从中查询数据的表的名称。
WHERE condition 是用于指定过滤条件的子句。

在这里插入图片描述

1

在这里插入图片描述

在这里插入图片描述

UPDATE 更新

如果我们需要修改或更新 MySQL 中的数据,我们可以使用 UPDATE 命令来操作。

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
参数说明:

table_name 是你要更新数据的表的名称。
column1, column2, ... 是你要更新的列的名称。
value1, value2, ... 是新的值,用于替换旧的值。
WHERE condition 是一个可选的子句,用于指定更新的行。如果省略 WHERE 子句,将更新表中的所有行。


更多说明:

你可以同时更新一个或多个字段。
你可以在 WHERE 子句中指定任何条件。
你可以在一个单独表中同时更新数据。
当你需要更新数据表中指定行的数据时 WHERE 子句是非常有用的。

在这里插入图片描述

在这里插入图片描述

DELETE 语句

你可以使用 DELETE FROM 命令来删除 MySQL 数据表中的记录。

DELETE FROM table_name
WHERE condition;
参数说明:

table_name 是你要删除数据的表的名称。
WHERE condition 是一个可选的子句,用于指定删除的行。如果省略 WHERE 子句,将删除表中的所有行。

更多说明:

如果没有指定 WHERE 子句,MySQL 表中的所有记录将被删除。
你可以在 WHERE 子句中指定任何条件
您可以在单个表中一次性删除记录。
当你想删除数据表中指定的记录时 WHERE 子句是非常有用的。

在这里插入图片描述

LIKE 子句

我们知道在 MySQL 中使用 SELECT 命令来读取数据, 同时我们可以在 SELECT 语句中使用 WHERE 子句来获取指定的记录。

WHERE 子句中可以使用等号 = 来设定获取数据的条件,如 “runoob_author = ‘RUNOOB.COM’”。

但是有时候我们需要获取 runoob_author 字段含有 “COM” 字符的所有记录,这时我们就需要在 WHERE 子句中使用 LIKE 子句。

LIKE

子句是在 MySQL 中用于在 WHERE 子句中进行模糊匹配的关键字。它通常与通配符一起使用,用于搜索符合某种模式的字符串。

LIKE 子句中使用百分号 **%**字符来表示任意字符,类似于UNIX或正则表达式中的星号 *****。

如果没有使用百分号 %, LIKE 子句与等号 = 的效果是一样的。

SELECT column1, column2, ...
FROM table_name
WHERE column_name LIKE pattern;
参数说明:

column1, column2, ... 是你要选择的列的名称,如果使用 * 表示选择所有列。
table_name 是你要从中查询数据的表的名称。
column_name 是你要应用 LIKE 子句的列的名称。
pattern 是用于匹配的模式,可以包含通配符。


更多说明:

你可以在 WHERE 子句中指定任何条件。
你可以在 WHERE 子句中使用LIKE子句。
你可以使用LIKE子句代替等号 =。
LIKE 通常与 % 一同使用,类似于一个元字符的搜索。
你可以使用 AND 或者 OR 指定一个或多个条件。
你可以在 DELETE 或 UPDATE 命令中使用 WHERE...LIKE 子句来指定条件。

在这里插入图片描述

UNION 操作符

描述

MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合,并去除重复的行。

UNION 操作符必须由两个或多个 SELECT 语句组成,每个 SELECT 语句的列数和对应位置的数据类型必须相同。

SELECT column1, column2, ...
FROM table1
WHERE condition1
UNION
SELECT column1, column2, ...
FROM table2
WHERE condition2
[ORDER BY column1, column2, ...];
参数说明:

column1, column2, ... 是你要选择的列的名称,如果使用 * 表示选择所有列。
table1, table2, ... 是你要从中查询数据的表的名称。
condition1, condition2, ... 是每个 SELECT 语句的过滤条件,是可选的。
ORDER BY 子句是一个可选的子句,用于指定合并后的结果集的排序顺序。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

ORDER BY(排序) 语句

我们知道从 MySQL 表中使用 SELECT 语句来读取数据。

如果我们需要对读取的数据进行排序,我们就可以使用 MySQL 的 ORDER BY 子句来设定你想按哪个字段哪种方式来进行排序,再返回搜索结果。

MySQL ORDER BY(排序) 语句可以按照一个或多个列的值进行升序(ASC)或降序(DESC)排序。

SELECT column1, column2, ...
FROM table_name
ORDER BY column1 [ASC | DESC], column2 [ASC | DESC], ...;
参数说明:

column1, column2, ... 是你要选择的列的名称,如果使用 * 表示选择所有列。
table_name 是你要从中查询数据的表的名称。
ORDER BY column1 [ASC | DESC], column2 [ASC | DESC], ... 是用于指定排序顺序的子句。ASC 表示升序(默认),DESC 表示降序。
更多说明:

你可以使用任何字段来作为排序的条件,从而返回排序后的查询结果。
你可以设定多个字段来排序。
你可以使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。 默认情况下,它是按升序排列。
你可以添加 WHERE...LIKE 子句来设置条件。

在这里插入图片描述

GROUP BY 语句

GROUP BY 语句根据一个或多个列对结果集进行分组。

在分组的列上我们可以使用 COUNT, SUM, AVG,等函数。

GROUP BY 语句是 SQL 查询中用于汇总和分析数据的重要工具,尤其在处理大量数据时,它能够提供有用的汇总信息。

SELECT column1, aggregate_function(column2)
FROM table_name
WHERE condition
GROUP BY column1;
column1:指定分组的列。
aggregate_function(column2):对分组后的每个组执行的聚合函数。
table_name:要查询的表名。
condition:可选,用于筛选结果的条件。

在这里插入图片描述

ALTER 命令

当我们需要修改数据表名或者修改数据表字段时,就需要使用到 MySQL ALTER 命令。

MySQL 的 ALTER 命令用于修改数据库、表和索引等对象的结构。

ALTER 命令允许你添加、修改或删除数据库对象,并且可以用于更改表的列定义、添加约束、创建和删除索引等操作。

ALTER 命令非常强大,可以在数据库结构发生变化时进行灵活的修改和调整。

1. 添加列

ALTER TABLE table_name
ADD COLUMN new_column_name datatype;
实例
ALTER TABLE employees
ADD COLUMN birth_date DATE;

2. 修改列的数据类型

实例
ALTER TABLE TABLE_NAME
MODIFY COLUMN column_name new_datatype;

以下 SQL 语句将 employees 表中的 salary 列的数据类型修改为 DECIMAL(10,2):

实例
ALTER TABLE employees
MODIFY COLUMN salary DECIMAL(10,2);

3. 修改列名

ALTER TABLE table_name
CHANGE COLUMN old_column_name new_column_name datatype;

以下 SQL 语句将 employees 表中的某个列的名字由 old_column_name 修改为 new_column_name,并且可以同时修改数据类型:

实例
ALTER TABLE employees
CHANGE COLUMN old_column_name new_column_name VARCHAR(255);

4. 删除列

ALTER TABLE table_name
DROP COLUMN column_name;

以下 SQL 语句将 employees 表中的 birth_date 列删除:

实例
ALTER TABLE employees
DROP COLUMN birth_date;

5. 添加 PRIMARY KEY

ALTER TABLE table_name
ADD PRIMARY KEY (column_name);

以下 SQL 语句在 employees 表中添加了一个主键:

实例
ALTER TABLE employees
ADD PRIMARY KEY (employee_id);

6. 添加 FOREIGN KEY

ALTER TABLE child_table
ADD CONSTRAINT fk_name
FOREIGN KEY (column_name)
REFERENCES parent_table (column_name);

以下 SQL 语句在 orders 表中添加了一个外键,关联到 customers 表的 customer_id 列:

ALTER TABLE orders
ADD CONSTRAINT fk_customer
FOREIGN KEY (customer_id)
REFERENCES customers (customer_id);

7. 修改表名

ALTER TABLE old_table_name
RENAME TO new_table_name;

以下 SQL 语句将表名由 employees 修改为 staff:

实例
ALTER TABLE employees
RENAME TO staff;
注意:

但在使用 ALTER 命令时要格外小心,因为一些操作可能需要重建表或索引,这可能会影响数据库的性能和运行时间。

在进行重要的结构修改时,建议先备份数据,并在生产环境中谨慎操作。

ALTER TABLE employees
ADD PRIMARY KEY (employee_id);


### 6. 添加 FOREIGN KEY

```mysql
ALTER TABLE child_table
ADD CONSTRAINT fk_name
FOREIGN KEY (column_name)
REFERENCES parent_table (column_name);

以下 SQL 语句在 orders 表中添加了一个外键,关联到 customers 表的 customer_id 列:

ALTER TABLE orders
ADD CONSTRAINT fk_customer
FOREIGN KEY (customer_id)
REFERENCES customers (customer_id);

7. 修改表名

ALTER TABLE old_table_name
RENAME TO new_table_name;

以下 SQL 语句将表名由 employees 修改为 staff:

实例
ALTER TABLE employees
RENAME TO staff;
注意:

但在使用 ALTER 命令时要格外小心,因为一些操作可能需要重建表或索引,这可能会影响数据库的性能和运行时间。

在进行重要的结构修改时,建议先备份数据,并在生产环境中谨慎操作。

关于MYSQL数据库的介绍今天就到这里啦,后续我会为大家继续介绍MySQL数据库的相关知识哦~

关注我,带你领略SQL的风采~😍😍😍

  • 14
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

许叶彤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值