SQLjava
SQL 基础与进阶:增删改查、查询优化及约束
本文系统讲解了 SQL 的基础与进阶语法。内容包括数据库与表的创建删除、数据的增删改查操作。详细阐述了 WHERE 条件过滤、ORDER BY 排序、DISTINCT 去重、LIKE 模糊查询及 BETWEEN 区间筛选方法。此外还涵盖了 UNION 合并结果集、别名使用以及 NOT NULL、UNIQUE、PRIMARY KEY、CHECK 等数据完整性约束规则,适合初学者快速掌握 SQL 核心语法与应用场景。

本文系统讲解了 SQL 的基础与进阶语法。内容包括数据库与表的创建删除、数据的增删改查操作。详细阐述了 WHERE 条件过滤、ORDER BY 排序、DISTINCT 去重、LIKE 模糊查询及 BETWEEN 区间筛选方法。此外还涵盖了 UNION 合并结果集、别名使用以及 NOT NULL、UNIQUE、PRIMARY KEY、CHECK 等数据完整性约束规则,适合初学者快速掌握 SQL 核心语法与应用场景。

-- 创建数据库
CREATE DATABASE TEST;
-- 使用该数据库
USE TEST;
-- 删除数据库
DROP DATABASE TEST;
-- 展示数据库列表
SHOW DATABASES;
-- 个人信息表
CREATE TABLE TEST_PERSONAL (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
age INT,
city VARCHAR(50)
);
-- 查看数据库表
SHOW TABLES;
DESCRIBE TEST_PERSONAL;
-- 删除数据库表
DROP TABLE table_name;
SELECT * FROM TEST_PERSONAL;
SELECT name, age FROM TEST_PERSONAL;
INSERT INTO TEST_PERSONAL VALUES (10, '岂不闻', 25, '重庆');
INSERT INTO TEST_PERSONAL (id, name, age, city) VALUES (11, '岂不闻 2', 25, '重庆');
-- WHERE 子句
SELECT * FROM TEST_PERSONAL WHERE age > 18;
-- ORDER BY 排序 (ASC-升,DESC-降)
SELECT * FROM TEST_PERSONAL ORDER BY age ASC;
-- AND & OR 运算符
SELECT * FROM TEST_PERSONAL WHERE name='张三' AND city='北京';
-- SELECT DISTINCT
SELECT DISTINCT age, name, city FROM TEST_PERSONAL;
-- UPDATE 更新值
UPDATE TEST_PERSONAL SET name='也也', city='黔江' WHERE id = 11;
-- DELETE 删除语句
DELETE FROM TEST_PERSONAL WHERE id > 3 AND id < 10;
-- SELECT TOP - 返回限制行数
SELECT TOP n column1, column2, ... FROM table_name;
-- 返回前 5 行
SELECT TOP 5 * FROM table_name;
-- 返回前 10%
SELECT TOP 10 PERCENT * FROM table_name;
-- 结合 ORDER BY 返回排序后限制数据
SELECT TOP 5 * FROM Employees ORDER BY Salary DESC;
-- LIKE-WHERE 子句中对字符串进行模糊查询
SELECT column1, column2, ... FROM table_name WHERE column_name LIKE pattern;
-- % 匹配任意数量字符(包括零个)
-- _ 匹配单个字符
-- 查询某字符串开头
SELECT * FROM employees WHERE last_name LIKE 'Sm%';
-- 查询某字符串结尾
SELECT * FROM products WHERE product_name LIKE '%Phone';
-- 查询包含某字符串
SELECT * FROM customers WHERE email LIKE '%@gmail.com';
-- 精确长度与模式
SELECT * FROM users WHERE phone LIKE '___-____-____';
-- 单字符匹配
SELECT * FROM cities WHERE city_code LIKE 'B_3';
-- 列别名
SELECT column_name AS alias_name FROM table_name;
-- 表别名
SELECT t.column1, t.column2 FROM table_name AS t;
-- BETWEEN-区间数据 (包含边界值)
SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2;
-- 查找年龄在 20-30 间的员工
SELECT name, age FROM employees WHERE age BETWEEN 20 AND 30;
-- UNION-合并结果集 (自动清除重复行)
SELECT name, department FROM employees UNION SELECT name, department FROM contractors ORDER BY department;
-- UNION ALL-合并两张表所有数据
SELECT product_name FROM sales_2024 UNION ALL SELECT product_name FROM sales_2025;
-- 创建表时定义 NOT NULL
CREATE TABLE users (
id INT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL,
age INT
);
-- 修改已有的表添加约束 (MySQL)
-- MODIFY COLUMN 用于修改表中已有列的定义
ALTER TABLE users MODIFY COLUMN phone VARCHAR(20) NOT NULL;
CREATE TABLE users ( email VARCHAR(100) UNIQUE );
-- 列级定义
CREATE TABLE users ( id INT PRIMARY KEY, name VARCHAR(50) );
-- 或表级定义(支持多列主键)
CREATE TABLE order_items (
order_id INT,
product_id INT,
PRIMARY KEY (order_id, product_id)
);
CREATE TABLE products (
price DECIMAL(10,2) CHECK (price > 0),
age INT CHECK (age BETWEEN 0 AND 150)
);

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online
JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online
使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online
Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online
在线格式化和美化您的 SQL 查询(它支持各种 SQL 方言)。 在线工具,SQL 美化和格式化在线工具,online
解析 INSERT 等受限 SQL,导出为 CSV、JSON、XML、YAML、HTML 表格(见页内语法说明)。 在线工具,SQL 转 CSV/JSON/XML在线工具,online