青少年编程与数学 02-011 MySQL数据库应用 10课题、记录的利用 ...

打印 上一主题 下一主题

主题 1006|帖子 1006|积分 3018

课题摘要: 本文详细介绍了MySQL数据库中表记录的利用,包括记录的组成、插入、更新、删除和查询记录的方法。文章通过示例展示了怎样使用INSERT语句添加记录,UPDATE语句修改记录,DELETE语句删除记录,以及SELECT语句查询记录。同时,强调了记录约束的重要性,如主键、非空、唯一、检查和外键约束,这些约束确保数据的一致性和完整性。通过这些利用和约束,可以有效地管理和利用MySQL数据库中的数据。
  
一、表的记录

在MySQL中,表的记录(Record) 是指表中的一行数据,代表了一个实体的具体信息。每个记录由多个字段(Field)组成,每个字段对应一个列(Column),存储了该实体的某个属性的值。表是由多条记录组成的集合,用于存储和管理相关数据。
表的记录的组成



  • 字段(Field):记录中的每个数据项,对应表中的一个列。
  • 列(Column):表中的垂直部门,界说了记录中某个属性的数据类型和约束。
  • 行(Row):表中的水平部门,代表一条完整的记录。
示例

假设有一个students表,用于存储学生的信息,表布局如下:
  1. CREATE TABLE students (
  2.   id INT PRIMARY KEY AUTO_INCREMENT,
  3.   name VARCHAR(100) NOT NULL,
  4.   age INT,
  5.   email VARCHAR(100) NOT NULL
  6. );
复制代码
插入记录

插入几条学生记录:
  1. INSERT INTO students (name, age, email) VALUES ('Alice', 25, 'alice@example.com');
  2. INSERT INTO students (name, age, email) VALUES ('Bob', 30, 'bob@example.com');
  3. INSERT INTO students (name, age, email) VALUES ('Charlie', 22, 'charlie@example.com');
复制代码
查看记录

查询students表中的所有记录:
  1. SELECT * FROM students;
复制代码
输出结果可能如下:
  1. +----+--------+-----+---------------------+
  2. | id | name   | age | email               |
  3. +----+--------+-----+---------------------+
  4. |  1 | Alice  |  25 | alice@example.com   |
  5. |  2 | Bob    |  30 | bob@example.com     |
  6. |  3 | Charlie|  22 | charlie@example.com |
  7. +----+--------+-----+---------------------+
复制代码
记录的利用

1. 插入记录(INSERT)

向表中添加新的记录:
  1. INSERT INTO students (name, age, email) VALUES ('David', 28, 'david@example.com');
复制代码
2. 更新记录(UPDATE)

修改表中的现有记录:
  1. UPDATE students SET age = 26 WHERE name = 'Alice';
复制代码
3. 删除记录(DELETE)

从表中删除记录:
  1. DELETE FROM students WHERE name = 'Charlie';
复制代码
4. 查询记录(SELECT)

检索表中的记录:
  1. SELECT * FROM students WHERE age > 25;
复制代码
记录的约束



  • 主键约束(Primary Key):确保每条记录的唯一性。
  • 非空约束(Not Null):确保某些字段不能为空。
  • 唯一约束(Unique):确保某些字段的值在表中是唯一的。
  • 检查约束(Check):确保字段的值满足特定条件。
  • 外键约束(Foreign Key):确保字段的值在引用表中存在。
示例:带约束的表

创建一个带有多种约束的employees表:
  1. CREATE TABLE employees (
  2.   id INT PRIMARY KEY AUTO_INCREMENT,
  3.   name VARCHAR(100) NOT NULL,
  4.   age INT CHECK (age BETWEEN 18 AND 65),
  5.   email VARCHAR(100) NOT NULL UNIQUE,
  6.   department_id INT,
  7.   FOREIGN KEY (department_id) REFERENCES departments(id)
  8. );
复制代码
总结

表的记录是数据库中存储具体数据的基本单元,通过字段和列的组合,记录了实体的详细信息。通过插入、更新、删除和查询利用,可以管理和利用这些记录。同时,通过各种约束,可以确保记录的数据一致性和完整性。盼望这些信息对你有所帮助。
二、添加记录

在MySQL中,添加记录(即插入数据)是通过INSERT语句完成的。INSERT语句可以用于向表中插入一条或多条记录。以下是几种常见的INSERT语句的用法:
1. 插入单条记录

假设有一个students表,表布局如下:
  1. CREATE TABLE students (
  2.   id INT PRIMARY KEY AUTO_INCREMENT,
  3.   name VARCHAR(100) NOT NULL,
  4.   age INT,
  5.   email VARCHAR(100) NOT NULL
  6. );
复制代码
插入单条记录

  1. INSERT INTO students (name, age, email) VALUES ('Alice', 25, 'alice@example.com');
复制代码
2. 插入多条记录

可以一次性插入多条记录,只需在VALUES后面列出多组数据,每组数据用括号括起来,之间用逗号分隔。
插入多条记录

  1. INSERT INTO students (name, age, email) VALUES
  2. ('Bob', 30, 'bob@example.com'),
  3. ('Charlie', 22, 'charlie@example.com'),
  4. ('David', 28, 'david@example.com');
复制代码
3. 插入部门字段

如果某些字段有默认值或可以为空,可以只插入部门字段。
插入部门字段

  1. INSERT INTO students (name, email) VALUES ('Eve', 'eve@example.com');
复制代码
4. 插入查询结果

可以将查询结果直接插入到另一个表中。假设有一个new_students表,布局与students表相同。
插入查询结果

  1. INSERT INTO new_students (name, age, email)
  2. SELECT name, age, email FROM students WHERE age > 25;
复制代码
5. 插入时忽略重复记录

如果表中有唯一约束(如唯一索引或主键),可以使用IGNORE关键字来忽略插入利用中的重复记录。
插入时忽略重复记录

  1. INSERT IGNORE INTO students (name, age, email) VALUES ('Alice', 25, 'alice@example.com');
复制代码
6. 插入时更换重复记录

如果表中有唯一约束,可以使用REPLACE关键字来更换插入利用中的重复记录。REPLACE会先删除重复记录,然后插入新记录。
插入时更换重复记录

  1. REPLACE INTO students (name, age, email) VALUES ('Alice', 26, 'alice@example.com');
复制代码
7. 插入时获取自增ID

如果表中有自增主键,可以使用LAST_INSERT_ID()函数获取插入记录的自增ID。
插入时获取自增ID

  1. INSERT INTO students (name, age, email) VALUES ('Frank', 35, 'frank@example.com');
  2. SELECT LAST_INSERT_ID();
复制代码
示例:完整流程

假设有一个students表,表布局如下:
  1. CREATE TABLE students (
  2.   id INT PRIMARY KEY AUTO_INCREMENT,
  3.   name VARCHAR(100) NOT NULL,
  4.   age INT,
  5.   email VARCHAR(100) NOT NULL UNIQUE
  6. );
复制代码
插入单条记录

  1. INSERT INTO students (name, age, email) VALUES ('Alice', 25, 'alice@example.com');
复制代码
插入多条记录

  1. INSERT INTO students (name, age, email) VALUES
  2. ('Bob', 30, 'bob@example.com'),
  3. ('Charlie', 22, 'charlie@example.com'),
  4. ('David', 28, 'david@example.com');
复制代码
插入部门字段

  1. INSERT INTO students (name, email) VALUES ('Eve', 'eve@example.com');
复制代码
插入查询结果

  1. INSERT INTO new_students (name, age, email)
  2. SELECT name, age, email FROM students WHERE age > 25;
复制代码
插入时忽略重复记录

  1. INSERT IGNORE INTO students (name, age, email) VALUES ('Alice', 25, 'alice@example.com');
复制代码
插入时更换重复记录

  1. REPLACE INTO students (name, age, email) VALUES ('Alice', 26, 'alice@example.com');
复制代码
插入时获取自增ID

  1. INSERT INTO students (name, age, email) VALUES ('Frank', 35, 'frank@example.com');
  2. SELECT LAST_INSERT_ID();
复制代码
通过这些示例,可以全面相识怎样在MySQL中添加记录。盼望这些信息对你有所帮助。
三、删除记录

在MySQL中,删除记录是通过DELETE语句完成的。DELETE语句可以用于从表中删除一条或多条记录。为了确保删除利用的精确性和安全性,通常必要使用WHERE子句来指定删除条件。如果没有指定WHERE子句,DELETE语句将删除表中的所有记录。
1. 删除单条记录

假设有一个students表,表布局如下:
  1. CREATE TABLE students (
  2.   id INT PRIMARY KEY AUTO_INCREMENT,
  3.   name VARCHAR(100) NOT NULL,
  4.   age INT,
  5.   email VARCHAR(100) NOT NULL
  6. );
复制代码
删除单条记录

假设要删除ID为1的学生记录:
  1. DELETE FROM students WHERE id = 1;
复制代码
2. 删除多条记录

假设要删除所有年岁大于30的学生记录:
  1. DELETE FROM students WHERE age > 30;
复制代码
3. 删除所有记录

假设要删除students表中的所有记录:
  1. DELETE FROM students;
复制代码
注意:不带WHERE子句的DELETE语句将删除表中的所有记录,这是一个非常伤害的利用,务必审慎使用。
4. 使用事务确保数据安全

为了确保删除利用的原子性和一致性,可以使用事务来管理删除利用。事务可以确保在出现错误时回滚利用,避免部门数据被删除。
使用事务删除记录

  1. START TRANSACTION;DELETE FROM students WHERE id = 1;
  2. -- 检查删除利用是否精确SELECT * FROM students;
  3. -- 如果统统正常,提交事务COMMIT;-- 如果发现题目,回滚事务-- ROLLBACK;
复制代码
5. 删除记录并返回被删除的数据

在某些情况下,你可能必要在删除记录的同时获取被删除的数据。可以使用DELETE语句结合SELECT语句来实现这一点。
删除记录并返回被删除的数据

  1. DELETE FROM students
  2. WHERE id = 1
  3. RETURNING id, name, age, email;
复制代码
注意:RETURNING子句在MySQL 8.0.19及更高版本中可用。如果你使用的是较旧的版本,可以先使用SELECT语句查询数据,然后再实验DELETE语句。
6. 删除记录并限制删除数量

在某些情况下,你可能盼望限制删除记录的数量。可以使用LIMIT子句来实现这一点。
删除记录并限制删除数量

假设要删除年岁最大的前3条记录:
  1. DELETE FROM students
  2. ORDER BY age DESC
  3. LIMIT 3;
复制代码
示例:完整流程

假设有一个students表,表布局如下:
  1. CREATE TABLE students (
  2.   id INT PRIMARY KEY AUTO_INCREMENT,
  3.   name VARCHAR(100) NOT NULL,
  4.   age INT,
  5.   email VARCHAR(100) NOT NULL
  6. );
复制代码
插入一些示例数据

  1. INSERT INTO students (name, age, email) VALUES
  2. ('Alice', 25, 'alice@example.com'),
  3. ('Bob', 30, 'bob@example.com'),
  4. ('Charlie', 22, 'charlie@example.com'),
  5. ('David', 35, 'david@example.com');
复制代码
删除单条记录

  1. DELETE FROM students WHERE id = 1;
复制代码
删除多条记录

  1. DELETE FROM students WHERE age > 30;
复制代码
删除所有记录

  1. DELETE FROM students;
复制代码
使用事务删除记录

  1. START TRANSACTION;DELETE FROM students WHERE id = 2;-- 检查删除利用是否精确SELECT * FROM students;
  2. -- 如果统统正常,提交事务COMMIT;-- 如果发现题目,回滚事务-- ROLLBACK;
复制代码
删除记录并返回被删除的数据

  1. DELETE FROM students
  2. WHERE id = 3
  3. RETURNING id, name, age, email;
复制代码
删除记录并限制删除数量

  1. DELETE FROM students
  2. ORDER BY age DESC
  3. LIMIT 3;
复制代码
通过这些示例,可以全面相识怎样在MySQL中删除记录。盼望这些信息对你有所帮助。
四、修改记录

在MySQL中,修改记录是通过UPDATE语句完成的。UPDATE语句可以用于更新表中的一条或多条记录。为了确保更新利用的精确性和安全性,通常必要使用WHERE子句来指定更新条件。如果没有指定WHERE子句,UPDATE语句将更新表中的所有记录。
1. 更新单条记录

假设有一个students表,表布局如下:
  1. CREATE TABLE students (
  2.   id INT PRIMARY KEY AUTO_INCREMENT,
  3.   name VARCHAR(100) NOT NULL,
  4.   age INT,
  5.   email VARCHAR(100) NOT NULL
  6. );
复制代码
更新单条记录

假设要更新ID为1的学生的年岁和电子邮件:
  1. UPDATE students
  2. SET age = 26, email = 'alice_new@example.com'
  3. WHERE id = 1;
复制代码
2. 更新多条记录

假设要更新所有年岁大于30的学生的电子邮件:
  1. UPDATE students
  2. SET email = CONCAT(name, '@newdomain.com')
  3. WHERE age > 30;
复制代码
3. 更新所有记录

假设要将所有学生的电子邮件域名更新为newdomain.com:
  1. UPDATE students
  2. SET email = CONCAT(SUBSTRING_INDEX(email, '@', 1), '@newdomain.com');
复制代码
注意:不带WHERE子句的UPDATE语句将更新表中的所有记录,这是一个非常伤害的利用,务必审慎使用。
4. 使用事务确保数据安全

为了确保更新利用的原子性和一致性,可以使用事务来管理更新利用。事务可以确保在出现错误时回滚利用,避免部门数据被更新。
使用事务更新记录

  1. START TRANSACTION;UPDATE students
  2. SET age = 26, email = 'alice_new@example.com'
  3. WHERE id = 1;
  4. -- 检查更新利用是否精确SELECT * FROM students WHERE id = 1;-- 如果统统正常,提交事务COMMIT;-- 如果发现题目,回滚事务-- ROLLBACK;
复制代码
5. 更新记录并返回被更新的数据

在某些情况下,你可能必要在更新记录的同时获取被更新的数据。可以使用UPDATE语句结合SELECT语句来实现这一点。
更新记录并返回被更新的数据

  1. UPDATE students
  2. SET age = 26, email = 'alice_new@example.com'
  3. WHERE id = 1
  4. RETURNING id, name, age, email;
复制代码
注意:RETURNING子句在MySQL 8.0.19及更高版本中可用。如果你使用的是较旧的版本,可以先使用SELECT语句查询数据,然后再实验UPDATE语句。
6. 更新记录并限制更新数量

在某些情况下,你可能盼望限制更新记录的数量。可以使用LIMIT子句来实现这一点。
更新记录并限制更新数量

假设要更新年岁最大的前3条记录的电子邮件:
  1. UPDATE students
  2. SET email = CONCAT(name, '@newdomain.com')
  3. ORDER BY age DESC
  4. LIMIT 3;
复制代码
示例:完整流程

假设有一个students表,表布局如下:
  1. CREATE TABLE students (
  2.   id INT PRIMARY KEY AUTO_INCREMENT,
  3.   name VARCHAR(100) NOT NULL,
  4.   age INT,
  5.   email VARCHAR(100) NOT NULL
  6. );
复制代码
插入一些示例数据

  1. INSERT INTO students (name, age, email) VALUES
  2. ('Alice', 25, 'alice@example.com'),
  3. ('Bob', 30, 'bob@example.com'),
  4. ('Charlie', 22, 'charlie@example.com'),
  5. ('David', 35, 'david@example.com');
复制代码
更新单条记录

  1. UPDATE students
  2. SET age = 26, email = 'alice_new@example.com'
  3. WHERE id = 1;
复制代码
更新多条记录

  1. UPDATE students
  2. SET email = CONCAT(name, '@newdomain.com')
  3. WHERE age > 30;
复制代码
更新所有记录

  1. UPDATE students
  2. SET email = CONCAT(SUBSTRING_INDEX(email, '@', 1), '@newdomain.com');
复制代码
使用事务更新记录

  1. START TRANSACTION;UPDATE students
  2. SET age = 26, email = 'alice_new@example.com'
  3. WHERE id = 1;
  4. -- 检查更新利用是否精确SELECT * FROM students WHERE id = 1;-- 如果统统正常,提交事务COMMIT;-- 如果发现题目,回滚事务-- ROLLBACK;
复制代码
更新记录并返回被更新的数据

  1. UPDATE students
  2. SET age = 26, email = 'alice_new@example.com'
  3. WHERE id = 1
  4. RETURNING id, name, age, email;
复制代码
更新记录并限制更新数量

  1. UPDATE students
  2. SET email = CONCAT(name, '@newdomain.com')
  3. ORDER BY age DESC
  4. LIMIT 3;
复制代码
通过这些示例,可以全面相识怎样在MySQL中修改记录。盼望这些信息对你有所帮助。
五、查询记录

在MySQL中,查询记录是通过SELECT语句完成的。SELECT语句用于从一个或多个表中检索数据。它非常机动,可以结合各种条件和子句来精确地获取所需的数据。以下是SELECT语句的一些常见用法:
1. 基本查询

从表中检索所有列的数据:
  1. SELECT * FROM students;
复制代码
2. 指定列查询

从表中检索特定列的数据:
  1. SELECT id, name, email FROM students;
复制代码
3. 带条件查询

使用WHERE子句根据条件过滤数据:
  1. SELECT * FROM students WHERE age > 25;
复制代码
4. 使用逻辑运算符查询

结合逻辑运算符(如AND、OR、NOT)举行复杂条件查询:
  1. SELECT * FROM students WHERE age > 25 AND email LIKE '%example.com';
复制代码
5. 使用比力运算符查询

使用比力运算符(如=、<>、>、<、>=、<=)举行比力查询:
  1. SELECT * FROM students WHERE age >= 30;
复制代码
6. 使用IN子句查询

使用IN子句检查列值是否在指定的集合中:
  1. SELECT * FROM students WHERE id IN (1, 3, 5);
复制代码
7. 使用BETWEEN子句查询

使用BETWEEN子句检查列值是否在指定的范围内:
  1. SELECT * FROM students WHERE age BETWEEN 20 AND 30;
复制代码
8. 使用LIKE子句查询

使用LIKE子句举行模式匹配查询:
  1. SELECT * FROM students WHERE name LIKE 'A%';  -- 查找以A开头的名字
  2. SELECT * FROM students WHERE email LIKE '%@example.com';  -- 查找邮箱域名是example.com的记录
复制代码
9. 使用ORDER BY子句排序

使用ORDER BY子句对查询结果举行排序:
  1. SELECT * FROM students ORDER BY age ASC;  -- 按年龄升序排序
  2. SELECT * FROM students ORDER BY age DESC;  -- 按年龄降序排序
复制代码
10. 使用LIMIT子句限制结果数量

使用LIMIT子句限制查询结果的数量:
  1. SELECT * FROM students LIMIT 5;  -- 限制结果为前5条记录
  2. SELECT * FROM students ORDER BY age DESC LIMIT 3;  -- 限制结果为年龄最大的前3条记录
复制代码
11. 使用DISTINCT子句去除重复记录

使用DISTINCT子句去除查询结果中的重复记录:
  1. SELECT DISTINCT email FROM students;  -- 去除重复的电子邮件地址
复制代码
12. 团结查询

使用JOIN子句举行表的团结查询:
  1. -- 假设有两个表:students 和 courses
  2. CREATE TABLE students (
  3.   id INT PRIMARY KEY AUTO_INCREMENT,
  4.   name VARCHAR(100) NOT NULL,
  5.   email VARCHAR(100) NOT NULL
  6. );
  7. CREATE TABLE courses (
  8.   id INT PRIMARY KEY AUTO_INCREMENT,
  9.   course_name VARCHAR(100) NOT NULL
  10. );
  11. CREATE TABLE student_courses (
  12.   student_id INT,
  13.   course_id INT,
  14.   PRIMARY KEY (student_id, course_id),
  15.   FOREIGN KEY (student_id) REFERENCES students(id),
  16.   FOREIGN KEY (course_id) REFERENCES courses(id)
  17. );
  18. -- 插入一些示例数据
  19. INSERT INTO students (name, email) VALUES
  20. ('Alice', 'alice@example.com'),
  21. ('Bob', 'bob@example.com'),
  22. ('Charlie', 'charlie@example.com');
  23. INSERT INTO courses (course_name) VALUES
  24. ('Math'),
  25. ('Science'),
  26. ('History');
  27. INSERT INTO student_courses (student_id, course_id) VALUES
  28. (1, 1),
  29. (1, 2),
  30. (2, 1),
  31. (3, 3);
  32. -- 查询学生及其选修的课程
  33. SELECT s.id, s.name, c.course_name
  34. FROM students s
  35. JOIN student_courses sc ON s.id = sc.student_id
  36. JOIN courses c ON sc.course_id = c.id;
复制代码
13. 分组查询

使用GROUP BY子句举行分组查询:
  1. SELECT course_id, COUNT(*) AS student_count
  2. FROM student_courses
  3. GROUP BY course_id;
复制代码
14. 条件分组查询

使用HAVING子句举行分组后的条件过滤:
  1. SELECT course_id, COUNT(*) AS student_count
  2. FROM student_courses
  3. GROUP BY course_id
  4. HAVING student_count > 1;
复制代码
示例:完整流程

假设有一个students表,表布局如下:
  1. CREATE TABLE students (
  2.   id INT PRIMARY KEY AUTO_INCREMENT,
  3.   name VARCHAR(100) NOT NULL,
  4.   age INT,
  5.   email VARCHAR(100) NOT NULL
  6. );
复制代码
插入一些示例数据

  1. INSERT INTO students (name, age, email) VALUES
  2. ('Alice', 25, 'alice@example.com'),
  3. ('Bob', 30, 'bob@example.com'),
  4. ('Charlie', 22, 'charlie@example.com'),
  5. ('David', 35, 'david@example.com');
复制代码
基本查询

  1. SELECT * FROM students;
复制代码
指定列查询

  1. SELECT id, name, email FROM students;
复制代码
带条件查询

  1. SELECT * FROM students WHERE age > 25;
复制代码
使用逻辑运算符查询

  1. SELECT * FROM students WHERE age > 25 AND email LIKE '%example.com';
复制代码
使用比力运算符查询

  1. SELECT * FROM students WHERE age >= 30;
复制代码
使用IN子句查询

  1. SELECT * FROM students WHERE id IN (1, 3, 5);
复制代码
使用BETWEEN子句查询

  1. SELECT * FROM students WHERE age BETWEEN 20 AND 30;
复制代码
使用LIKE子句查询

  1. SELECT * FROM students WHERE name LIKE 'A%';  -- 查找以A开头的名字
  2. SELECT * FROM students WHERE email LIKE '%@example.com';  -- 查找邮箱域名是example.com的记录
复制代码
使用ORDER BY子句排序

  1. SELECT * FROM students ORDER BY age ASC;  -- 按年龄升序排序
  2. SELECT * FROM students ORDER BY age DESC;  -- 按年龄降序排序
复制代码
使用LIMIT子句限制结果数量

  1. SELECT * FROM students LIMIT 5;  -- 限制结果为前5条记录
  2. SELECT * FROM students ORDER BY age DESC LIMIT 3;  -- 限制结果为年龄最大的前3条记录
复制代码
使用DISTINCT子句去除重复记录

  1. SELECT DISTINCT email FROM students;  -- 去除重复的电子邮件地址
复制代码
团结查询

  1. SELECT s.id, s.name, c.course_name
  2. FROM students s
  3. JOIN student_courses sc ON s.id = sc.student_id
  4. JOIN courses c ON sc.course_id = c.id;
复制代码
分组查询

  1. SELECT course_id, COUNT(*) AS student_count
  2. FROM student_courses
  3. GROUP BY course_id;
复制代码
条件分组查询

  1. SELECT course_id, COUNT(*) AS student_count
  2. FROM student_courses
  3. GROUP BY course_id
  4. HAVING student_count > 1;
复制代码
通过这些示例,可以全面相识怎样在MySQL中查询记录。盼望这些信息对你有所帮助。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

去皮卡多

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表