标题:MySQL 基础知识汇总
- MySQL 作为一种广泛应用的关系型数据库管理系统,拥有众多重要的基础知识。
1 . 数据类型
比如我们要存储学生的成绩,成绩通常是小数,那就适合用浮点型数据类型,如
FLOAT
。
在 MySQL 中,常见的数据类型有以下这些:
1.整型:
INT
:标准的整数类型。BIGINT
:更大范围的整数。
例如,用于存储用户的 ID 等。
2.浮点型:
FLOAT
:单精度浮点型。DOUBLE
:双精度浮点型。
可以用来存储一些带有小数的数据,如商品的价格。
3.字符型:
VARCHAR(n)
:可变长度的字符串,指定最大长度 n。CHAR(n)
:固定长度的字符串,长度为 n。
比如存储用户的姓名、地址等。
4.日期和时间型:
DATE
:只存储日期,如 ‘2023-10-10’。TIME
:只存储时间,如 ‘12:30:00’。DATETIME
:日期和时间组合,如 ‘2023-10-10 12:30:00’。
常用于记录事件发生的时间等。
5.布尔型:
通常用 TINYINT(1)
来模拟布尔值,0 表示假,1 表示真。
在实际应用中,根据具体的数据特点和需求来选择合适的数据类型,这对于数据库的性能和数据的准确性都非常重要。
比如,在一个考勤系统中,对于员工的打卡时间,就会选择 DATETIME
类型;而对于员工的性别,可能就会用一个 CHAR(1)
来表示。合理选择数据类型能让数据库的管理和操作更加高效和便捷。
2 . 表的创建与管理
在 MySQL 中创建表是构建数据库结构的重要步骤。
- 比如我们要创建一个名为“students”的学生信息表,包含“id”(自增主键)、“name”(学生姓名)、“age”(学生年龄)等字段,可以这样写:
CREATE TABLE students (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50),
age INT
);
创建好表后,我们可以进行管理操作:
2 . 添加字段:如果之后需要添加一个“gender”(性别)字段,可以这样做:
ALTER TABLE students ADD gender VARCHAR(10);
3 . 修改字段数据类型或名称:比如把“age”字段的数据类型改为 BIGINT:
ALTER TABLE students MODIFY age BIGINT;
4 . 删除字段:要删除“gender”字段:
ALTER TABLE students DROP gender;
5 . 重命名表:如果想把“students”表改名为“student_infos”:
RENAME TABLE students TO student_infos;
- 使用describe 语句查看book表中列的信息
- 假设已经创建了数据库Bookstore,则在该数据库中创建图书目录表‘book’
在实际应用中,根据业务需求的变化灵活地对表进行管理和调整,能更好地适应不同的场景。比如当业务拓展需要更多信息时,及时添加字段;当某些字段不再需要时,合理地删除它们,以保持数据库结构的合理性和高效性。
同时,在创建表时要充分考虑字段的定义、约束等,为后续的数据操作和维护打下良好的基础。
3 . SQL 语句
以下是一些常见 SQL 语句的具体例子:
1 . 查询语句(SELECT):
从“students”表中查询所有学生的姓名和年龄。
SELECT name, age FROM students;
2 . 插入语句(INSERT):
向“students”表插入一个新学生的信息(姓名为“李四”,年龄为 20)。
INSERT INTO students (name, age) VALUES ('李四', 20);
3 . 更新语句(UPDATE):
将“students”表中姓名为“张三”的学生年龄更新为 25。
UPDATE students SET age = 25 WHERE name = '张三';
4 . 删除语句(DELETE):
删除“students”表中年龄小于 18 的学生记录。
DELETE FROM students WHERE age < 18;
5 . 多表连接查询:
假设有“students”表(包含学生 ID 和姓名)和“courses”表(包含课程 ID 和对应的学生 ID),查询选修了某课程的学生姓名。
SELECT s.name
FROM students s
JOIN courses c ON s.id = c.student_id
WHERE c.course_id = 1;
- 用 JOIN 关键字表达下列查询:查找购买了《MySQL 数据库》且订购数量大于5本的图书信息及用户姓名和订购册数。
SELECT book.图书编号,姓名,书名,订购册数FROM sell JOINbookONbook.图书编号=se11.图书编号JOINmembers ONsel.用户号=members.用户号
WHERE书名=MYSQ数据库'AND订购册数>5
6 . 子查询:
找出年龄大于平均年龄的学生姓名。
SELECT name
FROM students
WHERE age > (SELECT AVG(age) FROM students);
这些 SQL 语句在不同的场景下发挥着重要作用,通过灵活运用可以实现对数据库中数据的各种操作和管理。
4 . 索引
MySQL 索引
索引在 MySQL 中起着非常重要的作用。
假设我们有一个“orders”表,包含“order_id”(订单编号)、“customer_name”(客户姓名)等字段。
1 .创建一个针对“order_id”字段的索引:
CREATE INDEX idx_order_id ON orders (order_id);
2 .有了这个索引后,当我们执行查询,比如:
SELECT * FROM orders WHERE order_id = 123;
数据库可以快速地通过索引定位到对应的记录,大大提高查询速度。
3 . 再比如,对于一个包含大量数据的“employees”表,我们可以为经常用于查询条件的“name”字段创建索引:
CREATE INDEX idx_employees_name ON employees (name);
这样在查询特定员工姓名时,效率会显著提升。
5 . 数据库的备份与恢复
备份:
可以使用 mysqldump
命令来进行备份。例如,备份一个名为 my_database
的数据库到一个文件 backup.sql
中:
mysqldump -u username -p my_database > backup.sql
这里的 username
是数据库用户名。
恢复:
当需要恢复数据时,可以使用以下命令:
mysql -u username -p < backup.sql
或者在 MySQL 客户端中执行:
SOURCE backup.sql;
事务处理:
就像在一个购物系统中,用户下单时,需要同时更新商品库存和生成订单记录,这整个过程就是一个事务,确保要么全部成功,要么全部失败,保持数据的完整性。
6.MySQL的视图案例分析
以下是几个关于 MySQL 视图的案例:
1.案例一:创建简单视图
假设有一个 employees
表,包含 employee_id
、first_name
、last_name
、salary
等列。我们想要创建一个视图,只显示员工的姓名和工资。
CREATE VIEW employee_salary_view AS
SELECT first_name, last_name, salary
FROM employees;
然后可以通过以下语句查询该视图:
SELECT * FROM employee_salary_view;
- 案例二:基于多个表创建视图
有 orders
表(包含 order_id
、customer_id
、order_date
等列)和 customers
表(包含 customer_id
、customer_name
、email
等列)。创建一个视图,显示订单的详细信息以及对应的客户名称。
CREATE VIEW order_customer_view AS
SELECT o.order_id, o.order_date, c.customer_name
FROM orders o
JOIN customers c ON o.customer_id = c.customer_id;
查询视图:
SELECT * FROM order_customer_view;
- 案例三:使用视图进行数据过滤
在 products
表(包含 product_id
、product_name
、category_id
、price
等列)中,创建一个视图,只显示价格大于 100 的产品信息。
CREATE VIEW expensive_products_view AS
SELECT * FROM products WHERE price > 100;
查询视图获取高价产品信息:
SELECT * FROM expensive_products_view;
视图可以提供一种便捷的数据展示和访问方式,同时有助于保护原始表的结构和数据安全性。
了解这些 MySQL 的基础知识,是深入学习和应用该数据库的重要基石,这里有更详细的内容关于MySQL语句,链接: link
在实际开发中,只有扎实掌握这些基础知识,才能更好地发挥 MySQL 的强大功能,构建稳定可靠的数据库应用。