在关系数据库管理系统(RDBMS)中,增删改查(CRUD)操作是最基本的数据库操作。以下是这些操作的详细介绍以及其他常用的数据库操作语句。
增(Create/Insert)
1. 创建数据库
创建一个新的数据库。
sql
CREATE DATABASE database_name;
2. 创建表
在指定的数据库中创建一个新表。
sql
CREATE TABLE table_name (
column1 data_type constraints,
column2 data_type constraints,
...
);
例如:
sql
CREATE TABLE employees (
id INT AUTO_INCREMENT PRIMARY KEY,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE,
hire_date DATE,
salary DECIMAL(10, 2)
);
3. 插入数据
向表中插入新记录。
sql
INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...);
例如:
sql
INSERT INTO employees (first_name, last_name, email, hire_date, salary)
VALUES ('John', 'Doe', 'john.doe@example.com', '2023-01-15', 50000.00);
删(Delete)
1. 删除记录
从表中删除一条或多条记录。
sql
DELETE FROM table_name WHERE condition;
例如:
sql
DELETE FROM employees WHERE id = 10;
2. 删除表
从数据库中删除表及其所有数据。
sql
DROP TABLE table_name;
3. 删除数据库
删除整个数据库及其所有包含的表。
sql
DROP DATABASE database_name;
改(Update)
1. 更新记录
更新表中的现有记录。
sql
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
例如:
sql
UPDATE employees
SET salary = salary * 1.1
WHERE hire_date < '2022-01-01';
查(Read/Retrieve/Select)
1. 简单查询
从表中选择数据。
sql
SELECT column1, column2, ...
FROM table_name;
例如:
sql
SELECT first_name, last_name, salary
FROM employees;
2. 带条件的查询
查询包含特定条件的数据。
sql
SELECT column1, column2, ...
FROM table_name
WHERE condition;
例如:
sql
SELECT first_name, last_name
FROM employees
WHERE salary > 50000;
3. 多条件查询
使用 AND 和 OR 进行复杂的条件查询。
sql
SELECT column1, column2, ...
FROM table_name
WHERE condition1 AND condition2;
或
sql
SELECT column1, column2, ...
FROM table_name
WHERE condition1 OR condition2;
例如:
sql
SELECT first_name, last_name
FROM employees
WHERE salary > 50000 AND hire_date < '2023-01-01';
4. 排序
按照指定的列排序结果集。
sql
SELECT column1, column2, ...
FROM table_name
ORDER BY column1 [ASC|DESC], column2 [ASC|DESC];
例如:
sql
SELECT first_name, last_name, salary
FROM employees
ORDER BY salary DESC;
5. 分组
按照指定的列对结果集进行分组,并可使用聚合函数。
sql
SELECT column1, aggregate_function(column2)
FROM table_name
GROUP BY column1;
例如:
sql
SELECT department_id, COUNT(*)
FROM employees
GROUP BY department_id;
6. 分页
限制查询结果的数量,用于分页显示。
sql
SELECT column1, column2, ...
FROM table_name
LIMIT offset, count;
例如:
sql
SELECT first_name, last_name
FROM employees
LIMIT 0, 10; -- 获取前10条记录
其他操作
1. 修改表
修改表结构,如添加、修改或删除列。
sql
-- 添加列
ALTER TABLE table_name ADD column_name data_type;
-- 修改列
ALTER TABLE table_name MODIFY column_name new_data_type;
-- 删除列
ALTER TABLE table_name DROP COLUMN column_name;
例如:
sql
ALTER TABLE employees ADD birthdate DATE;
2. 创建索引
创建索引以加速查询。
sql
CREATE INDEX index_name ON table_name (column_name);
例如:
sql
CREATE INDEX idx_last_name ON employees (last_name);
3. 创建视图
创建一个视图。
sql
CREATE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;
例如:
sql
CREATE VIEW high_salary_employees AS
SELECT first_name, last_name, salary
FROM employees
WHERE salary > 70000;
4. 创建存储过程
创建存储过程用于封装一组SQL语句。
sql
DELIMITER //
CREATE PROCEDURE procedure_name (parameters)
BEGIN
-- SQL语句
END //
DELIMITER ;
例如:
sql
DELIMITER //
CREATE PROCEDURE increase_salary (IN emp_id INT, IN increment DECIMAL(10, 2))
BEGIN
UPDATE employees
SET salary = salary + increment
WHERE id = emp_id;
END //
DELIMITER ;
5. 执行存储过程
执行存储过程。
sql
CALL procedure_name(parameters);
例如:
sql
CALL increase_salary(1, 1000.00);
6. 创建触发器
创建触发器在特定事件发生时执行。
sql
CREATE TRIGGER trigger_name
BEFORE/AFTER INSERT/UPDATE/DELETE
ON table_name
FOR EACH ROW
BEGIN
-- SQL语句
END;
例如:
sql
CREATE TRIGGER before_employee_insert
BEFORE INSERT ON employees
FOR EACH ROW
BEGIN
SET NEW.hire_date = IFNULL(NEW.hire_date, CURDATE());
END;
这些操作涵盖了数据库管理和数据操作的基本语句。了解和熟练使用这些语句,可以帮助你有效地管理数据库和处理数据。