SQL语句基础
SQL(Structured QueryLanguage,结构化查询语言)是用于管理关系型数据库的标准编程语言。它允许用户定义、操作和查询数据,并控制数据的访问权限。SQL的核心功能围绕数据库的增删改查(CRUD)操作展开。
SQL的应用场景
- 数据分析:通过复杂查询和聚合分析业务数据,例如生成销售报表或用户行为分析。
- Web应用后端:支持动态网站的数据存储与交互,如用户登录、订单处理。
- 事务处理:在银行、电商等领域保障ACID(原子性、一致性、隔离性、持久性)特性,例如转账操作。
- 数据集成:跨系统数据迁移或整合时,通过SQL脚本清洗和转换数据。
SQL中的注释
在SQL中注释有两种:
- 多行注释
/**/
/*
这是多行注释
*/
- 单行注释
--
-- 这是单行注释
1.创建表 create
CREATE TABLE 表名称
(
列名称1 数据类型,
列名称2 数据类型,
列名称3 数据类型
);
示例,创建一张名为TEST的表,该表有三列,分别为 ID、NAME、AGE:
-- 注意不要有尾后逗号
CREATE TABLE TEST
(
ID INT,
NAME CHAR(4),
AGE INT
);
2.删除表
-- 整张表都会被删除
DROP TABLE 待删除的表名;
示例,删除名为TEST的表:
-- 注意:整张表都会被删除
DROP TABLE TEST;
3.删除表中的数据
-- 删除年龄小于 22 岁的记录,只有满足条件的数据才会被删除
DELETE FROM TEST WHERE AGE < 22;
4.清除表中的数据
如果仅仅需要除去表内的数据,但并不删除表本身,那么我们该如何做呢?
-- TRUNCATE TABLE 表名称;
TRUNCATE TABLE TEST;
5.插入数据 insert
注意
1.插入数据前需先创建表,否则会报错, 2.多次进行相同的插入操作不会覆盖原数据(也就是追加)
方式1 不指定列名
-- ,不指定列名,顺序就会与创建表时的列顺序依次对应
INSERT INTO TEST VALUES (2, '李四', 30);
方式2 向指定列名中插入数据
-- 向 test 表的 ID、Name 和 Age 列插入数据,注意: 括号内的值按照前面指定列的顺序依次对应 (ID 对应 1,Name 对应 '张三')
INSERT INTO TEST (ID, Name, Age) VALUES (1, '张三', 25);
插入多条数据
-- 一次性添加多条数据 指定或不指定列名都可
INSERT INTO TEST1 (ID, Name, Age)
VALUES (1, '张三', 16),
(2, '张二', 5),
(3, '张三', 13),
(4, '张四', 4);
6.查询数据 select
1.查询指定表中所有数据
SELECT * FROM TEST;
2.查询指定表中指定列的数据
-- 查询指定表中的 Name 和 Age 列的数据
SELECT Name, Age FROM TEST;
SQL中的运算符 >
<
=
!=
以及 AND
OR
NOT
3.带一个条件的查询
-- 1.查询 TEST 表中 Age 大于 25 的数据
SELECT * FROM TEST WHERE Age > 25;
-- 2.查询 TEST 表中 Name 为 '张三' 的数据
SELECT * FROM TEST WHERE Name = '张三';
-- 3.查询NAME不等于 '张三' 的数据
SELECT * FROM TEST WHERE NAME != '张三';
4.多条件查询
-- 查询年龄大于 25 且姓名为 '张三' 的记录
SELECT * FROM TEST WHERE AGE > 25 AND NAME = '张三';
5.排序查询结果
-- 按 Age 列升序排序查询 test 表的数据
SELECT * FROM TEST ORDER BY Age;
-- 按 Age 列降序排序查询 test 表的数据
SELECT * FROM TEST ORDER BY Age DESC;
6.限制查询结果的数量
7.模糊查询
1.查询以表中指定列中以指定字符开头
的数据
-- 查询姓名以 '张' 开头的记录
SELECT * FROM TEST WHERE NAME LIKE '张%';
2.查询表中指定列中包含
指定字符的数据
-- 查询姓名中包含 '三' 的记录
SELECT * FROM TEST WHERE NAME LIKE '%三%';
7.去除表中的重复值
注意:去除重复的数据仅仅作用于查询时(使用select可能会查询到很多数据,这些数据中可能会有多条重复的数据,distinct只会去除查询时重复的数据),表中的实际数据是不会删除的。
-- 对Name列进行处理,去除重复的姓名,只返回不同的姓名
SELECT DISTINCT Name FROM TEST;
8.SQL中常用函数
1.AVG 平均值
函数
-- 求 TEST 表中AGE列的平均值
-- select AVG(列名) from 表名;
select AVG(AGE) from TEST;
2.MAX 最大值
函数
-- SELECT MAX(列名) FROM 表名;
SELECT MAX(ID) FROM TEST;
3.MIN 最小值
函数
-- SELECT MIN(列名) FROM 表名;
SELECT MIN(AGE) FROM TEST;
4.SUM 求和
函数
-- SELECT SUM(列名) FROM 表名;
SELECT SUM(SALARY) FROM TEST;