数据库的增删改查操作语句及一些常用的进阶语句

在关系数据库管理系统(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;

这些操作涵盖了数据库管理和数据操作的基本语句。了解和熟练使用这些语句,可以帮助你有效地管理数据库和处理数据。

相关推荐
Web3&Basketball1 小时前
实测Gemini4Argon:ERQA 87%登顶长程任务榜
数据库·python·大模型·多模态·gemini·长上下文·推理优化
xiaogai_gai2 小时前
金蝶收料通知单查询策略实战教程:从源系统拉取到中间层落地的完整路径
java·前端·数据库
注塑机数据采集联网2 小时前
注塑机数据采集网关对接MES系统数字化技术方案
大数据·网络·数据库·物联网·数据挖掘·数据分析
像风一样自由20202 小时前
56.实战PostgreSQL-pgvector-FastAPI构建轻量级RAG
数据库·人工智能·postgresql·大模型·fastapi·智能体
User_芊芊君子3 小时前
KFS异构同步_260条链路DDL自动转换解析
数据库·ai·大模型
xiancai_xianyu3 小时前
Text2SQL落地生产库前,SQL要过哪三道闸
前端·数据库·sql·sql注入·text2sql·ai agent开发·企业级ai框架
Zucker n3 小时前
一款适合研究生科研工作安排的日历
linux·数据库·python
Sharewinfo_BJ4 小时前
Power BI沿袭视图详解:从看懂链路到做影响分析
数据库·数据分析·智信bi·上北智信
l1t4 小时前
DeepSeek总结的 DuckDB 2.0 中更简洁的变量语法
数据库·sql
sunshine8855 小时前
集成电路(IC)设计与封测行业10大常用ERP系统分析
大数据·数据库·人工智能