
本文共 2357 字,大约阅读时间需要 7 分钟。
SQL基础教程:从入门到实践
SQL简介
结构化查询语言(SQL)是一种数据库查询和程序设计语言,主要用于存取、查询、更新和管理关系数据库。它被广泛应用于多种数据库系统,作为数据处理的标准接口。SQL的语法灵活且强大,支持嵌套查询,适合处理复杂的数据操作。
SQL类型分类
DML(数据操作语言)
包括INSERT
、UPDATE
和DELETE
语句,用于对数据库表进行数据添加、修改和删除操作。 DDL(数据定义语言)
包括CREATE
和DROP
语句,用于创建和删除数据库表、索引等操作。 DCL(数据控制语言)
包括GRANT
和REVOKE
语句,用于控制用户对数据库对象的访问权限。 Select语句
SELECT
语句是用于从数据库表中检取数据的基本语句。
Select语法
Select * | 列名 from 表名
*
表示选择表中所有列。列名
表示选择指定列。from 表名
表示从指定表中选择数据。
别名用法
在查询结果中,可以为列设置别名:
Select 列名 别名, 列名 别名 from 表名
别名可以包含特殊符号或关键字,但别名中如果有双引号,区别在于是否包含特殊符号。
消除重复数据
使用DISTINCT
关键字可以去除重复行:
Select distinct * from 表名
如果需要去除多个列的重复值,需要在列名列表中包含所有列:
Select distinct 列名1, 列名2 from 表名
查询中四则运算
可以在SELECT
语句中使用四则运算符:
Select name, sal * 12 as income from emp
支持的运算符包括+
、-
、*
和/
。
空值与null
空值定义
空值是指无效的、未指定的、未知的或不可预知的值。空值与空格或0
不同,包含null
的表达式结果为null
。空值永远不等于自身。
空值判断
-- 非空检查Select 列名 is not null from 表名-- 空值检查Select 列名 is null from 表名
连接符
在数据库中,字符串连接通常使用||
符号。不同数据库服务器的实现方式有所不同:
- MySQL:直接使用
||
符号。 - Oracle:使用
II
符号。
条件查询与排序
where语句
WHERE
子句用于对查询结果进行过滤:
Select * from 表名 where 条件
比较运算符
常用比较运算符包括:
=
(等于)<>
(不等于)>
(大于)>=
(大于等于)<
(小于)<=
(小于等于)
逻辑运算符
AND
(逻辑与)OR
(逻辑或)NOT
(逻辑非)
where语句示例
非空和空的限制
Select 列名 is not null from 表名Select 列名 is null from 表名
范围限制
Select * from 表名 where 列名 > 1500 and 列名 < 3000
模糊查询
Select * from 表名 where 列名 like "%海%"
排序
使用ORDER BY
对结果排序:
Select 列名 from 表名 order by 列名 asc/desc
默认排序规则为升序排列。如果需要降序排列,需在asc
或desc
后指定。排序时可以处理null
值,使用nulls first
或nulls last
指定null
值的显示位置。
单行函数
字符函数
字符串连接 使用CONCAT
或||
符号连接字符串:
Select concat('hello', 'world') as full_string from dual
字符串截取 使用SUBSTR
函数截取字符串:
Select substr('hello', 1, 5) from dual
字符串长度 使用LENGTH
函数获取字符串长度。
字符串替换 使用REPLACE
函数替换字符串:
Select replace('old', 'new', 'result') from dual
数值函数
数值运算 使用+
、-
、*
和/
进行数值运算。
数值函数 包括ROUND
(四舍五入)、CEILING
(向上取整)和FLOOR
(向下取整)等函数。
日期函数
获得周数
Select (sysdate - 入职日期) / 7 as weeks from dual
获得两个时间段中的月数
Select months_between(日期1, 日期2) from dual
获得几个月后的日期
Select add_months(日期, 个月数) from dual
转换函数
字符串转换 使用TO_CHAR
函数将日期转换为字符串:
Select to_char(sysdate, 'YYYY-MM-DD HH:MM:SS') from dual
数值转换 使用TO_NUMBER
函数将字符串转换为数值。
日期转换 使用TO_DATE
函数将字符串转换为日期。
多行函数
分组函数
分组函数作用于一组数据,返回一组数据中的统计值。常用的分组函数包括COUNT
、AVG
、SUM
和MAX
。
Select dept_name, avg(sal) from emp group by dept_name having avg(sal) < 2000
单行子查询
Select e.name, min(sal) from emp group by e.dept_id
NVL函数
NVL
函数用于处理null
值:
Select name, nvl(name, '匿名') from emp
如果name
字段为null
,则返回'匿名'
;如果name
不为空,则返回实际值。
发表评论
最新留言
关于作者
