MySQL是一种广泛使用的关系型数据库管理系统(RDBMS),主要用于存储、检索和管理数据,它由瑞典公司MySQL AB开发,现属于Oracle Corporation,MySQL以其高性能、高可靠性和易用性著称,广泛应用于各种Web应用和企业系统中。
关系型和非关系型数据库
1、关系型数据库:以行与列的形式存储数据,通过关系模型进行数据管理,常见的关系型数据库包括MySQL、Oracle和SQL Server等。
2、非关系型数据库:不使用传统的行与列形式,而是通过键值对、文档、图形等方式进行数据存储,常见的非关系型数据库有Redis、MongoDB和Neo4j等。
设计原则
1、表、记录和字段:表是数据库的基本单位,每张表由多条记录组成,每条记录包含多个字段,一个员工表可以包含员工ID、姓名、性别、年龄和邮箱等字段。
2、表的关联关系:表之间可以通过外键进行关联,常见的关联关系包括一对一、一对多、多对多和自我引用。
MySQL数据库架构
MySQL是一个客户端服务器架构的数据库系统,由数据库服务器和客户端工具组成,常用的客户端工具有Navicat等。
创建和使用表
1、建表:创建表时需要定义表名和字段及其数据类型,常用数据类型包括varchar、char、int、bigint、float、double、date和datetime等。
“`sql
CREATE TABLE t_student (
number INT(10),
name VARCHAR(5),
sex CHAR(1),
age INT(3),
email VARCHAR(20)
);
“`
2、插入数据:使用INSERT语句向表中添加数据。
“`sql
INSERT INTO t_student (number, name, sex, age, email) VALUES (001, ‘温家旺’, ‘男’, 20, ‘3301814646@qq.com’);
“`
3、修改数据:使用UPDATE语句修改表中的数据。
“`sql
UPDATE t_student SET age = 21 WHERE number = 001;
“`
4、删除数据:使用DELETE语句删除表中的数据。
“`sql
DELETE FROM t_student WHERE number = 001;
“`
5、表结构的增删改:使用ALTER TABLE语句对表结构进行修改,如增加字段、删除字段和修改字段类型。
“`sql
ALTER TABLE t_student ADD phone VARCHAR(11);
ALTER TABLE t_student DROP COLUMN phone;
ALTER TABLE t_student MODIFY name VARCHAR(10);
“`
约束
1、非空约束:确保字段不能为空。
“`sql
CREATE TABLE t_student (
number INT(10) NOT NULL,
name VARCHAR(5) NOT NULL,
sex CHAR(1),
age INT(3),
email VARCHAR(20)
);
“`
2、唯一性约束:确保字段的值唯一。
“`sql
CREATE TABLE t_student (
number INT(10) PRIMARY KEY,
name VARCHAR(5) UNIQUE,
sex CHAR(1),
age INT(3),
email VARCHAR(20)
);
“`
3、主键约束:唯一标识表中的每一条记录。
“`sql
CREATE TABLE t_student (
number INT(10) PRIMARY KEY,
name VARCHAR(5),
sex CHAR(1),
age INT(3),
email VARCHAR(20)
);
“`
4、外键约束:确保字段的值必须在另一表的主键中存在。
“`sql
CREATE TABLE t_orders (
order_id INT(10) PRIMARY KEY,
student_number INT(10),
amount DECIMAL(10,2),
FOREIGN KEY (student_number) REFERENCES t_student(number)
);
“`
5、检查约束:确保字段的值满足特定条件(MySQL8.0及以后版本支持)。
“`sql
CREATE TABLE t_student (
number INT(10) PRIMARY KEY,
name VARCHAR(5),
sex CHAR(1),
age INT(3),
email VARCHAR(20),
CHECK (age >= 0)
);
“`
存储引擎
MySQL支持多种存储引擎,每种存储引擎在性能和特性上有所不同,常用的存储引擎包括InnoDB、MyISAM和Memory等。
单表查询
1、简单查询:使用SELECT语句查询表中的数据。
“`sql
SELECT * FROM t_student;
“`
2、条件查询:使用WHERE子句进行条件查询。
“`sql
SELECT * FROM t_student WHERE age > 18;
“`
3、排序:使用ORDER BY子句对查询结果进行排序。
“`sql
SELECT * FROM t_student ORDER BY age DESC;
“`
4、聚合函数:使用COUNT、SUM、AVG、MAX和MIN等函数进行数据统计。
“`sql
SELECT COUNT(*) FROM t_student;
SELECT SUM(age) FROM t_student;
“`
5、分组查询:使用GROUP BY子句对查询结果进行分组。
“`sql
SELECT sex, AVG(age) FROM t_student GROUP BY sex;
“`
多表查询
1、内连接:使用INNER JOIN关键字进行表之间的连接查询。
“`sql
SELECT t_student.name, t_orders.amount
FROM t_student
INNER JOIN t_orders ON t_student.number = t_orders.student_number;
“`
2、外连接:使用LEFT JOIN或RIGHT JOIN关键字进行外连接查询。
“`sql
SELECT t_student.name, t_orders.amount
FROM t_student
LEFT JOIN t_orders ON t_student.number = t_orders.student_number;
“`
3、子查询:在一个查询中使用另一个查询的结果。
“`sql
SELECT name FROM t_student WHERE age > (SELECT AVG(age) FROM t_student);
“`
事务处理
事务用于保证数据的一致性和完整性,通过BEGIN、COMMIT和ROLLBACK语句进行管理。
“`sql
BEGIN;
UPDATE t_student SET age = 22 WHERE name = ‘温家旺’;
UPDATE t_orders SET amount = 500 WHERE student_number = 001;
COMMIT; 如果出错则使用ROLLBACK;
“`
索引与视图
1、索引:提高查询速度,常用的索引类型包括B树索引和哈希索引。
“`sql
CREATE INDEX index_name ON t_student (age);
“`
2、视图:虚拟表,用于简化复杂查询。
“`sql
CREATE VIEW v_student AS SELECT name, age FROM t_student;
SELECT * FROM v_student;
“`
十一、常见问题解答(FAQs)
问题1:如何选择合适的存储引擎?
回答:选择存储引擎主要取决于应用的需求,InnoDB支持事务处理和外键约束,适合需要高可靠性和数据完整性的应用;MyISAM不支持事务处理但访问速度快,适合读操作远多于写操作的应用,在选择存储引擎时,需要考虑数据量、并发访问量、数据一致性要求等因素。
问题2:什么是事务?如何在MySQL中使用事务?
回答:事务是一组逻辑操作单元,具有原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)四个特性,通常简称为ACID,在MySQL中,事务通过BEGIN、COMMIT和ROLLBACK语句进行管理,BEGIN开始一个事务,COMMIT提交事务,ROLLBACK回滚事务,如果在事务执行过程中出现错误,可以使用ROLLBACK撤销所有已执行的操作。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1095579.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复