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

在关系数据库管理系统(RDBMS)中,增删改查(CRUD)操作是最基本的数据库操作。以下是这些操作的详细介绍以及其他常用的数据库操作语句。

增(Create/Insert)

1. 创建数据库

创建一个新的数据库。

CREATE DATABASE database_name;

2. 创建表

在指定的数据库中创建一个新表。

CREATE TABLE table_name (column1 data_type constraints,column2 data_type constraints,...
);

例如:

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. 插入数据

向表中插入新记录。

INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...);

例如:

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. 删除记录

从表中删除一条或多条记录。

DELETE FROM table_name WHERE condition;

例如:

DELETE FROM employees WHERE id = 10;

2. 删除表

从数据库中删除表及其所有数据。

DROP TABLE table_name;

3. 删除数据库

删除整个数据库及其所有包含的表。

DROP DATABASE database_name;

改(Update)

1. 更新记录

更新表中的现有记录。

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

例如:

UPDATE employees
SET salary = salary * 1.1
WHERE hire_date < '2022-01-01';

查(Read/Retrieve/Select)

1. 简单查询

从表中选择数据。

SELECT column1, column2, ...
FROM table_name;

例如:

SELECT first_name, last_name, salary
FROM employees;

2. 带条件的查询

查询包含特定条件的数据。

SELECT column1, column2, ...
FROM table_name
WHERE condition;

例如:

SELECT first_name, last_name
FROM employees
WHERE salary > 50000;

3. 多条件查询

使用 AND 和 OR 进行复杂的条件查询。

SELECT column1, column2, ...
FROM table_name
WHERE condition1 AND condition2;

SELECT column1, column2, ...
FROM table_name
WHERE condition1 OR condition2;

例如:

SELECT first_name, last_name
FROM employees
WHERE salary > 50000 AND hire_date < '2023-01-01';

4. 排序

按照指定的列排序结果集。

SELECT column1, column2, ...
FROM table_name
ORDER BY column1 [ASC|DESC], column2 [ASC|DESC];

例如:

SELECT first_name, last_name, salary
FROM employees
ORDER BY salary DESC;

5. 分组

按照指定的列对结果集进行分组,并可使用聚合函数。

SELECT column1, aggregate_function(column2)
FROM table_name
GROUP BY column1;

例如:

SELECT department_id, COUNT(*)
FROM employees
GROUP BY department_id;

6. 分页

限制查询结果的数量,用于分页显示。

SELECT column1, column2, ...
FROM table_name
LIMIT offset, count;

例如:

SELECT first_name, last_name
FROM employees
LIMIT 0, 10; -- 获取前10条记录

其他操作

1. 修改表

修改表结构,如添加、修改或删除列。

-- 添加列
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;

例如:

ALTER TABLE employees ADD birthdate DATE;

2. 创建索引

创建索引以加速查询。

CREATE INDEX index_name ON table_name (column_name);

例如:

CREATE INDEX idx_last_name ON employees (last_name);

3. 创建视图

创建一个视图。

CREATE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;

例如:

CREATE VIEW high_salary_employees AS
SELECT first_name, last_name, salary
FROM employees
WHERE salary > 70000;

4. 创建存储过程

创建存储过程用于封装一组SQL语句。

DELIMITER //CREATE PROCEDURE procedure_name (parameters)
BEGIN-- SQL语句
END //DELIMITER ;

例如:

DELIMITER //CREATE PROCEDURE increase_salary (IN emp_id INT, IN increment DECIMAL(10, 2))
BEGINUPDATE employeesSET salary = salary + incrementWHERE id = emp_id;
END //DELIMITER ;

5. 执行存储过程

执行存储过程。

CALL procedure_name(parameters);

例如:

CALL increase_salary(1, 1000.00);

6. 创建触发器

创建触发器在特定事件发生时执行。

CREATE TRIGGER trigger_name
BEFORE/AFTER INSERT/UPDATE/DELETE
ON table_name
FOR EACH ROW
BEGIN-- SQL语句
END;

例如:

CREATE TRIGGER before_employee_insert
BEFORE INSERT ON employees
FOR EACH ROW
BEGINSET NEW.hire_date = IFNULL(NEW.hire_date, CURDATE());
END;

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/28844.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

lua手动添加Opencv Mat对象

错误写法 在lua的userdata中分配内存 使用c的placement new 调用 Mat 类的构造函数&#xff0c;把对象分配在lua的userdata空间中 Mat的生命周期由lua虚拟机管理&#xff0c;跟随lua变量生命周期 void createMat(const std::string& filename,Mat *result) {Mat img c…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 生成哈夫曼树(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 📎在线评测链接 生成哈夫曼树(100分) 🌍 评测功能需要订阅专栏后私信联系清…

如何应对缺失值带来的分布变化?探索填充缺失值的最佳插补算法

本文将探讨了缺失值插补的不同方法&#xff0c;并比较了它们在复原数据真实分布方面的效果&#xff0c;处理插补是一个不确定性的问题&#xff0c;尤其是在样本量较小或数据复杂性高时的挑战&#xff0c;应选择能够适应数据分布变化并准确插补缺失值的方法。 我们假设存在一个…

506.相对名次

给你一个长度为 n 的整数数组 score &#xff0c;其中 score[i] 是第 i 位运动员在比赛中的得分。所有得分都 互不相同 。 运动员将根据得分 决定名次 &#xff0c;其中名次第 1 的运动员得分最高&#xff0c;名次第 2 的运动员得分第 2 高&#xff0c;依此类推。运动员的名次…

【Java】已解决:Java.lang.OutOfMemoryError: GC overhead limit exceeded

文章目录 问题背景可能出错的原因错误代码示例正确代码示例注意事项 问题背景 java.lang.OutOfMemoryError: GC overhead limit exceeded 是Java虚拟机&#xff08;JVM&#xff09;在运行时遇到的一种内存溢出错误。这种错误通常发生在应用程序的堆内存&#xff08;Heap Memor…

c++ namespace详解

在C中&#xff0c;命名空间&#xff08;namespace&#xff09;是一种用于组织代码的机制&#xff0c;能够避免命名冲突。通过命名空间&#xff0c;可以将相关的类、函数、变量等组织在一起&#xff0c;使代码更具结构性和可读性。 使用命名空间 定义命名空间 你可以使用关键字…

香港Web3时代:比特币可以成为「收益性资产」吗?

原文标题&#xff1a;《CAN BITCOIN BE A PRODUCTIVE ASSET?》撰文&#xff1a;Pascal Hgli编译&#xff1a;Chris&#xff0c;Techub News本文来源香港Web3媒体 Techub News 比特币正在经历一场大的变化&#xff0c;人们对其性质有不同的看法。有些人将其视为日常交易的货币…

数据结构试题 16-17

先这样吧&#xff0c;&#xff0c;专业课不是统考&#xff0c;我发现每年的卷子风格都不太一样&#xff0c;侧重点也不一样。以及21的和16的发生了很大的改变。等明年1月再看看吧 那就先over啦 数据结构撒花&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&am…

基于single flight来解决缓存击穿

目录 1. 缓存击穿2. 常见解决方案3.single flight方式3.1 模拟业务场景3.2 使用single flight的方式 缓存雪崩、缓存击穿、缓存穿透不单单是缓存领域的经典场景&#xff0c;更是面试当牛马时必备&#xff08;背&#xff09;八股文。 我们来讨论下缓存击穿场景下的解决方案。 …

【AI开发】RAG基础

RAG的基本流程&#xff1a; 用一个loader把knowledge base里的知识做成一个个的document&#xff0c;然后把document切分成snippets&#xff0c;把snippets通过embedding&#xff08;比如openai的embedding模型或者huggingface的&#xff09;向量化&#xff0c;存储到vectordb…

git 配置私人令牌

这里写自定义目录标题 获取私人令牌配置个人令牌 获取私人令牌 在个人设置里点击私人令牌选型&#xff0c;之后生成令牌即可。注意&#xff1a;令牌只会出现一次&#xff0c;务必保存好。 配置个人令牌 个人令牌&#xff1a;3c15c866fa61066212a83c66fd8133ba # 进入项目文…

.NET C# 实现国密算法加解密

.NET C# 实现国密算法加解密 概述1. SM12. SM23. SM34. SM45. SM76. SM97. ZUC C#代码实现1 SM22 SM33 SM4 概述 国密算法&#xff08;SM算法&#xff09;是中国国家密码管理局制定的一系列密码算法标准。这些算法被广泛应用于各种信息安全领域&#xff0c;包括通信、电子商务…

护眼灯对眼睛有伤害吗?千万要小心的行业四大弊端内幕

护眼灯&#xff0c;作为现代家居与办公环境中不可或缺的照明伴侣&#xff0c;因其普及性广受青睐。然而&#xff0c;随着大众对视觉健康意识的逐渐增强&#xff0c;一个疑问悄然滋生&#xff1a;护眼灯对眼睛有伤害吗&#xff1f;这一问题不仅触及到了人们对视觉健康的深层担忧…

MLOps模型部署的三种策略:批处理、实时、边缘计算

机器学习运维&#xff08;MLOps&#xff09;是一组用于自动化和简化机器学习&#xff08;ML&#xff09;工作流程和部署的实践。所选择的部署策略可以显著影响系统的性能和效用。所以需要根据用例和需求&#xff0c;采用不同的部署策略。在这篇文章中&#xff0c;我们将探讨三种…

Java家政预约系统源码 家政上门APP源码 家电安装、维修、清洗、美容系统源码、家政系统各端功能细分

Java家政预约系统源码 家政上门APP源码 家电安装、维修、清洗、美容系统源码、家政系统各端功能细分 家政服务系统是一种提供家政服务的系统&#xff0c;它可以为客户提供上门家庭清洁、钟点工、保姆、月嫂、育婴师、护理员等家政服务。节省时间和成本&#xff0c;提高效率&…

网络层只懂路由?这9个知识点被严重低估了

号主&#xff1a;老杨丨11年资深网络工程师&#xff0c;更多网工提升干货&#xff0c;请关注公众号&#xff1a;网络工程师俱乐部 下午好&#xff0c;我的网工朋友。 网络层想必你已经耳熟能详&#xff0c;它的作用自然是不容小觑。 它负责将数据从源头准确地投递到目的地&am…

9.2JavaEE——JDBCTemplate的常用方法(一)excute()方法

execute()方法用于执行SQL语句&#xff0c;其语法格式如下&#xff1a; jdTemplate.execute("SQL 语句");下面以创建数据表的SQL语句为例&#xff0c;来演示excute()方法的使用&#xff0c;具体步骤如下。 1、创建数据库 在MySQL中&#xff0c;创建一个名为spring的…

QT pro包含库文件目录符号含义

直接调用DLL需要三个文件&#xff0c;头文件(.h)、导入库文件(.lib)、动态链接库(.dll)&#xff0c; 注意&#xff1a;在qtCreaor中生成的动态库库文件文件为.a结尾&#xff0c;vs生成的动态链接库是.lib结尾 1、首先我们把 .h与.lib/.a 文件复制到程序当前目录下&#xff0c…

软设之白盒测试

白盒测试分为语句覆盖&#xff0c;判定覆盖&#xff0c;条件覆盖&#xff0c;判断/条件覆盖&#xff0c;条件组合覆盖&#xff0c;路径覆盖 语句覆盖 定义:被测试程序中的每条语句至少执行一次 特点:对执行逻辑覆盖很低&#xff0c;一般认为是很弱的逻辑组合。 判定覆盖: …

onnx基本概念

onnx基本概念 参考 文章目录 onnx基本概念Input, Output, Node, Initializer, AttributesSerialization with protobuf元数据List of available operators and domains支持的类型Opset版本Subgraphs, tests and loopsExtensibilityFunctionsShape (and Type) Inferencetools O…