MySQL是一种常用的开源关系型数据库管理系统,广泛应用于Web应用程序的后台数据存储。作为一名开发者或数据库管理员,熟练掌握MySQL技能是非常重要的。本博客将为你提供一系列有关MySQL的学习资源和实用技巧,帮助你在数据库领域迈出坚实的步伐。
目录
1.1 了解MySQL
1.2 MySQL数据库基本指令
1.3 MySQL数据类型
2.常见数据库操作
2.1 创建表
2.2 查询语句
2.3 插入语句
2.4 更新语句
2.5 删除语句
3.Where 子句
4.表连接
4.1 内连接(Inner Join)
4.2 左连接(Left Join)
4.3 右连接(Right Join)
5.1 创建视图
5.2 使用视图
5.3 更新视图
5.4 删除视图
6. 数据库编程
6.1创建和调用存储函数
6.2 函数的调用
7.1 创建触发器
7.2 删除触发器
MySQL入门指南
了解MySQL:
MySQL是一个关系数据库管理系统,由瑞典MySQL AB公司开发,属于 Oracle旗下产品。MySQL 是最流行的关系数据库管理系统之一,MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL数据库基本指令:
show databases | 查询当前服务器上所有数据库的命令 |
create database | 创建一个数据库 |
use 数据库 | 使用或切换数据库的命令 |
drop database 数据库名称 | 删除数据库 |
select database | 查询当前所在的数据库命令 |
create table 表名(.....) | 创建一个新表 |
当然这些指令你同样可以在你的 Navicat 数据库管理工具中要鼠标点击完成。
MySQL数据类型:
类型 | 大小 | 用途 |
---|---|---|
TINYINT | 1 Bytes | 小整数值 |
SMALLINT | 2 Bytes | 大整数值 |
INT 或 INTEGER | 4 Bytes | 大整数值 |
FLOAT | 4 Bytes | 单精度浮点数值 |
DOUBLE | 8 Bytes | 双精度浮点数值 |
DATE | 3 Bytes | 日期值 |
TIME | 3 Bytes | 时间值或持续时间 |
YEAR | 1 Bytes | 年份值 |
DATETIME | 8 Bytes | 混合日期和时间值 |
TIMESTAMP | 4 Bytes | 混合日期和时间值,时间戳 |
CHAR | 0-255 Bytes | 定长字符串 |
VARCHAR | 0-65535 Bytes | 变长字符串 |
TINYTEXT | 0-255 Bytes | 短文本字符串 |
MySQL中的基本单元表(table):
userid | username | class |
1 | 张三 | 计算机1班 |
2 | 李四 | 计算机2班 |
使用数据库的管理工具可以很直观的查看表。
每个表都有行和列
行(row):被称为数据/记录
列(column):被称为字段
每个字段拥有:字段名,数据类型,长度,是否允许为null,主键和外键等属性。
常见数据库操作:
创建表:
CREATE TABLE customers (
-- 字段名 数据类型 其他约束
customer_id INT PRIMARY KEY,
customer_name VARCHAR(50),
email VARCHAR(100)
);
查询语句:
SELECT * from customers;
-- 或者采用 AS 关键字设置列的别名
SELECT customer_id AS ID,customer_name AS Name from customers;
插入语句:
INSERT INTO customers (customer_id, customer_name, email)
VALUES (1, 'John Doe', 'john.doe@example.com');
更新语句:
UPDATE customers
SET customer_name = 'Jane Smith', email = 'jane.smith@example.com'
WHERE customer_id = 1;
删除语句:
DELETE FROM customers
WHERE customer_id = 1;
Where 子句
where子句可以根据许多条件进行条件筛选,支持多种操作预算符
操作符 | 描述 |
---|---|
= | 等号,检测两个值是否相等 |
<>, != | 不等于,检测两个值是否相等 |
> | 大于号,检测左边的值是否大于右边的值 |
< | 小于号,检测左边的值是否小于右边的值 |
>= | 大于等于号,检测左边的值是否大于或等于右边的值 |
<= | 小于等于号,检测左边的值是否小于或等于右边的值, |
is null | 空值判断 |
and | 并且 与 && 类似 |
or | 或者 与 || 类型 |
LIKE | 模糊查询 |
操作实例:
-- 等号
SELECT * FROM customers WHERE customer_name = 'John Doe';
-- 不等于
SELECT * FROM customers WHERE customer_name <> 'John Doe';
-- 大于
SELECT * FROM orders WHERE order_date > '2022-01-01';
-- 模糊查询
SELECT * FROM customers WHERE customer_name LIKE 'J%';
-- 空值判断
SELECT * FROM customers WHERE email IS NULL;
表连接
表连接是一种在关系型数据库中将多个表关联起来以检索相关数据的操作。通过表连接,可以利用表之间的关系,将数据从不同的表中联合起来,形成更有意义和完整的结果集。以下是一些常见的表连接类型:
内连接(Inner Join):
内连接根据两个表之间的匹配条件,仅返回两个表中满足条件的行。只有在连接条件成立时,两个表中的行才会被联合起来。内连接通常使用JOIN
关键字表示。
SELECT * FROM customers
JOIN orders ON
customers.customer_id = orders.customer_id;
左连接(Left Join):
左连接返回左表(左侧的表)中的所有行,以及与右表(右侧的表)匹配的行。如果在右表中没有匹配的行,则返回空值。左连接使用LEFT JOIN
关键字表示。
SELECT * FROM customers
LEFT JOIN orders
ON customers.customer_id = orders.customer_id;
右连接(Right Join):
右连接返回右表中的所有行,以及与左表匹配的行。如果在左表中没有匹配的行,则返回空值。右连接使用RIGHT JOIN
关键字表示。
SELECT * FROM customers
RIGHT JOIN orders ON
customers.customer_id = orders.customer_id;
数据视图(View)
视图(View)是在数据库中虚拟创建的逻辑表,它基于一个或多个基本表(或其他视图)的查询结果。视图并不实际存储数据,而是根据定义的查询规则动态生成结果集。通过视图,可以简化复杂的查询操作,提供更易于使用和理解的数据接口。以下是一些关于视图的说明:
创建视图
CREATE VIEW view_name AS SELECT column1, column2 FROM table_name WHERE condition;
使用视图
SELECT * FROM view_name;
更新视图
UPDATE view_name SET column1 = value1 WHERE condition;
删除视图
DROP VIEW view_name;
视图可以隐藏复杂的查询逻辑和数据处理,使查询更加简洁明了。通过视图,可以限制用户对特定列或行的访问权限,保护敏感数据的安全性。视图提供了一种逻辑上的数据抽象,使应用程序与基础表的结构变化解耦。
数据库编程
创建和调用存储函数
在数据库中,同样支持创建函数这种一段可重用的代码,用于执行特定的操作或计算,并返回一个值。下面是关于创建函数和调用函数的操作说明:
CREATE FUNCTION calculate_sum(a INT, b INT)
RETURNS INT
BEGIN
DECLARE result INT;
SET result = a + b;
RETURN result;
END;
创建一个函数,计算两个数的和并返回结果。
函数的调用
SELECT calculate_sum(3, 4); -- 返回结果 7
函数的调用这需要,使用简单的 SELECT 语句即可。
触发器(Trigger)
触发器(Trigger)是一种数据库对象,用于在数据库中定义与表相关联的自动化操作。当特定的数据库事件发生时,触发器会自动执行预定义的操作。触发器可以用于实现数据约束、数据验证、数据自动更新等功能。下面是关于触发器的一些说明:
创建触发器
CREATE TRIGGER update_customer_stats
AFTER INSERT ON orders
FOR EACH ROW
BEGIN
-- 获取插入的订单记录的客户ID
DECLARE customer_id INT;
SET customer_id = NEW.customer_id;
-- 更新客户表的订单统计信息
UPDATE customers
SET total_orders = total_orders + 1,
last_order_date = CURRENT_TIMESTAMP
WHERE id = customer_id;
END;
示例触发器,它在向一个订单表插入新记录时自动更新相关客户表的统计信息。
删除触发器
DROP TRIGGER [IF EXISTS] trigger_name;
在上述实例中,trigger_name
是要删除的触发器的名称。
总结
在数据库学习的过程中,我掌握了关于数据库管理系统(DBMS)和数据库操作的重要知识和技能,掌握了对数据库的增删查改操作。MySQL数据库是一种功能强大且广泛使用的关系型数据库管理系统。通过学习MySQL,我能够有效地存储和管理大量的数据,并进行高效的数据查询和操作。我将继续深入学习和探索数据库的高级概念和技术,以应对不断发展的数据管理需求。