← 目录从入门到精通MySQL

MySQL基本 SQL 语法

2024/11/1

MySQL 基本 SQL 语法

MySQL 是一种功能强大的关系型数据库管理系统(RDBMS),使用结构化查询语言(SQL)进行数据管理和操作。本文将详细介绍 MySQL 中的基本 SQL 语法,包括数据库和表的创建、数据的插入、更新和删除、查询数据、连接查询、子查询与联合查询,配合示例代码帮助你理解。

一、数据库与表的创建

1. 创建数据库

在 MySQL 中,首先需要创建数据库。使用 CREATE DATABASE 语句可以创建一个新数据库。

sql
CREATE DATABASE example_db;

2. 创建表

创建数据库后,可以在该数据库中创建表。使用 CREATE TABLE 语句。

sql
USE example_db;

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    age INT NOT NULL,
    email VARCHAR(100)
);
  • AUTO_INCREMENT:表示该字段会自动增加,通常用于主键。
  • PRIMARY KEY:指定该字段为主键,保证唯一性。
  • VARCHAR(n):表示变长字符串,n 是字符串的最大长度。

二、数据的插入、更新与删除

1. 插入数据

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

sql
INSERT INTO users (name, age, email) VALUES ('Alice', 30, 'alice@example.com');
INSERT INTO users (name, age, email) VALUES ('Bob', 25, 'bob@example.com');

2. 更新数据

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

sql
UPDATE users SET age = 31 WHERE name = 'Alice';

3. 删除数据

使用 DELETE 语句从表中删除数据。

sql
DELETE FROM users WHERE name = 'Bob';

三、查询数据

1. 基本查询

使用 SELECT 语句查询数据。

sql
SELECT * FROM users;

2. 条件查询

使用 WHERE 子句进行条件查询。

sql
SELECT * FROM users WHERE age > 25;

3. 排序查询

使用 ORDER BY 子句对结果进行排序。

sql
SELECT * FROM users ORDER BY age DESC;  -- 降序排列

4. 分组查询

使用 GROUP BY 子句对结果进行分组,并结合聚合函数。

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

四、连接查询

1. 内连接(INNER JOIN)

内连接用于返回两个表中匹配的记录。

sql
CREATE TABLE orders (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT,
    product VARCHAR(100),
    FOREIGN KEY (user_id) REFERENCES users(id)
);

INSERT INTO orders (user_id, product) VALUES (1, 'Laptop'), (1, 'Phone'), (2, 'Tablet');

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

2. 左连接(LEFT JOIN)

左连接用于返回左表的所有记录,以及右表中匹配的记录。

sql
SELECT users.name, orders.product
FROM users
LEFT JOIN orders ON users.id = orders.user_id;

3. 右连接(RIGHT JOIN)

右连接用于返回右表的所有记录,以及左表中匹配的记录。

sql
SELECT users.name, orders.product
FROM users
RIGHT JOIN orders ON users.id = orders.user_id;

五、子查询与联合查询

1. 子查询

子查询是嵌套在其他查询中的查询。

sql
SELECT * FROM users WHERE id IN (SELECT user_id FROM orders WHERE product = 'Laptop');

2. 联合查询(UNION)

使用 UNION 将多个查询的结果合并为一个结果集。

sql
SELECT name FROM users
UNION
SELECT product FROM orders;

3. 联合查询注意事项

  • 所有查询的列数必须相同。
  • 列的顺序和数据类型也必须匹配。

六、示例综合

以下是一个综合示例,将上述所有内容结合在一起。

sql
-- 创建数据库
CREATE DATABASE example_db;
USE example_db;

-- 创建用户表
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    age INT NOT NULL,
    email VARCHAR(100)
);

-- 创建订单表
CREATE TABLE orders (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT,
    product VARCHAR(100),
    FOREIGN KEY (user_id) REFERENCES users(id)
);

-- 插入数据
INSERT INTO users (name, age, email) VALUES ('Alice', 30, 'alice@example.com');
INSERT INTO users (name, age, email) VALUES ('Bob', 25, 'bob@example.com');
INSERT INTO orders (user_id, product) VALUES (1, 'Laptop'), (1, 'Phone'), (2, 'Tablet');

-- 查询用户及其订单
SELECT users.name, orders.product
FROM users
INNER JOIN orders ON users.id = orders.user_id;

-- 查询年龄大于 25 的用户
SELECT * FROM users WHERE age > 25;

-- 更新用户信息
UPDATE users SET age = 31 WHERE name = 'Alice';

-- 删除订单
DELETE FROM orders WHERE product = 'Tablet';

-- 使用子查询
SELECT * FROM users WHERE id IN (SELECT user_id FROM orders WHERE product = 'Laptop');

-- 使用联合查询
SELECT name FROM users
UNION
SELECT product FROM orders;

总结

通过本文,你学习了 MySQL 的基本 SQL 语法,包括数据库与表的创建、数据的插入、更新与删除、查询数据、连接查询、子查询与联合查询。掌握这些基本操作,可以帮助你有效地管理和操作 MySQL 数据库中的数据。