MySQL数据库,第二章数据库高级语言

一、数据库高级语言的概念

数据库高级语言,如SQL(Structured Query Language,结构化查询语言),是一种专门用于与数据库进行交互的高级编程语言。它允许用户在高级数据结构上工作,不需要了解具体的底层数据存储方法,因此具有跨数据库系统的通用性。SQL是数据库开发和管理中最基础也是最核心的语言,广泛应用于各种关系型数据库管理系统(RDBMS)。

二、数据库高级语言的特性

  1. 非过程性:SQL是一种非过程性语言,用户只需要描述所需的数据操作,而不需要指定具体的操作步骤。这使得SQL语言更加简洁、直观。
  2. 集合操作:SQL将记录集作为操作对象,所有SQL语句都接受该集作为输入,并将该集作为输出返回。这个集合特性允许SQL语句的嵌套,使得SQL语言非常灵活和强大。
  3. 跨数据库系统通用性:由于SQL语言的标准化,不同底层结构的不同数据库系统可以使用相同的SQL语言作为数据输入和管理的接口。

三、数据库高级语言的功能

  1. 数据定义:通过数据定义语言(DDL),可以创建、删除和修改数据库结构和表,如CREATE TABLE、ALTER TABLE和DROP TABLE等命令。
  2. 数据操纵:数据操纵语言(DML)用于对数据库中的数据进行插入、更新、删除和检索操作,如INSERT、UPDATE、DELETE和SELECT等命令。
  3. 数据查询:数据查询语言(DQL)是SQL的核心部分,能够灵活地对数据库中的数据进行检索,如使用SELECT语句进行复杂的数据查询。
  4. 数据控制:数据控制语言(DCL)用于定义数据库用户的访问权限和管理安全策略,如GRANT和REVOKE等命令。

四、与其他编程语言的对比

  1. 与低级语言的对比:低级语言(如汇编语言、机器语言)运行在底层,主要实现软硬件交互。而数据库高级语言则运行在底层搭起的各种平台上,实现与数据库的交互和数据管理。
  2. 与通用编程语言的对比:虽然Python、Java等通用编程语言也广泛用于数据库开发,但它们通常需要通过特定的库或框架(如Python的SQLAlchemy、Java的JDBC等)与数据库进行交互。相比之下,SQL语言更加专注于数据库操作,具有更高的效率和更简洁的语法。

五、总结

数据库高级语言(如SQL)是数据库开发和管理中不可或缺的工具。它以其简洁的语法、强大的功能和跨数据库系统的通用性而著称。通过掌握数据库高级语言,用户可以更加高效地管理和操作数据库中的数据,为各种应用场景提供有力的支持。

创建表和添加约束

假设我们有两个表:students(学生)和 courses(课程),以及一个关联表 enrollments(选课)。

-- 创建学生表,添加主键约束
CREATE TABLE students (
    student_id INT AUTO_INCREMENT PRIMARY KEY, -- 主键约束
    first_name VARCHAR(50) NOT NULL,
    last_name VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE NOT NULL
);
 
-- 创建课程表,添加主键约束
CREATE TABLE courses (
    course_id INT AUTO_INCREMENT PRIMARY KEY,
    course_name VARCHAR(100) NOT NULL,
    course_description TEXT
);
 
-- 创建选课表,添加主键约束,外键约束
CREATE TABLE enrollments (
    enrollment_id INT AUTO_INCREMENT PRIMARY KEY,
    student_id INT,
    course_id INT,
    enrollment_date DATE,
    FOREIGN KEY (student_id) REFERENCES students(student_id), -- 外键约束
    FOREIGN KEY (course_id) REFERENCES courses(course_id)
);
插入数据
-- 插入学生数据
INSERT INTO students (first_name, last_name, email) VALUES 
('John', 'Doe', 'john.doe@example.com'),
('Jane', 'Smith', 'jane.smith@example.com');
 
-- 插入课程数据
INSERT INTO courses (course_name, course_description) VALUES 
('Mathematics', 'Introduction to Algebra'),
('Science', 'Physics 101');
 
-- 插入选课数据
INSERT INTO enrollments (student_id, course_id, enrollment_date) VALUES 
(1, 1, '2023-10-01'),
(2, 2, '2023-10-02'),
(1, 2, '2023-10-03');
查询数据
-- 查询所有学生
SELECT * FROM students;
 
-- 查询所有课程
SELECT * FROM courses;
 
-- 查询所有选课记录
SELECT * FROM enrollments;
 
-- 查询选了"Physics 101"课程的学生
SELECT s.first_name, s.last_name
FROM students s
JOIN enrollments e ON s.student_id = e.student_id
JOIN courses c ON e.course_id = c.course_id
WHERE c.course_name = 'Science';
更新数据
-- 更新学生信息
-- where是条件,就比如是要修改id为1的QQ邮箱
UPDATE students SET email = 'john.newemail@example.com' WHERE student_id = 1;
 
-- 更新课程信息
UPDATE courses SET course_description = 'Advanced Algebra' WHERE course_id = 1;
删除数据

注意!where是条件的意思,就比如要删除id为2的同学

-- 删除某个学生
DELETE FROM students WHERE student_id = 2;
 
-- 删除某个课程
DELETE FROM courses WHERE course_id = 2;
 
-- 删除某个选课记录
DELETE FROM enrollments WHERE enrollment_id = 3;

练习题

  1. 创建表
    • 创建一个名为 teachers 的表,包含以下字段:teacher_id(主键,自增)、first_name(非空)、last_name(非空)、email(唯一,非空)。
    • 创建一个名为 departments 的表,包含以下字段:department_id(主键,自增)、department_name(非空)。
    • 创建一个名为 teacher_departments 的表,包含以下字段:teacher_department_id(主键,自增)、teacher_id(外键,引用 teachers 表的 teacher_id)、department_id(外键,引用 departments 表的 department_id)。
  2. 插入数据
    • 向 teachers 表中插入3名老师的信息。
    • 向 departments 表中插入2个部门的信息。
    • 向 teacher_departments 表中插入数据,表示哪些老师属于哪些部门。
  3. 查询数据
    • 查询所有老师及其所属的部门名称。
    • 查询没有分配任何老师的部门。
  4. 更新数据
    • 更新一个老师的电子邮件地址。
    • 更新一个部门的名称。
  5. 删除数据
    • 删除一个老师及其相关的所有记录(在 teacher_departments 表中)。
    • 删除一个没有任何老师分配的部门。

通过这些练习,你可以进一步熟悉MySQL的基本操作以及约束的使用。希望这些示例和练习题对你有帮助!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值