SQL常用基本公式详细介绍

下面是 MySQL 中创建数据库、删除数据库、选择数据库、插入数据、查询数据、使用 WHERE 语句、更新数据、删除数据、使用 LIKE、UNION、ORDER BY、分组、连接、处理 NULL 值、修改表结构以及多表查询的示例和代码。

1.创建数据库、删除数据库、选择数据库

1. 创建数据库

CREATE DATABASE mydatabase;

2. 删除数据库

DROP DATABASE mydatabase;

3. 选择数据库

USE mydatabase;

2.数据定义语言 (DDL: Data Definition Language)创建表,插入数据、查询数据

1.创建表

CREATE TABLE employees (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(100),
    position VARCHAR(100),
    salary DECIMAL(10, 2),
    department_id INT
);

CREATE TABLE departments (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(100)
);

2.修改表

1. ADD COLUMN – 添加列

ALTER TABLE table_name ADD column_name datatype constraint;

示例:

ALTER TABLE employees ADD email VARCHAR(100);

2. ALTER COLUMN – 修改列

ALTER TABLE table_name MODIFY column_name datatype constraint;

示例:

ALTER TABLE employees MODIFY COLUMN salary DECIMAL(12, 2);

3. DROP COLUMN – 删除列

ALTER TABLE table_name DROP COLUMN column_name;

示例:

ALTER TABLE employees DROP COLUMN email;

4. RENAME COLUMN – 重命名列

ALTER TABLE table_name RENAME COLUMN old_column_name TO new_column_name;

示例:

ALTER TABLE employees RENAME COLUMN position TO job_title;

3.TRUNCATE TABLE – 清除表数据

TRUNCATE TABLE table_name;

示例:

TRUNCATE TABLE employees;

4.DROP TABLE – 删除表

DROP TABLE table_name;

示例:

DROP TABLE employees;

3. 数据操作语言(DML:Data Manipulation Language)

1. 插入数据

INSERT INTO employees (name, position, salary, department_id) VALUES
('Alice', 'Manager', 80000.00, 1),
('Bob', 'Developer', 60000.00, 2),
('Charlie', 'Analyst', 50000.00, 1);

INSERT INTO departments (name) VALUES
('HR'),
('IT');

2. 更新数据

UPDATE employees SET salary = 70000 WHERE name = 'Bob';

3. 删除数据

DELETE FROM employees WHERE name = 'Charlie';

4.数据查询语言(DQL: Data Query Language):

1. SELECT – 查找数据

SELECT column1, column2, ... FROM table_name;

示例:

SELECT name, salary FROM employees;

2. WHERE 语句

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

示例:

SELECT * FROM employees WHERE salary > 50000;

3.SQL 聚合函数

用于对一组值执行计算,并返回单个值。常见的聚合函数包括 COUNT、SUM、AVG、MIN 和 MAX。这些函数通常与 GROUP BY 子句一起使用,以便对结果集进行分组和汇总。

COUNT – 计数

SELECT COUNT(column_name) FROM table_name WHERE condition;

示例:

SELECT COUNT(*) FROM employees WHERE department_id = 1;

AVG – 均值

SELECT AVG(column_name) FROM table_name WHERE condition;

示例:

SELECT AVG(salary) FROM employees WHERE department_id = 2;

SUM – 求和

SELECT SUM(column_name) FROM table_name WHERE condition;

示例:

SELECT SUM(salary) FROM employees WHERE department_id = 1;

MIN – 求最小值

SELECT MIN(column_name) FROM table_name WHERE condition;

示例:

SELECT MIN(salary) FROM employees;

MAX – 求最大值

SELECT MAX(column_name) FROM table_name WHERE condition;

示例:

SELECT MAX(salary) FROM employees;

ROUND – 四舍五入

SELECT ROUND(column_name, decimal_places) FROM table_name;

示例:

SELECT ROUND(salary, 2) FROM employees;

LENGTH – 字符串长度

SELECT LENGTH(column_name) FROM table_name;

示例:

SELECT LENGTH(name) FROM employees;

UCASE – 列名大写

SELECT UCASE(column_name) FROM table_name;

示例:

SELECT UCASE(name) FROM employees;

DISTINCT – 去重

SELECT DISTINCT column_name FROM table_name;

示例:

SELECT DISTINCT department_id FROM employees;

LIMIT – 限制

SELECT column1, column2, ... FROM table_name LIMIT number_of_records OFFSET offset;

示例:

SELECT * FROM employees LIMIT 5;
SELECT * FROM employees LIMIT 5 OFFSET 10;

LIKE – 运算符

SELECT column1, column2, ... FROM table_name WHERE column LIKE pattern;

示例:

SELECT * FROM employees WHERE name LIKE 'A%';

BETWEEN – 运算符

SELECT column1, column2, ... FROM table_name WHERE column BETWEEN value1 AND value2;

示例:

SELECT * FROM employees WHERE salary BETWEEN 50000 AND 70000;

ORDER BY – 排序

SELECT column1, column2, ... FROM table_name ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ...;

示例:

SELECT * FROM employees ORDER BY salary DESC;

GROUP BY – 分组

SELECT column1, aggregate_function(column2) FROM table_name GROUP BY column1;

示例:

SELECT department_id, AVG(salary) AS avg_salary FROM employees GROUP BY department_id;

GROUP BY 与聚合函数一起使用
GROUP BY 子句用于将结果集按一个或多个列进行分组。它通常与聚合函数一起使用,以便对每个分组执行聚合计算。

语法:

SELECT column1, AGGREGATE_FUNCTION(column2) FROM table_name
WHERE condition
GROUP BY column1;

示例:

-- 按部门分组,计算每个部门的员工总数
SELECT department_id, COUNT(*) AS employee_count
FROM employees
GROUP BY department_id;

-- 按部门分组,计算每个部门的平均薪资
SELECT department_id, AVG(salary) AS avg_salary
FROM employees
GROUP BY department_id;

-- 按职位分组,计算每个职位的最高薪资
SELECT position, MAX(salary) AS max_salary
FROM employees
GROUP BY position;

HAVING 子句

HAVING 子句用于过滤 GROUP BY 子句后的结果集。它通常与聚合函数一起使用。

语法:

SELECT column1, AGGREGATE_FUNCTION(column2) FROM table_name
WHERE condition
GROUP BY column1
HAVING aggregate_condition;

示例:

-- 按部门分组,计算每个部门的员工总数,过滤出员工总数大于5的部门
SELECT department_id, COUNT(*) AS employee_count
FROM employees
GROUP BY department_id
HAVING COUNT(*) > 5;

-- 按部门分组,计算每个部门的平均薪资,过滤出平均薪资大于60000的部门
SELECT department_id, AVG(salary) AS avg_salary
FROM employees
GROUP BY department_id
HAVING AVG(salary) > 60000;

这些示例展示了如何使用 SQL 聚合函数以及如何将它们与 GROUP BY 和 HAVING 子句结合使用,以进行数据分组和汇总分析。

4. UNION

SELECT name FROM employees
UNION
SELECT name FROM departments;

5. 连接(JOIN)

内连接(INNER JOIN)

SELECT employees.name, departments.name AS department
FROM employees
INNER JOIN departments ON employees.department_id = departments.id;

左连接(LEFT JOIN)

SELECT employees.name, departments.name AS department
FROM employees
LEFT JOIN departments ON employees.department_id = departments.id;

右连接(RIGHT JOIN)

SELECT employees.name, departments.name AS department
FROM employees
RIGHT JOIN departments ON employees.department_id = departments.id;

6. 处理 NULL 值

使用 IFNULL

SELECT name, IFNULL(salary, 0) AS salary FROM employees;

使用 COALESCE

SELECT name, COALESCE(salary, 0) AS salary FROM employees;

7. 多表查询

子查询

SELECT * FROM employees WHERE department_id = (
    SELECT id FROM departments WHERE name = 'IT'
);

联合查询(UNION)

SELECT name FROM employees
UNION
SELECT name FROM departments;

8. 处理 NULL 值

SELECT name, IFNULL(salary, 0) AS salary FROM employees;

示例数据库操作总结

下面是一个完整的示例,展示了上述所有操作:

-- 创建数据库
CREATE DATABASE mydatabase;

-- 选择数据库
USE mydatabase;

-- 创建表
CREATE TABLE employees (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(100),
    position VARCHAR(100),
    salary DECIMAL(10, 2),
    department_id INT
);

CREATE TABLE departments (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(100)
);

-- 插入数据
INSERT INTO employees (name, position, salary, department_id) VALUES
('Alice', 'Manager', 80000.00, 1),
('Bob', 'Developer', 60000.00, 2),
('Charlie', 'Analyst', 50000.00, 1);

INSERT INTO departments (name) VALUES
('HR'),
('IT');

-- 查询数据
SELECT * FROM employees;

-- WHERE 语句
SELECT * FROM employees WHERE salary > 50000;

-- 更新数据
UPDATE employees SET salary = 70000 WHERE name = 'Bob';

-- 删除数据
DELETE FROM employees WHERE name = 'Charlie';

-- 使用 LIKE
SELECT * FROM employees WHERE name LIKE 'A%';

-- UNION
SELECT name FROM employees
UNION
SELECT name FROM departments;

-- ORDER BY
SELECT * FROM employees ORDER BY salary DESC;

-- 分组
SELECT department_id, AVG(salary) AS avg_salary FROM employees GROUP BY department_id;

-- 连接(JOINSELECT employees.name, departments.name AS department
FROM employees
INNER JOIN departments ON employees.department_id = departments.id;

-- 处理 NULLSELECT name, IFNULL(salary, 0) AS salary FROM employees;

-- 修改表结构(ALTERALTER TABLE employees ADD COLUMN email VARCHAR(100);
ALTER TABLE employees MODIFY COLUMN salary DECIMAL(12, 2);
ALTER TABLE employees DROP COLUMN email;

-- 子查询
SELECT * FROM employees WHERE department_id = (
    SELECT id FROM departments WHERE name = 'IT'
);

-- 删除数据库
DROP DATABASE mydatabase;

这些操作涵盖了 MySQL 数据库的基本管理任务、数据操作和查询技巧,是数据库应用中常见的基本操作。

5. 事务控制语言(TCL:Transaction Control Language)

① COMMIT – 提交事务

COMMIT;

示例:

START TRANSACTION;
UPDATE employees SET salary = salary + 5000 WHERE department_id = 1;
COMMIT;

② ROLLBACK – 回滚事务

ROLLBACK;

示例:

START TRANSACTION;
UPDATE employees SET salary = salary + 5000 WHERE department_id = 1;
ROLLBACK;

③ SAVEPOINT – 设置保存点

SAVEPOINT savepoint_name;

示例:

START TRANSACTION;
UPDATE employees SET salary = salary + 5000 WHERE department_id = 1;
SAVEPOINT before_update;
UPDATE employees SET salary = salary - 5000 WHERE department_id = 2;
ROLLBACK TO before_update;
COMMIT;

④ RELEASE SAVEPOINT – 释放保存点

RELEASE SAVEPOINT savepoint_name;

示例:

START TRANSACTION;
UPDATE employees SET salary = salary + 5000 WHERE department_id = 1;
SAVEPOINT before_update;
RELEASE SAVEPOINT before_update;
COMMIT;

这些内容涵盖了 SQL 中常用的查询、定义、操作和事务控制语言的基本公式和用法。这些命令和语法是数据库操作中最常见和基本的,能够满足大多数数据库操作需求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值