编辑
2025-09-28
SQLite
00

本文为您详细介绍 SQLite 中的外连接(OUTER JOIN)。本文将深入探讨外连接的概念、语法和用法,并通过实际的例子来展示其在数据库查询中的重要性和应用。我们将从准备测试数据开始,然后逐步深入外连接的各个方面。

准备测试数据

首先,让我们创建一些测试表和数据来演示外连接的使用。我们将创建一个简单的学校管理系统,包含学生、课程和注册信息三个表。

SQL
-- 创建学生表 CREATE TABLE students ( student_id INTEGER PRIMARY KEY, student_name TEXT NOT NULL, age INTEGER, grade TEXT ); -- 创建课程表 CREATE TABLE courses ( course_id INTEGER PRIMARY KEY, course_name TEXT NOT NULL, teacher TEXT, credits INTEGER ); -- 创建注册表 CREATE TABLE enrollments ( enrollment_id INTEGER PRIMARY KEY, student_id INTEGER, course_id INTEGER, enrollment_date TEXT, FOREIGN KEY (student_id) REFERENCES students(student_id), FOREIGN KEY (course_id) REFERENCES courses(course_id) ); -- 插入学生数据 INSERT INTO students (student_id, student_name, age, grade) VALUES (1, 'Alice Johnson', 18, '12th'), (2, 'Bob Smith', 17, '11th'), (3, 'Charlie Brown', 16, '10th'), (4, 'Diana Ross', 18, '12th'), (5, 'Edward Norton', 17, '11th'); -- 插入课程数据 INSERT INTO courses (course_id, course_name, teacher, credits) VALUES (101, 'Mathematics', 'Prof. Newton', 4), (102, 'Literature', 'Prof. Shakespeare', 3), (103, 'Physics', 'Prof. Einstein', 4), (104, 'Computer Science', 'Prof. Turing', 3), (105, 'History', 'Prof. Churchill', 3); -- 插入注册数据 INSERT INTO enrollments (enrollment_id, student_id, course_id, enrollment_date) VALUES (1, 1, 101, '2023-01-15'), (2, 1, 103, '2023-01-16'), (3, 2, 102, '2023-01-15'), (4, 3, 101, '2023-01-17'), (5, 4, 104, '2023-01-18'), (6, 5, 105, '2023-01-19'), (7, 2, 103, '2023-01-20');

这些测试数据为我们提供了一个基础,可以用来演示外连接的各种用法。

编辑
2025-09-28
SQLite
00

本文您详细介绍 SQLite 中的内连接(INNER JOIN)。本文将深入探讨内连接的概念、语法和用法,并通过实际的例子来展示其在数据库查询中的重要性和应用。我们将从准备测试数据开始,然后逐步深入内连接的各个方面。

准备测试数据

首先,让我们创建一些测试表和数据来演示内连接的使用。我们将创建一个简单的图书管理系统,包含图书、作者和出版社三个表。

SQL
-- 创建作者表 CREATE TABLE authors ( author_id INTEGER PRIMARY KEY, author_name TEXT NOT NULL, birth_year INTEGER ); -- 创建出版社表 CREATE TABLE publishers ( publisher_id INTEGER PRIMARY KEY, publisher_name TEXT NOT NULL, country TEXT ); -- 创建图书表 CREATE TABLE books ( book_id INTEGER PRIMARY KEY, title TEXT NOT NULL, author_id INTEGER, publisher_id INTEGER, publication_year INTEGER, price REAL, FOREIGN KEY (author_id) REFERENCES authors(author_id), FOREIGN KEY (publisher_id) REFERENCES publishers(publisher_id) ); -- 插入作者数据 INSERT INTO authors (author_id, author_name, birth_year) VALUES (1, 'George Orwell', 1903), (2, 'Jane Austen', 1775), (3, 'Ernest Hemingway', 1899), (4, 'Virginia Woolf', 1882), (5, 'F. Scott Fitzgerald', 1896); -- 插入出版社数据 INSERT INTO publishers (publisher_id, publisher_name, country) VALUES (1, 'Penguin Books', 'UK'), (2, 'HarperCollins', 'USA'), (3, 'Random House', 'USA'), (4, 'Simon & Schuster', 'USA'), (5, 'Macmillan Publishers', 'UK'); -- 插入图书数据 INSERT INTO books (book_id, title, author_id, publisher_id, publication_year, price) VALUES (1, '1984', 1, 1, 1949, 9.99), (2, 'Animal Farm', 1, 2, 1945, 8.99), (3, 'Pride and Prejudice', 2, 3, 1813, 7.99), (4, 'Sense and Sensibility', 2, 1, 1811, 8.50), (5, 'The Old Man and the Sea', 3, 4, 1952, 10.99), (6, 'A Farewell to Arms', 3, 2, 1929, 11.99), (7, 'Mrs Dalloway', 4, 5, 1925, 9.50), (8, 'To the Lighthouse', 4, 3, 1927, 10.50), (9, 'The Great Gatsby', 5, 4, 1925, 12.99), (10, 'Tender Is the Night', 5, 1, 1934, 11.50);

这些测试数据为我们提供了一个基础,可以用来演示内连接的各种用法。

编辑
2025-09-28
SQLite
00

本文将详细介绍 SQLite 中的子查询,并提供一些实际的测试数据和示例。本文将深入探讨子查询的概念、类型、用法,并通过具体的例子来展示其在实际应用中的强大功能。

准备测试数据

首先,让我们创建一些测试表和数据来演示子查询的使用。我们将创建一个简单的员工管理系统,包含员工、部门和项目三个表。

SQL
-- 创建部门表 CREATE TABLE departments ( dept_id INTEGER PRIMARY KEY, dept_name TEXT NOT NULL, location TEXT ); -- 创建员工表 CREATE TABLE employees ( emp_id INTEGER PRIMARY KEY, first_name TEXT NOT NULL, last_name TEXT NOT NULL, dept_id INTEGER, salary REAL, hire_date TEXT, FOREIGN KEY (dept_id) REFERENCES departments(dept_id) ); -- 创建项目表 CREATE TABLE projects ( project_id INTEGER PRIMARY KEY, project_name TEXT NOT NULL, start_date TEXT, end_date TEXT, dept_id INTEGER, FOREIGN KEY (dept_id) REFERENCES departments(dept_id) ); -- 插入部门数据 INSERT INTO departments (dept_id, dept_name, location) VALUES (1, 'IT', 'New York'), (2, 'HR', 'Los Angeles'), (3, 'Finance', 'Chicago'), (4, 'Marketing', 'San Francisco'); -- 插入员工数据 INSERT INTO employees (emp_id, first_name, last_name, dept_id, salary, hire_date) VALUES (1, 'John', 'Doe', 1, 75000, '2020-01-15'), (2, 'Jane', 'Smith', 2, 65000, '2019-05-20'), (3, 'Mike', 'Johnson', 1, 80000, '2018-03-10'), (4, 'Emily', 'Brown', 3, 72000, '2021-02-01'), (5, 'David', 'Lee', 4, 68000, '2020-11-15'), (6, 'Sarah', 'Wilson', 2, 62000, '2019-09-01'), (7, 'Tom', 'Davis', 1, 78000, '2017-07-22'), (8, 'Lisa', 'Anderson', 3, 70000, '2022-01-10'); -- 插入项目数据 INSERT INTO projects (project_id, project_name, start_date, end_date, dept_id) VALUES (1, 'CRM Upgrade', '2022-01-01', '2022-06-30', 1), (2, 'Employee Training Program', '2022-03-15', '2022-12-31', 2), (3, 'Financial Reporting System', '2022-02-01', '2022-11-30', 3), (4, 'Product Launch Campaign', '2022-04-01', '2022-09-30', 4), (5, 'Network Infrastructure Upgrade', '2022-05-01', '2022-10-31', 1);

这些测试数据为我们提供了一个基础,可以用来演示各种子查询的使用场景。

编辑
2025-09-28
SQLite
00
编辑
2025-09-28
SQLite
00

在数据库应用中,日期和时间的处理是一个常见而又关键的任务。SQLite 提供了一系列强大的内置函数来处理日期和时间,使得开发者能够轻松地进行时间相关的数据操作和计算。本文将深入探讨 SQLite 日期和时间函数的各个方面,包括其基本概念、主要函数、使用技巧以及最佳实践。

SQLite 中的日期和时间表示

SQLite 没有专门的日期和时间存储类型。相反,它使用以下方式存储日期和时间:

  1. TEXT:ISO8601 字符串格式("YYYY-MM-DD HH:MM
    .SSS")
  2. INTEGER:Unix 时间戳(自 1970-01-01 00:00:00 UTC 以来的秒数)
  3. REAL:Julian 日期数

这种灵活性使得 SQLite 能够适应各种日期时间表示方式,但也要求开发者在使用时更加谨慎。