sql语法学习
学习 SQL(Structured Query Language)语法是数据库开发的基础,主要用于数据库的管理和操作。以下是 SQL 的基本语法和常用操作,涵盖数据查询、插入、更新、删除等。
1. 数据库基础
- 数据库:存储表和数据的集合。
- 表:由行(记录)和列(字段)组成。
- 字段:表中的列,表示数据属性。
- 记录:表中的行,表示具体的数据项。
2. SQL 基本操作
SQL 分为四种主要操作类型:
- 数据查询语言 (DQL):用于查询数据,如
SELECT
。 - 数据操作语言 (DML):用于修改数据,如
INSERT
、UPDATE
、DELETE
。 - 数据定义语言 (DDL):用于定义和修改数据库结构,如
CREATE
、ALTER
、DROP
。 - 数据控制语言 (DCL):用于权限控制,如
GRANT
、REVOKE
。
3. 常用 SQL 语法
3.1. 创建数据库和表
-- 创建数据库
CREATE DATABASE my_database;
-- 使用数据库
USE my_database;
-- 创建表
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100),
email VARCHAR(100),
age INT
);
CREATE DATABASE
:创建一个新数据库。CREATE TABLE
:创建一个新表,定义字段及其数据类型。
3.2. 插入数据
-- 向表中插入数据
INSERT INTO users (name, email, age)
VALUES ('Alice', 'alice@example.com', 25);
-- 插入多行数据
INSERT INTO users (name, email, age)
VALUES
('Bob', 'bob@example.com', 30),
('Charlie', 'charlie@example.com', 22);
INSERT INTO
:插入新记录到表中。
3.3. 查询数据
-- 查询所有数据
SELECT * FROM users;
-- 查询特定列的数据
SELECT name, email FROM users;
-- 查询带条件的数据
SELECT * FROM users WHERE age > 25;
-- 使用别名(Alias)查询
SELECT name AS 'User Name', email AS 'Email Address' FROM users;
-- 排序查询结果
SELECT * FROM users ORDER BY age DESC;
-- 限制查询结果
SELECT * FROM users LIMIT 5;
SELECT
:从表中查询数据。WHERE
:条件查询。ORDER BY
:排序查询结果,ASC
为升序,DESC
为降序。LIMIT
:限制查询返回的记录数。
3.4. 更新数据
-- 更新数据
UPDATE users
SET age = 28
WHERE name = 'Alice';
UPDATE
:修改表中的记录,通常配合WHERE
条件使用。
3.5. 删除数据
-- 删除记录
DELETE FROM users WHERE name = 'Charlie';
-- 删除表中的所有记录
DELETE FROM users;
DELETE
:删除表中的数据。注意:如果不加WHERE
条件,会删除所有记录。
4. 复杂查询
4.1. 聚合函数
-- 统计记录总数
SELECT COUNT(*) FROM users;
-- 求平均年龄
SELECT AVG(age) FROM users;
-- 查询最大和最小年龄
SELECT MAX(age), MIN(age) FROM users;
COUNT
:计数。AVG
:求平均值。MAX
和MIN
:求最大值和最小值。
4.2. 分组查询(GROUP BY)
-- 按年龄分组统计人数
SELECT age, COUNT(*) FROM users
GROUP BY age;
GROUP BY
:用于将查询结果按某列分组,通常与聚合函数一起使用。
4.3. 联合查询(JOIN)
-- 创建 orders 表
CREATE TABLE orders (
order_id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT,
product_name VARCHAR(100),
amount DECIMAL(10, 2)
);
-- 插入数据
INSERT INTO orders (user_id, product_name, amount)
VALUES (1, 'Laptop', 1000.00), (2, 'Phone', 500.00), (1, 'Tablet', 300.00);
-- 联合查询:查询用户及其订单
SELECT users.name, orders.product_name, orders.amount
FROM users
JOIN orders ON users.id = orders.user_id;
JOIN
:用于关联两个或多个表。- INNER JOIN:默认的
JOIN
类型,返回两张表中满足条件的记录。 - LEFT JOIN:返回左表中的所有记录,即使右表中没有匹配。
- RIGHT JOIN:返回右表中的所有记录,即使左表中没有匹配。
- INNER JOIN:默认的
4.4. 子查询
-- 查询年龄最大的用户
SELECT * FROM users
WHERE age = (SELECT MAX(age) FROM users);
- 子查询:在查询中嵌套其他查询。
5. 数据库的修改和删除
5.1. 修改表结构
-- 添加新列
ALTER TABLE users ADD phone VARCHAR(20);
-- 修改列的数据类型
ALTER TABLE users MODIFY age SMALLINT;
-- 删除列
ALTER TABLE users DROP COLUMN phone;
ALTER TABLE
:修改表的结构,如添加、修改或删除列。
5.2. 删除表和数据库
-- 删除表
DROP TABLE users;
-- 删除数据库
DROP DATABASE my_database;
DROP
:用于删除表或数据库,删除操作不可恢复。
6. 事务(Transaction)
事务确保一组 SQL 操作要么全部执行成功,要么全部回滚。
-- 开启事务
START TRANSACTION;
-- 插入和更新操作
INSERT INTO users (name, email, age) VALUES ('Dave', 'dave@example.com', 40);
UPDATE users SET age = 41 WHERE name = 'Dave';
-- 提交事务
COMMIT;
-- 如果出现错误,回滚事务
ROLLBACK;
START TRANSACTION
:开始事务。COMMIT
:提交事务,使修改生效。ROLLBACK
:回滚事务,撤销未提交的修改。
7. 总结
SQL 是管理和操作关系型数据库的关键工具,掌握 SQL 基本语法和查询技巧可以高效地与数据库交互。通过学习创建、查询、更新、删除数据,以及如何执行复杂查询和事务操作,你可以有效地管理数据库中的数据。
原文地址:https://blog.csdn.net/golove666/article/details/142441497
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!