一、基本操作
MySQL 是一种基于关系模型的数据库管理系统,可以通过各种操作来实现数据的增删改查。
1、增加数据:使用 INSERT INTO 语句向表中添加数据。例如添加一条学生信息:
INSERT INTO student (name,age,sex,score) VALUES ('Tom', 18, 'M', 90);
2、修改数据:使用 UPDATE 语句修改表中现有数据。例如将学生 Tom 的年龄改为 19 岁:
UPDATE student SET age=19 WHERE name='Tom';
3、删除数据:使用 DELETE FROM 语句删除表中的数据。例如删除名字为 Tom 的学生信息:
DELETE FROM student WHERE name='Tom';
4、查询数据:使用 SELECT 语句从表中获取数据。例如查询 score 大于等于 60 分的学生信息:
SELECT * FROM student WHERE score>=60;
二、约束
MySQL 中的约束可以保证数据的完整性和一致性。主要有以下几种类型:
1、主键(PRIMARY KEY):一个表只能有一个主键,用于唯一标识一条记录。
2、唯一键(UNIQUE):保证列中的所有值都是唯一的。
3、非空约束(NOT NULL):用于限制某一列不能有 NULL 值。
4、外键(FOREIGN KEY):用于建立表与表之间的关系,保证数据的一致性。
例如创建一张学生表,其中 id 为主键,name 不能重复的唯一键,age 和 score 不能为 NULL:
CREATE TABLE student (
id INT PRIMARY KEY,
name VARCHAR(20) UNIQUE,
age INT NOT NULL,
sex VARCHAR(2),
score FLOAT NOT NULL
);
三、连接和子查询
MySQL 中的连接和子查询可以用于联结多张表或查询嵌套表。
1、连接:使用 JOIN 语句可以在多张表之间建立连接。例如查询学生表和课程表之间的连接信息:
SELECT student.name, course.course_name
FROM student
INNER JOIN score
ON student.id=score.student_id
INNER JOIN course
ON course.id=score.course_id;
2、子查询:使用 SELECT 语句可以在查询中嵌套查询,称为子查询。例如查询分数最高的学生信息:
SELECT * FROM student WHERE score=(SELECT MAX(score) FROM student);
四、索引
MySQL 中的索引可以提高数据查询的速度,主要有以下几种类型:
1、普通索引:基本的索引类型,可以提高查询的速度。
2、唯一索引:保证列中的所有值都是唯一的,也可以提高查询速度。
3、主键索引:主键类型的索引,唯一标识一条记录。
4、全文索引:用于搜索长文本数据的索引。
例如在学生表中为分数这一列创建索引:
CREATE INDEX score_index ON student(score);
五、存储过程和触发器
MySQL 中的存储过程和触发器可以用于在数据库内部自动执行一些操作。
1、存储过程:一组预先编译好的 SQL 语句,可以通过调用来执行。例如创建一个求平均分数的存储过程:
CREATE PROCEDURE avg_score()
BEGIN
SELECT AVG(score) FROM student;
END;
2、触发器:在执行 INSERT、UPDATE、DELETE 等操作时自动执行的代码块。例如创建一个在学生表插入数据时更新课程表的触发器:
CREATE TRIGGER update_course AFTER INSERT ON student
FOR EACH ROW
BEGIN
INSERT INTO course (course_name, student_id) VALUES ('Math', NEW.id);
END;
六、备份和恢复
MySQL 中的备份和恢复可以用于数据的安全性和完整性。
1、备份:可以使用命令行或 GUI 工具进行备份。例如使用命令行对整个数据库进行备份:
mysqldump -uroot -p123456 --database mydb > mydb.sql
2、恢复:可以使用命令行或 GUI 工具进行恢复。例如使用命令行恢复整个数据库:
mysql -uroot -p123456 mydb < mydb.sql
七、总结
本文对 MySQL 的基本操作、约束、连接和子查询、索引、存储过程和触发器、备份和恢复进行了详细的介绍。MySQL 是一种功能强大的数据库管理系统,掌握它的操作是开发工程师必不可少的技能。