【MySQL】数据库、数据表的基本操作

news2025/5/11 14:59:53

在这里插入图片描述

个人主页:Guiat
归属专栏:MySQL

在这里插入图片描述

文章目录

  • 1. MySQL基础命令
    • 1.1 连接MySQL
    • 1.2 基本命令概览
  • 2. 数据库操作
    • 2.1 创建数据库
    • 2.2 查看数据库
    • 2.3 选择数据库
    • 2.4 修改数据库
    • 2.5 删除数据库
    • 2.6 数据库备份与恢复
  • 3. 表操作基础
    • 3.1 创建表
    • 3.2 查看表信息
    • 3.3 创建临时表
    • 3.4 创建表的复制
  • 4. 表结构修改
    • 4.1 添加列
    • 4.2 修改列
    • 4.3 删除列
    • 4.4 重命名表
    • 4.5 删除表
  • 5. 约束与键
    • 5.1 主键约束
    • 5.2 外键约束
    • 5.3 唯一约束
    • 5.4 检查约束
    • 5.5 默认值约束
  • 6. 索引操作
    • 6.1 创建索引
    • 6.2 查看索引
    • 6.3 删除索引
  • 7. 表数据操作
    • 7.1 插入数据
    • 7.2 更新数据
    • 7.3 删除数据
    • 7.4 查询数据
  • 8. 高级表操作
    • 8.1 表分区
    • 8.2 视图操作
    • 8.3 存储过程
  • 9. 事务控制
    • 9.1 事务基本操作
    • 9.2 设置保存点
    • 9.3 事务隔离级别
  • 10. 实际应用案例
    • 10.1 电子商务数据库设计
    • 10.2 数据库维护操作
    • 10.3 常见查询和操作示例

正文

1. MySQL基础命令

MySQL是一种流行的关系型数据库管理系统,掌握基本的数据库和表操作命令是使用MySQL的基础。

1.1 连接MySQL

# 连接本地MySQL服务器
mysql -u username -p

# 连接远程MySQL服务器
mysql -h hostname -u username -p -P port

1.2 基本命令概览

-- 显示MySQL版本
SELECT VERSION();

-- 显示当前日期时间
SELECT NOW();

-- 显示当前用户
SELECT USER();

-- 显示可用的命令
HELP;

-- 退出MySQL客户端
EXIT;
-- 或
QUIT;

2. 数据库操作

2.1 创建数据库

-- 基本语法
CREATE DATABASE database_name;

-- 指定字符集和排序规则
CREATE DATABASE database_name 
CHARACTER SET utf8mb4 
COLLATE utf8mb4_unicode_ci;

-- 仅当数据库不存在时创建
CREATE DATABASE IF NOT EXISTS database_name;

2.2 查看数据库

-- 显示所有数据库
SHOW DATABASES;

-- 显示创建数据库的SQL语句
SHOW CREATE DATABASE database_name;

-- 显示数据库状态
SHOW STATUS;

2.3 选择数据库

-- 切换到指定数据库
USE database_name;

-- 查看当前选中的数据库
SELECT DATABASE();

2.4 修改数据库

-- 修改数据库字符集
ALTER DATABASE database_name 
CHARACTER SET = utf8mb4;

-- 修改数据库排序规则
ALTER DATABASE database_name 
COLLATE = utf8mb4_unicode_ci;

2.5 删除数据库

-- 删除数据库
DROP DATABASE database_name;

-- 仅当数据库存在时删除
DROP DATABASE IF EXISTS database_name;

2.6 数据库备份与恢复

# 使用mysqldump备份数据库
mysqldump -u username -p database_name > backup_file.sql

# 恢复数据库
mysql -u username -p database_name < backup_file.sql

3. 表操作基础

3.1 创建表

-- 基本表创建语法
CREATE TABLE table_name (
    column1 datatype constraints,
    column2 datatype constraints,
    ...
    columnN datatype constraints
);

-- 示例:创建学生表
CREATE TABLE students (
    student_id INT PRIMARY KEY AUTO_INCREMENT,
    first_name VARCHAR(50) NOT NULL,
    last_name VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE,
    birth_date DATE,
    enrollment_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    active BOOLEAN DEFAULT TRUE
);

3.2 查看表信息

-- 显示当前数据库的所有表
SHOW TABLES;

-- 显示表结构
DESCRIBE table_name;
-- 或
DESC table_name;

-- 显示创建表的SQL语句
SHOW CREATE TABLE table_name;

-- 显示表状态
SHOW TABLE STATUS LIKE 'table_name';

3.3 创建临时表

临时表在会话结束时自动删除:

-- 创建临时表
CREATE TEMPORARY TABLE temp_table (
    id INT,
    name VARCHAR(50)
);

3.4 创建表的复制

-- 复制表结构
CREATE TABLE new_table LIKE original_table;

-- 复制表结构和数据
CREATE TABLE new_table AS SELECT * FROM original_table;

-- 复制表结构和部分数据
CREATE TABLE new_table AS 
SELECT * FROM original_table WHERE condition;

4. 表结构修改

4.1 添加列

-- 添加新列
ALTER TABLE table_name 
ADD COLUMN column_name datatype constraints;

-- 在特定位置添加列
ALTER TABLE table_name 
ADD COLUMN column_name datatype constraints 
AFTER existing_column;

-- 添加列到表的第一个位置
ALTER TABLE table_name 
ADD COLUMN column_name datatype constraints 
FIRST;

-- 添加多列
ALTER TABLE table_name
ADD COLUMN column1 datatype constraints,
ADD COLUMN column2 datatype constraints;

4.2 修改列

-- 修改列的数据类型
ALTER TABLE table_name 
MODIFY COLUMN column_name new_datatype;

-- 修改列名和数据类型
ALTER TABLE table_name 
CHANGE COLUMN old_column_name new_column_name new_datatype constraints;

-- 修改列的默认值
ALTER TABLE table_name 
ALTER COLUMN column_name SET DEFAULT default_value;

-- 删除列的默认值
ALTER TABLE table_name 
ALTER COLUMN column_name DROP DEFAULT;

4.3 删除列

-- 删除单列
ALTER TABLE table_name 
DROP COLUMN column_name;

-- 删除多列
ALTER TABLE table_name 
DROP COLUMN column1,
DROP COLUMN column2;

4.4 重命名表

-- 重命名表
RENAME TABLE old_table_name TO new_table_name;

-- 或使用ALTER TABLE
ALTER TABLE old_table_name 
RENAME TO new_table_name;

4.5 删除表

-- 删除表
DROP TABLE table_name;

-- 仅当表存在时删除
DROP TABLE IF EXISTS table_name;

-- 删除多个表
DROP TABLE table1, table2, table3;

5. 约束与键

5.1 主键约束

-- 创建表时定义主键
CREATE TABLE products (
    product_id INT PRIMARY KEY,
    product_name VARCHAR(100) NOT NULL
);

-- 复合主键
CREATE TABLE order_items (
    order_id INT,
    product_id INT,
    quantity INT NOT NULL,
    PRIMARY KEY (order_id, product_id)
);

-- 为已有的表添加主键
ALTER TABLE table_name 
ADD PRIMARY KEY (column_name);

-- 删除主键
ALTER TABLE table_name 
DROP PRIMARY KEY;

5.2 外键约束

-- 创建表时定义外键
CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    customer_id INT,
    order_date DATE,
    FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);

-- 为已有的表添加外键
ALTER TABLE orders
ADD CONSTRAINT fk_customer
FOREIGN KEY (customer_id) REFERENCES customers(customer_id);

-- 添加带有删除和更新行为的外键
ALTER TABLE orders
ADD CONSTRAINT fk_customer
FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
ON DELETE CASCADE
ON UPDATE CASCADE;

-- 删除外键约束
ALTER TABLE orders
DROP FOREIGN KEY fk_customer;

5.3 唯一约束

-- 创建表时定义唯一约束
CREATE TABLE users (
    user_id INT PRIMARY KEY,
    username VARCHAR(50) UNIQUE,
    email VARCHAR(100) UNIQUE
);

-- 为已有的表添加唯一约束
ALTER TABLE users
ADD CONSTRAINT uq_email UNIQUE (email);

-- 删除唯一约束
ALTER TABLE users
DROP INDEX uq_email;

5.4 检查约束

MySQL 8.0及以上版本支持CHECK约束:

-- 创建表时定义检查约束
CREATE TABLE employees (
    employee_id INT PRIMARY KEY,
    name VARCHAR(100),
    salary DECIMAL(10,2) CHECK (salary > 0),
    age INT CHECK (age >= 18)
);

-- 为已有的表添加检查约束
ALTER TABLE employees
ADD CONSTRAINT chk_salary CHECK (salary > 0);

-- 删除检查约束
ALTER TABLE employees
DROP CHECK chk_salary;

5.5 默认值约束

-- 创建表时定义默认值
CREATE TABLE articles (
    article_id INT PRIMARY KEY,
    title VARCHAR(200) NOT NULL,
    content TEXT,
    published BOOLEAN DEFAULT FALSE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 为已有的列添加默认值
ALTER TABLE articles
ALTER COLUMN published SET DEFAULT TRUE;

-- 删除默认值
ALTER TABLE articles
ALTER COLUMN published DROP DEFAULT;

6. 索引操作

6.1 创建索引

-- 创建普通索引
CREATE INDEX idx_name ON table_name (column_name);

-- 创建唯一索引
CREATE UNIQUE INDEX idx_email ON users (email);

-- 创建复合索引
CREATE INDEX idx_name_email ON users (name, email);

-- 创建前缀索引
CREATE INDEX idx_title ON articles (title(50));

-- 在表创建时定义索引
CREATE TABLE customers (
    id INT PRIMARY KEY,
    name VARCHAR(100),
    email VARCHAR(100),
    INDEX idx_name (name)
);

-- 使用ALTER TABLE添加索引
ALTER TABLE customers
ADD INDEX idx_email (email);

6.2 查看索引

-- 查看表的所有索引
SHOW INDEX FROM table_name;

6.3 删除索引

-- 删除索引
DROP INDEX index_name ON table_name;

-- 使用ALTER TABLE删除索引
ALTER TABLE table_name
DROP INDEX index_name;

7. 表数据操作

7.1 插入数据

-- 插入单行数据
INSERT INTO table_name (column1, column2, ...) 
VALUES (value1, value2, ...);

-- 插入多行数据
INSERT INTO table_name (column1, column2, ...) 
VALUES 
    (value1, value2, ...),
    (value1, value2, ...),
    (value1, value2, ...);

-- 插入所有列的数据
INSERT INTO table_name 
VALUES (value1, value2, ...);

-- 从另一个表插入数据
INSERT INTO target_table (column1, column2, ...)
SELECT column1, column2, ... 
FROM source_table
WHERE condition;

7.2 更新数据

-- 更新所有行
UPDATE table_name
SET column1 = value1, column2 = value2
WHERE condition;

-- 使用子查询更新数据
UPDATE table_name
SET column1 = (SELECT column2 FROM another_table WHERE condition)
WHERE condition;

-- 多表更新
UPDATE table1 t1
JOIN table2 t2 ON t1.id = t2.id
SET t1.column1 = t2.column2
WHERE condition;

7.3 删除数据

-- 删除满足条件的行
DELETE FROM table_name
WHERE condition;

-- 删除所有行
DELETE FROM table_name;

-- 截断表(更快但不可回滚)
TRUNCATE TABLE table_name;

-- 多表删除
DELETE t1 FROM table1 t1
JOIN table2 t2 ON t1.id = t2.ref_id
WHERE condition;

7.4 查询数据

-- 基本查询
SELECT column1, column2
FROM table_name
WHERE condition;

-- 查询所有列
SELECT * FROM table_name;

-- 查询唯一值
SELECT DISTINCT column FROM table_name;

-- 使用条件查询
SELECT * FROM table_name
WHERE column = value AND/OR another_column > value;

-- 使用排序
SELECT * FROM table_name
ORDER BY column1 ASC, column2 DESC;

-- 使用限制
SELECT * FROM table_name
LIMIT 10 OFFSET 20;

-- 分组查询
SELECT column1, COUNT(*) as count
FROM table_name
GROUP BY column1
HAVING count > 5;

8. 高级表操作

8.1 表分区

-- 创建分区表(按范围分区)
CREATE TABLE sales (
    id INT,
    amount DECIMAL(10,2),
    sale_date DATE
)
PARTITION BY RANGE (YEAR(sale_date)) (
    PARTITION p0 VALUES LESS THAN (2020),
    PARTITION p1 VALUES LESS THAN (2021),
    PARTITION p2 VALUES LESS THAN (2022),
    PARTITION p3 VALUES LESS THAN MAXVALUE
);

-- 查看分区信息
SHOW CREATE TABLE sales;
SELECT * FROM information_schema.PARTITIONS 
WHERE TABLE_NAME = 'sales';

8.2 视图操作

-- 创建视图
CREATE VIEW view_name AS
SELECT column1, column2
FROM table_name
WHERE condition;

-- 查看视图
SHOW FULL TABLES WHERE TABLE_TYPE = 'VIEW';

-- 更新视图
ALTER VIEW view_name AS
SELECT column1, column2, column3
FROM table_name
WHERE condition;

-- 删除视图
DROP VIEW IF EXISTS view_name;

8.3 存储过程

-- 创建存储过程
DELIMITER //
CREATE PROCEDURE procedure_name(IN param1 INT, OUT param2 VARCHAR(100))
BEGIN
    -- 存储过程体
    SELECT column INTO param2 FROM table WHERE id = param1;
END //
DELIMITER ;

-- 调用存储过程
CALL procedure_name(5, @result);
SELECT @result;

-- 删除存储过程
DROP PROCEDURE IF EXISTS procedure_name;

9. 事务控制

9.1 事务基本操作

-- 开始事务
START TRANSACTION;

-- 执行SQL语句
INSERT INTO accounts (account_id, balance) VALUES (1, 1000);
UPDATE accounts SET balance = balance - 500 WHERE account_id = 1;
INSERT INTO transactions (account_id, amount) VALUES (1, -500);

-- 提交事务
COMMIT;

-- 或回滚事务
-- ROLLBACK;

9.2 设置保存点

-- 开始事务
START TRANSACTION;

-- 执行操作
INSERT INTO table1 VALUES (1, 'value');

-- 设置保存点
SAVEPOINT point1;

-- 执行更多操作
INSERT INTO table2 VALUES (2, 'value');

-- 回滚到保存点
ROLLBACK TO SAVEPOINT point1;

-- 提交事务(只提交保存点之前的操作)
COMMIT;

9.3 事务隔离级别

-- 查看当前事务隔离级别
SELECT @@TRANSACTION_ISOLATION;

-- 设置事务隔离级别
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
隔离性最低
默认级别
SQL标准默认
隔离性最高
问题
问题
问题
解决
解决
部分问题
解决
问题
问题
解决
解决
解决
事务隔离级别
READ UNCOMMITTED
REPEATABLE READ
READ COMMITTED
SERIALIZABLE
脏读
不可重复读
幻读

10. 实际应用案例

10.1 电子商务数据库设计

-- 创建数据库
CREATE DATABASE ecommerce CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE ecommerce;

-- 创建客户表
CREATE TABLE customers (
    customer_id INT PRIMARY KEY AUTO_INCREMENT,
    first_name VARCHAR(50) NOT NULL,
    last_name VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL UNIQUE,
    password VARCHAR(255) NOT NULL,
    phone VARCHAR(20),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    INDEX idx_email (email),
    INDEX idx_name (last_name, first_name)
);

-- 创建地址表
CREATE TABLE addresses (
    address_id INT PRIMARY KEY AUTO_INCREMENT,
    customer_id INT NOT NULL,
    address_type ENUM('billing', 'shipping') DEFAULT 'shipping',
    address_line1 VARCHAR(100) NOT NULL,
    address_line2 VARCHAR(100),
    city VARCHAR(50) NOT NULL,
    state VARCHAR(50),
    postal_code VARCHAR(20) NOT NULL,
    country VARCHAR(50) NOT NULL,
    is_default BOOLEAN DEFAULT FALSE,
    FOREIGN KEY (customer_id) REFERENCES customers(customer_id) ON DELETE CASCADE,
    INDEX idx_customer (customer_id)
);

-- 创建类别表
CREATE TABLE categories (
    category_id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL,
    description TEXT,
    parent_id INT,
    FOREIGN KEY (parent_id) REFERENCES categories(category_id) ON DELETE SET NULL
);

-- 创建产品表
CREATE TABLE products (
    product_id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(100) NOT NULL,
    description TEXT,
    price DECIMAL(10, 2) NOT NULL CHECK (price > 0),
    stock_quantity INT NOT NULL DEFAULT 0 CHECK (stock_quantity >= 0),
    category_id INT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    FOREIGN KEY (category_id) REFERENCES categories(category_id) ON DELETE SET NULL,
    INDEX idx_category (category_id),
    INDEX idx_name (name)
);

-- 创建订单表
CREATE TABLE orders (
    order_id INT PRIMARY KEY AUTO_INCREMENT,
    customer_id INT NOT NULL,
    order_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    status ENUM('pending', 'processing', 'shipped', 'delivered', 'cancelled') DEFAULT 'pending',
    shipping_address_id INT NOT NULL,
    billing_address_id INT NOT NULL,
    shipping_fee DECIMAL(10, 2) DEFAULT 0.00,
    total_amount DECIMAL(10, 2) NOT NULL,
    payment_method ENUM('credit_card', 'paypal', 'bank_transfer'),
    notes TEXT,
    FOREIGN KEY (customer_id) REFERENCES customers(customer_id) ON DELETE RESTRICT,
    FOREIGN KEY (shipping_address_id) REFERENCES addresses(address_id) ON DELETE RESTRICT,
    FOREIGN KEY (billing_address_id) REFERENCES addresses(address_id) ON DELETE RESTRICT,
    INDEX idx_customer (customer_id),
    INDEX idx_date (order_date)
);

-- 创建订单明细表
CREATE TABLE order_items (
    order_id INT,
    product_id INT,
    quantity INT NOT NULL CHECK (quantity > 0),
    unit_price DECIMAL(10, 2) NOT NULL,
    PRIMARY KEY (order_id, product_id),
    FOREIGN KEY (order_id) REFERENCES orders(order_id) ON DELETE CASCADE,
    FOREIGN KEY (product_id) REFERENCES products(product_id) ON DELETE RESTRICT
);

-- 创建产品评价表
CREATE TABLE reviews (
    review_id INT PRIMARY KEY AUTO_INCREMENT,
    product_id INT NOT NULL,
    customer_id INT NOT NULL,
    rating TINYINT NOT NULL CHECK (rating BETWEEN 1 AND 5),
    comment TEXT,
    review_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (product_id) REFERENCES products(product_id) ON DELETE CASCADE,
    FOREIGN KEY (customer_id) REFERENCES customers(customer_id) ON DELETE CASCADE,
    UNIQUE KEY unique_review (product_id, customer_id),
    INDEX idx_product (product_id)
);

-- 创建产品库存历史表
CREATE TABLE inventory_history (
    id INT PRIMARY KEY AUTO_INCREMENT,
    product_id INT NOT NULL,
    quantity_change INT NOT NULL,
    reason ENUM('purchase', 'sale', 'return', 'adjustment'),
    reference_id INT,
    changed_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (product_id) REFERENCES products(product_id) ON DELETE CASCADE,
    INDEX idx_product (product_id),
    INDEX idx_date (changed_at)
);

-- 创建订单状态历史视图
CREATE VIEW order_status_history AS
SELECT 
    orders.order_id,
    customers.email,
    orders.status,
    orders.total_amount,
    orders.order_date
FROM orders
JOIN customers ON orders.customer_id = customers.customer_id;

-- 创建存储过程:处理订单
DELIMITER //
CREATE PROCEDURE process_order(IN order_id_param INT)
BEGIN
    DECLARE current_status VARCHAR(20);
    
    -- 获取当前订单状态
    SELECT status INTO current_status FROM orders WHERE order_id = order_id_param;
    
    -- 只处理待处理订单
    IF current_status = 'pending' THEN
        START TRANSACTION;
        
        -- 更新订单状态
        UPDATE orders SET status = 'processing' WHERE order_id = order_id_param;
        
        -- 更新产品库存
        UPDATE products p
        JOIN order_items oi ON p.product_id = oi.product_id
        SET p.stock_quantity = p.stock_quantity - oi.quantity
        WHERE oi.order_id = order_id_param;
        
        -- 记录库存变更
        INSERT INTO inventory_history (product_id, quantity_change, reason, reference_id)
        SELECT product_id, -quantity, 'sale', order_id_param
        FROM order_items
        WHERE order_id = order_id_param;
        
        COMMIT;
        
        SELECT 'Order processed successfully' AS message;
    ELSE
        SELECT CONCAT('Cannot process order. Current status: ', current_status) AS message;
    END IF;
END //
DELIMITER ;

10.2 数据库维护操作

-- 分析表
ANALYZE TABLE customers, orders, products;

-- 检查表
CHECK TABLE customers, orders, products;

-- 优化表
OPTIMIZE TABLE customers, orders, products;

-- 修复表
REPAIR TABLE customers, orders, products;

10.3 常见查询和操作示例

-- 插入客户
INSERT INTO customers (first_name, last_name, email, password, phone)
VALUES ('John', 'Doe', 'john.doe@example.com', SHA2('password123', 256), '555-123-4567');

-- 插入产品
INSERT INTO categories (name, description) VALUES ('Electronics', 'Electronic devices and accessories');
INSERT INTO products (name, description, price, stock_quantity, category_id)
VALUES ('Smartphone X', 'Latest smartphone with advanced features', 699.99, 50, 1);

-- 创建订单(简化版)
INSERT INTO addresses (customer_id, address_type, address_line1, city, postal_code, country)
VALUES (1, 'shipping', '123 Main St', 'New York', '10001', 'USA');

INSERT INTO orders (customer_id, shipping_address_id, billing_address_id, total_amount, payment_method)
VALUES (1, 1, 1, 699.99, 'credit_card');

INSERT INTO order_items (order_id, product_id, quantity, unit_price)
VALUES (1, 1, 1, 699.99);

-- 处理订单
CALL process_order(1);

-- 复杂查询:查找畅销产品
SELECT 
    p.product_id,
    p.name,
    p.price,
    SUM(oi.quantity) AS total_sold,
    SUM(oi.quantity * oi.unit_price) AS total_revenue
FROM products p
JOIN order_items oi ON p.product_id = oi.product_id
JOIN orders o ON oi.order_id = o.order_id
WHERE o.order_date >= DATE_SUB(CURDATE(), INTERVAL 30 DAY)
GROUP BY p.product_id, p.name, p.price
ORDER BY total_sold DESC
LIMIT 10;

-- 创建每日销售报表视图
CREATE VIEW daily_sales AS
SELECT 
    DATE(o.order_date) AS sale_date,
    COUNT(DISTINCT o.order_id) AS order_count,
    SUM(oi.quantity) AS items_sold,
    SUM(o.total_amount) AS total_revenue
FROM orders o
JOIN order_items oi ON o.order_id = oi.order_id
GROUP BY DATE(o.order_date)
ORDER BY sale_date DESC;

掌握数据库和表的基本操作是使用MySQL的基础。这些操作包括数据库的创建、修改和删除,表的设计、修改和管理,以及数据的增删改查。随着经验的积累,您可以进一步探索更高级的功能,如存储过程、触发器、视图和事务管理,以构建更复杂、更高效的数据库应用程序。

结语
感谢您的阅读!期待您的一键三连!欢迎指正!

在这里插入图片描述

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

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

相关文章

TCP的连接管理

三次握手 什么是三次握手&#xff1f; 1. 第一次握手&#xff08;客户端 → 服务器&#xff09; 客户端发送一个 SYN 报文&#xff0c;请求建立连接。 报文中包含一个初始序列号 SEQ x。 表示&#xff1a;我想和你建立连接&#xff0c;我的序列号是 x。 2. 第二次握手&a…

初识Linux · 传输层协议TCP · 下

目录 前言&#xff1a; 滑动窗口和流量控制机制 流量控制 滑动窗口 1.滑动窗口如何移动 2.滑动窗口的大小如何变化的 3.如果发生了丢包如何解决&#xff08;快重传&#xff09; 拥塞控制 延迟应答 面向字节流 RST PSH URG 什么是 PSH&#xff1f; 什么是 URG&…

什么是分布式光伏系统?屋顶分布式光伏如何并网?

政策窗口倒计时&#xff01;分布式光伏如何破局而立&#xff1f; 2025年&#xff0c;中国分布式光伏行业迎来关键转折&#xff1a; ▸ "430"落幕——抢装潮收官&#xff0c;但考验才刚开始&#xff1b; ▸ "531"生死线——新增项目全面市场化交易启动&…

完整进行一次共线性分析

&#xff08;随便找个基因家族&#xff09; 1.数据收集 使用水稻、拟南芥、玉米三种作物进行示例 可以直接去ensemble去找最标准的基因组fasta文件和gff文件。 2.预处理数据 这里对于fasta和gff数据看情况要不要过滤掉线粒体叶绿体的基因&#xff0c;数据差异非常大&#…

RabbitMQ--基础篇

RabbitMQ 简介&#xff1a;RabbitMQ 是一种开源的消息队列中间件&#xff0c;你可以把它想象成一个高效的“邮局”。它专门负责在不同应用程序之间传递消息&#xff0c;让系统各部分能松耦合地协作 优势&#xff1a; 异步处理&#xff1a;比如用户注册后&#xff0c;主程序将发…

Quorum协议原理与应用详解

一、Quorum 协议核心原理 基本定义 Quorum 是一种基于 读写投票机制 的分布式一致性协议&#xff0c;通过权衡一致性&#xff08;C&#xff09;与可用性&#xff08;A&#xff09;实现数据冗余和最终一致性。其核心规则为&#xff1a; W&#xff08;写成功副本数&#xff09; …

vue搭建+element引入

vue搭建element 在使用Vue.js开发项目时&#xff0c;经常会选择使用Element UI作为UI框架&#xff0c;因为它提供了丰富的组件和良好的设计&#xff0c;可以大大提高开发效率。以下是如何在Vue项目中集成Element UI的步骤&#xff1a; 1. 创建Vue项目 如果你还没有创建Vue项…

食物数据分析系统vue+flask

食物数据分析系统 项目概述 食物数据分析系统是一个集食物营养成分查询、对比分析和数据可视化于一体的Web应用。系统采用前后端分离架构&#xff0c;为用户提供食物营养信息检索、食物对比和营养分析等功能&#xff0c;帮助用户了解食物的营养成分&#xff0c;做出更健康的饮…

SPDK NVMe of RDMA 部署

使用SPDK NVMe of RDMA 实现多NVMe设备共享 一、编译、安装spdk 1.1、下载 1.1.1 下载spdk源码 首先&#xff0c;我们需要从GitHub上克隆SPDK的源码仓库。打开终端&#xff0c;输入以下命令&#xff1a; git clone -b v22.01 https://github.com/spdk/spdk.git cd spdk1.1.2…

【Redis】缓存和分布式锁

&#x1f525;个人主页&#xff1a; 中草药 &#x1f525;专栏&#xff1a;【中间件】企业级中间件剖析 一、缓存&#xff08;Cache&#xff09; 概述 Redis最主要的应用场景便是作为缓存。缓存&#xff08;Cache&#xff09;是一种用于存储数据副本的技术或组件&#xff0c;…

OpenLayers 精确经过三个点的曲线绘制

OpenLayers 精确经过三个点的曲线绘制 根据您的需求&#xff0c;我将提供一个使用 OpenLayers 绘制精确经过三个指定点的曲线解决方案。对于三个点的情况&#xff0c;我们可以使用 二次贝塞尔曲线 或 三次样条插值&#xff0c;确保曲线精确通过所有控制点。 实现方案 下面是…

大模型微调指南之 LLaMA-Factory 篇:一键启动LLaMA系列模型高效微调

文章目录 一、简介二、如何安装2.1 安装2.2 校验 三、开始使用3.1 可视化界面3.2 使用命令行3.2.1 模型微调训练3.2.2 模型合并3.2.3 模型推理3.2.4 模型评估 四、高级功能4.1 分布训练4.2 DeepSpeed4.2.1 单机多卡4.2.2 多机多卡 五、日志分析 一、简介 LLaMA-Factory 是一个…

GLPK(GNU线性规划工具包)介绍

GLPK全称为GNU Linear Programming Kit(GNU线性规划工具包)&#xff0c;可从 https://sourceforge.net/projects/winglpk/ 下载源码及二进制库&#xff0c;最新版本为4.65。也可从 https://ftp.gnu.org/gnu/glpk/ 下载&#xff0c;仅包含源码&#xff0c;最新版本为5.0。 GLPK是…

PCB设计实践(十三)PCB设计中差分线间距与线宽设置的深度解析

一、差分信号的基本原理与物理背景 差分信号技术通过两条等幅反相的传输线实现信号传输&#xff0c;其核心优势体现在电磁场耦合的对称性上。根据麦克斯韦方程组的对称解原理&#xff0c;两条线产生的电磁场在远场区域相互抵消&#xff0c;形成以下特性&#xff1a; 1. 共模噪…

2025python学习笔记

一.Python语言基础入门 第一章 01.初识Python Python的起源&#xff1a; 1989年&#xff0c;为了打发圣诞节假期&#xff0c;Gudio van Rossum吉多范罗苏姆&#xff08;龟叔&#xff09;决心开发一个新的解释程序&#xff08;Python维形&#xff09;1991年&#xff0c;第一个…

【并发编程】基于 Redis 手写分布式锁

目录 一、基于 Redis 演示超卖现象 1.1 Redis 超卖现象 1.2 超卖现象解决方案 二、Redis 的乐观锁机制 2.1 原生客户端演示 2.2 业务代码实现 三、单机部署 Redis 实现分布式锁 3.1 分布式锁的演变和升级 3.2 setnx 实现分布式锁 3.2.1 递归调用实现分布式锁 3.2.2 循…

Jsp技术入门指南【十二】自定义标签

Jsp技术入门指南【十二】自定义标签 前言一、什么是标签二、标签的类型有哪些&#xff1f;1. 空标签2. 带有属性的标签3. 带主体的标签 三、自定义标签的部件3.1 自定义标签的四步骤3.2 标签处理程序3.3 自定义标签的开发及使用步骤第一步&#xff1a;创建标签助手类第二步&…

Java—— 泛型详解

泛型概述 泛型是JDK5中引入的特性&#xff0c;可以在编译阶段约束操作的数据类型&#xff0c;并进行检查。 泛型的格式&#xff1a;<数据类型> 注意&#xff1a;泛型只能支持引用数据类型。 泛型的好处 没有泛型的时候&#xff0c;可以往集合中添加任意类型的数据&#x…

GPT-4o, GPT 4.5, GPT 4.1, O3, O4-mini等模型的区别与联系

大模型时代浪潮汹涌,作为其中的领军者,OpenAI 其推出的系列模型以强大的能力深刻影响着整个行业,并常常成为业界其他公司对标和比较的基准。因此,深入了解 OpenAI 的大模型,不仅是为了使用它们,更是为了理解当前大模型的能力边界和发展趋势,这对于我们评估和选择其他各类…

Kubernetes生产实战(十二):无工具容器网络连接数暴增指南

当线上容器突然出现TCP连接数暴涨&#xff0c;而容器内又没有安装任何调试工具时&#xff0c;如何快速定位问题&#xff1f;本文将分享一套经过大型互联网公司验证的排查方案&#xff0c;涵盖从快速应急到根因分析的全流程。 一、快速锁定问题容器 查看pod 连接数方式&#x…