数据库常用语法总结

embedded/2024/11/17 12:12:53/

数据库是现代应用程序中不可或缺的一部分,用于存储和管理大量结构化数据。本文将总结一些常用的 SQL 语法,帮助初学者和经验丰富的开发者更好地理解和使用数据库

1. 创建数据库

创建一个新的数据库非常简单,使用以下语法:

CREATE DATABASE database_name;

例如,创建一个名为 test_db 的数据库

CREATE DATABASE test_db;

2. 选择数据库

在执行操作之前,需要选择要操作的数据库

USE database_name;

例如,选择 test_db 数据库

USE test_db;

3. 创建表

创建表时需要定义表的结构,包括列名、数据类型和约束条件:

CREATE TABLE table_name (column1_name column1_type constraint1,column2_name column2_type constraint2,...
);

例如,创建一个名为 users 的表,包含 idname 和 email 列:

CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(100) NOT NULL,email VARCHAR(150) UNIQUE NOT NULL
);

4. 插入数据

向表中插入数据使用 INSERT INTO 语句:

INSERT INTO table_name (column1_name, column2_name, ...) VALUES (value1, value2, ...);

例如,向 users 表中插入一条数据:

INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com');

5. 查询数据

查询表中的数据使用 SELECT 语句:

SELECT column1_name, column2_name, ... FROM table_name WHERE condition;

例如,查询 users 表中所有数据:

SELECT * FROM users;

查询 users 表中 name 为 ‘Alice’ 的数据:

SELECT * FROM users WHERE name = 'Alice';

6. 更新数据

更新表中的数据使用 UPDATE 语句:

UPDATE table_name SET column1_name = value1, column2_name = value2, ... WHERE condition;

例如,更新 users 表中 id 为 1 的用户的 email

UPDATE users SET email = 'alice_new@example.com' WHERE id = 1;

7. 删除数据

删除表中的数据使用 DELETE 语句:

DELETE FROM table_name WHERE condition;

例如,删除 users 表中 id 为 1 的用户:

DELETE FROM users WHERE id = 1;

8. 删除表

删除表使用 DROP TABLE 语句:

DROP TABLE table_name;

例如,删除 users 表:

DROP TABLE users;

9. 修改表结构

修改表结构使用 ALTER TABLE 语句:

ALTER TABLE table_name ADD column_name column_type;
ALTER TABLE table_name DROP column_name;
ALTER TABLE table_name MODIFY column_name column_type;

例如,向 users 表中添加一个 age 列:

ALTER TABLE users ADD age INT;

删除 users 表中的 age 列:

ALTER TABLE users DROP age;

修改 users 表中的 name 列的类型为 VARCHAR(200)

ALTER TABLE users MODIFY name VARCHAR(200);

10. 索引

创建索引以提高查询性能:

CREATE INDEX index_name ON table_name (column_name);

例如,为 users 表的 email 列创建索引:

CREATE INDEX idx_email ON users (email);

删除索引:

DROP INDEX index_name ON table_name;

例如,删除 users 表的 idx_email 索引:

DROP INDEX idx_email ON users;

11. 聚合函数

聚合函数用于对一组值进行计算并返回单个结果:

  • COUNT:计算行数
  • SUM:计算总和
  • AVG:计算平均值
  • MAX:返回最大值
  • MIN:返回最小值

例如,计算 users 表中的总行数:

SELECT COUNT(*) FROM users;

计算 users 表中 age 列的总和:

SELECT SUM(age) FROM users;

12. 分组

使用 GROUP BY 语句将行分组,通常与聚合函数一起使用:

SELECT column_name, aggregate_function(column_name)
FROM table_name
GROUP BY column_name;

例如,按 age 列分组并计算每个年龄段的用户数:

SELECT age, COUNT(*) FROM users GROUP BY age;

13. 排序

使用 ORDER BY 语句对查询结果进行排序:

SELECT column_name, column2_name, ...
FROM table_name
ORDER BY column_name [ASC|DESC];

例如,按 name 列升序排序 users 表中的所有数据:

SELECT * FROM users ORDER BY name ASC;

按 age 列降序排序:

SELECT * FROM users ORDER BY age DESC;

14. 连接表

使用 JOIN 语句将多个表中的数据连接在一起:

  • INNER JOIN:返回两个表中匹配的行
  • LEFT JOIN:返回左表中的所有行,以及右表中匹配的行
  • RIGHT JOIN:返回右表中的所有行,以及左表中匹配的行
  • FULL OUTER JOIN:返回两个表中的所有行

例如,假设有两个表 users 和 orders,我们可以通过 user_id 进行连接:

SELECT users.name, orders.order_date
FROM users
INNER JOIN orders ON users.id = orders.user_id;

15. 子查询

子查询是在另一个查询中的查询,通常用于条件过滤:

SELECT column_name, column2_name, ...
FROM table_name
WHERE column_name Operator (SELECT column_name FROM table_name WHERE condition);

例如,查询 users 表中购买了最大金额订单的用户:

SELECT users.name
FROM users
WHERE users.id = (SELECT user_id FROM orders ORDER BY order_amount DESC LIMIT 1);

16. 事务

事务用于确保一组操作的原子性、一致性、隔离性和持久性:

BEGIN TRANSACTION;
-- 执行多个 SQL 语句
COMMIT;
-- 或者
ROLLBACK;

例如,确保插入和更新操作一起成功或全部失败:

BEGIN TRANSACTION;
INSERT INTO users (name, email) VALUES ('Bob', 'bob@example.com');
UPDATE users SET email = 'alice_new@example.com' WHERE id = 1;
COMMIT;

如果在事务执行过程中发生错误,可以回滚事务:

BEGIN TRANSACTION;
-- 执行 SQL 语句
ROLLBACK;

17. 视图

视图是一个虚拟表,其内容由查询定义:

CREATE VIEW view_name AS
SELECT column_name, column2_name, ...
FROM table_name
WHERE condition;

例如,创建一个视图 user_orders,包含用户及其订单信息:

CREATE VIEW user_orders AS
SELECT users.name, orders.order_date, orders.order_amount
FROM users
INNER JOIN orders ON users.id = orders.user_id;

查询视图:

SELECT * FROM user_orders;

18. 存储过程

存储过程是一组 SQL 语句,可以预先编译并存储在数据库中,通过调用名称来执行:

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

例如,创建一个存储过程 get_all_users,返回所有用户的名称:

DELIMITER //
CREATE PROCEDURE get_all_users()
BEGINSELECT name FROM users;
END //
DELIMITER ;

调用存储过程:

CALL get_all_users();

希望你喜欢这篇文章!请点关注和收藏吧。你的关注和收藏会是我努力更新的动力,祝关注和收藏的帅哥美女们今年都能暴富。如果有更多问题,随时欢迎评论区留言


http://www.ppmy.cn/embedded/138244.html

相关文章

flutter下拉刷新上拉加载的简单实现方式三

使用 CustomScrollView 结合 SliverList 实现了一个支持下拉刷新和上拉加载更多功能的滚动列表,对下面代码进行解析学习。 import dart:math;import package:flutter/material.dart;import custom_pull/gsy_refresh_sliver.dart; import package:flutter/cupertino…

React Query在现代前端开发中的应用

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 React Query在现代前端开发中的应用 React Query在现代前端开发中的应用 React Query在现代前端开发中的应用 引言 React Query …

LLMs 训练经验篇

LLMs 训练经验篇 分布式训练框架选择? 多用 DeepSpeed,少用 Pytorch 原生的 torchrun。在节点数量较少的情况下,使用何种训练框架并不是特别重要;然而,一旦涉及到数百个节点,DeepSpeed 显现出其强大之处&…

RabbitMQ教程:工作队列(Work Queues)(二)

RabbitMQ教程:工作队列(Work Queues)(二) 一、引言 在快节奏的软件开发世界中,我们经常面临需要异步处理任务的场景,比如在Web应用中处理耗时的图片处理或数据分析任务。这些任务如果直接在用…

Jetson ros默认依赖opencv与系统安装opencv、推流、cv_bridge等存在BUG

下载源码,源码编译支持系统opencv git clone -b noetic https://github.com/ros-perception/vision_opencv.gitset(_opencv_version 4) #设置为系统opencv find_package(OpenCV 4 QUIET) if(NOT OpenCV_FOUND)message(STATUS "Did not find OpenCV 4, tryin…

基于的图的异常检测算法OddBall

OddBall异常检测算法出自2010年的论文《OddBall: Spotting Anomalies in Weighted Graphs》,它是一个在加权图(weighted graph)上检测异常点的算法,基本思路为计算每一个点的一度邻域特征,然后在整个图上用这些特征拟合出一个函数&#xff0c…

Django中的URL配置与动态参数传递(多种方法比较)

Django中的URL配置与动态参数传递(多种方法比较) 目录 ✨ 基础URL配置与re_path()的解读🔧 path()与re_path()的对比分析🚀 动态参数处理方案详解📘 正则表达式匹配的优势与劣势🧩 利用path()进行路径参数处理的实现与优劣&…

蓝桥杯——杨辉三角

代码 package day3;public class Demo2 {public static void main(String[] args) {// TODO Auto-generated method stub// for (int i 0; i < 10; i) {// for (int j 0; j < 10; j) {// System.out.print("外&#xff1a;"i"内&#xff1a;&qu…