MySQL数据库——SQL语句

本文介绍了MySQL数据库的基本操作,包括创建数据库、选择数据库、创建表、插入数据、查询数据、更新数据、删除数据以及更高级的概念如连接、子查询、索引、视图、存储过程和触发器。这些是使用SQL管理和查询关系型数据库的关键操作。
摘要由CSDN通过智能技术生成

信息(information)是人脑对现实性世界事物的存在方式、运动状态及事物之间联系的抽象反应。

数据库的发展

1.人工管理阶段 1950年之前

2.文件系统阶段  1950-1960年

3.数据库阶段 1960-至今

我们这里介绍的是传统的关系性数据库——MySQL,主要介绍它的SQL语句的使用

数据表的管理和表中数据的操纵

MySQL 是一个流行的关系型数据库管理系统 (RDBMS),它使用 SQL (结构化查询语言) 来管理和查询数据。以下是一些基本的 SQL 语句示例,用于在 MySQL 数据库中执行各种操作。

1. 创建数据库

CREATE DATABASE database_name;
CREATE DATABASE database_name;

 

2. 选择数据库

USE database_name;
USE database_name;

 

3. 创建表

CREATE TABLE table_name (
column1 datatype,
column2 datatype,
column3 datatype,
....
);
CREATE TABLE table_name ( 
column1 datatype, 
column2 datatype, 
column3 datatype, 
.... 
);

 

例如:

CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

 

CREATE TABLE users ( 
id INT AUTO_INCREMENT PRIMARY KEY, 
name VARCHAR(50) NOT NULL, 
email VARCHAR(100) UNIQUE NOT NULL, 
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP 
);

4. 插入数据

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

 

例如:

INSERT INTO users (name, email)
VALUES ('John Doe', 'john.doe@example.com');
INSERT INTO users (name, email) 
VALUES ('John Doe', 'john.doe@example.com');

 

5. 查询数据

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

 

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

例如:

SELECT * FROM users WHERE name = 'John Doe';

 

SELECT * FROM users WHERE name = 'John Doe';

6. 更新数据

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

 

例如:

UPDATE users
SET email = 'john.newemail@example.com'
WHERE name = 'John Doe';

 

UPDATE users 
SET email = 'john.newemail@example.com' 
WHERE name = 'John Doe';

7. 删除数据

DELETE FROM table_name
WHERE condition;
DELETE FROM table_name 
WHERE condition;

 

例如:

DELETE FROM users WHERE id = 1;
DELETE FROM users WHERE id = 1;

 

8. 删除表

DROP TABLE table_name;
DROP TABLE table_name;

 

9. 删除数据库

DROP DATABASE database_name;

	DROP DATABASE database_name;

 

注意DROP 语句会永久删除数据或表,所以请小心使用。

以上只是 SQL 语句的基础部分。MySQL 支持许多更复杂的查询和操作,包括连接、子查询、索引、视图、存储过程、触发器等。如果你需要更高级的功能,建议查阅 MySQL 官方文档或相关教程。

1. 连接(JOIN)

连接用于从两个或多个表中检索数据。

示例

SELECT orders.order_id, customers.customer_name, products.product_name
FROM orders
INNER JOIN customers ON orders.customer_id = customers.customer_id
INNER JOIN order_details ON orders.order_id = order_details.order_id
INNER JOIN products ON order_details.product_id = products.product_id;

 

SELECT orders.order_id, customers.customer_name, products.product_name 
FROM orders 
INNER JOIN customers ON orders.customer_id = customers.customer_id 
INNER JOIN order_details ON orders.order_id = order_details.order_id 
INNER JOIN products ON order_details.product_id = products.product_id;

2. 子查询(SUBQUERY)

子查询是嵌套在另一个查询中的查询。

示例

 
-- 查询订单总额超过 1000 的客户
SELECT customer_name
FROM customers
WHERE customer_id IN (
SELECT customer_id
FROM orders
WHERE order_total > 1000
);

 

-- 查询订单总额超过 1000 的客户 
SELECT customer_name 
FROM customers 
WHERE customer_id IN ( 
SELECT customer_id 
FROM orders 
WHERE order_total > 1000 
);

3. 索引(INDEX)

索引用于提高查询性能。

示例

-- 为 customers 表的 customer_name 列创建索引
CREATE INDEX idx_customer_name ON customers(customer_name);
-- 删除索引
DROP INDEX idx_customer_name ON customers;

 

-- 为 customers 表的 customer_name 列创建索引 
CREATE INDEX idx_customer_name ON customers(customer_name); 


-- 删除索引 
DROP INDEX idx_customer_name ON customers;

4. 视图(VIEW)

视图是基于 SQL 语句的结果集的可视化表。

示例

 
-- 创建一个视图,显示订单和客户的信息
CREATE VIEW view_customer_orders AS
SELECT orders.order_id, customers.customer_name, orders.order_date
FROM orders
INNER JOIN customers ON orders.customer_id = customers.customer_id;
-- 从视图中查询数据
SELECT * FROM view_customer_orders;
-- 删除视图
DROP VIEW view_customer_orders;

 

-- 创建一个视图,显示订单和客户的信息 
CREATE VIEW view_customer_orders AS 
SELECT orders.order_id, customers.customer_name, orders.order_date 
FROM orders 
INNER JOIN customers ON orders.customer_id = customers.customer_id; 


-- 从视图中查询数据 
SELECT * FROM view_customer_orders; 


-- 删除视图 
DROP VIEW view_customer_orders;

5. 存储过程(STORED PROCEDURE)

存储过程是一组为了完成特定功能的 SQL 语句集合。

示例

 
DELIMITER //
CREATE PROCEDURE InsertNewCustomer(IN p_name VARCHAR(50), IN p_email VARCHAR(100))
BEGIN
INSERT INTO customers (name, email) VALUES (p_name, p_email);
END //
DELIMITER ;
-- 调用存储过程
CALL InsertNewCustomer('Jane Smith', 'jane.smith@example.com');
-- 删除存储过程
DROP PROCEDURE InsertNewCustomer;
DELIMITER // 
CREATE PROCEDURE InsertNewCustomer(IN p_name VARCHAR(50), IN p_email VARCHAR(100)) 
BEGIN 
INSERT INTO customers (name, email) VALUES (p_name, p_email); 
END // 
DELIMITER ; 


-- 调用存储过程 
CALL InsertNewCustomer('Jane Smith', 'jane.smith@example.com'); 


-- 删除存储过程 
DROP PROCEDURE InsertNewCustomer;

 

6. 触发器(TRIGGER)

触发器是与表事件(如 INSERT、UPDATE 或 DELETE)相关联的命名数据库对象,当表上出现指定事件时,触发器将自动激活并执行。

示例

 
-- 创建一个触发器,在插入新订单时更新客户的总订单数
DELIMITER //
CREATE TRIGGER trg_after_order_insert
AFTER INSERT ON orders
FOR EACH ROW
BEGIN
UPDATE customers
SET total_orders = total_orders + 1
WHERE customer_id = NEW.customer_id;
END //
DELIMITER ;
-- 禁用触发器
ALTER TABLE orders DISABLE TRIGGER trg_after_order_insert;
-- 启用触发器
ALTER TABLE orders ENABLE TRIGGER trg_after_order_insert;
-- 删除触发器
DROP TRIGGER trg_after_order_insert;
-- 创建一个触发器,在插入新订单时更新客户的总订单数 
DELIMITER // 
CREATE TRIGGER trg_after_order_insert 
AFTER INSERT ON orders 
FOR EACH ROW 
BEGIN 
UPDATE customers 
SET total_orders = total_orders + 1 
WHERE customer_id = NEW.customer_id; 
END // 
DELIMITER ; 


-- 禁用触发器 
ALTER TABLE orders DISABLE TRIGGER trg_after_order_insert; 


-- 启用触发器 
ALTER TABLE orders ENABLE TRIGGER trg_after_order_insert; 


-- 删除触发器 
DROP TRIGGER trg_after_order_insert;

 

请注意,上述示例中的表结构(如 orderscustomers 等)是假设的,你可能需要根据你自己的数据库结构进行调整。同时,确保在执行任何数据库更改(如创建、删除或修改表、索引、视图、存储过程或触发器)之前备份你的数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张謹礧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值