三. DQL查询语句
-- SELECT 语句用来查询表中的数据,
-- 一条SQL语句是由多个子句组成
-- 一个子句有一个关键字加一系列内容组成
-- SELECT语句中必须含有的是两个子句: SELECT子句和FROM子句
-- SELECT子句用于指定要查询的内容(字段,函数,表达式),
-- FROM子句用来指定数据来源的表
DESC emp;
SELECT ename,job,sal,deptno FROM emp WHERE sal > 2500;
-- 字段拼接函数
SELECT CONCAT(CONCAT(ename,':'),sal) FROM emp;
-- 连接字符串常用“||”
SELECT ename || ':' || sal FROM emp;
-- LENGTH函数:字符串的长度
SELECT ename,LENGTH(ename) FROM emp;
-- UPPER,LOWER,INITCAP(只保留首字母大写)
-- 转换大小写
-- dual:伪表,当查询的内容不是任何表中数据时,可以用伪表代替
SELECT
UPPER('helloworld'),LOWER('MATHS'),INITCAP('ENGLISH love')
FROM dual;
SELECT ename,sal,deptno FROM emp WHERE ename = UPPER('scott');
-- TRIM(去除字符串两端的指定的单个字符)
-- LTRIM/RTRIM(去除字符串左/右端的在指定字符串中出现的字符直至被打断)。不指定字符(不写)则是去除空格
SELECT TRIM('e' FROM 'eeeLskee') FROM dual;
SELECT LTRIM('reddeseeetrsfeLskee','etrsfd') FROM dual;
-- 补位函数:LPAD,RPAD(origiChar,len,padChar)
-- 字符串补足到len长度
-- 如果位数len不足原始字段origiChar长度,则一律从右侧开始截取
-- 作用:指定字符填补空位,空字符' '(引号间空格),产生左对齐或右对齐
SELECT ename,LPAD(sal,6,' ') FROM emp;
-- SUBSTR(str,startIndex,len)
-- 截取str字符串从startIndex处开始连续截取len个字符
-- 省略截取数量或者截取数量超过实际内容都是截取到末尾
-- 若startIndex为负数则从字符串末尾开始数(倒数正取)
-- 数据库中下标是从1开始的
SELECT SUBSTR('thinking in java', -10, 2) FROM dual;
-- INSTR:查看字符串的位置
-- INSTR(str1,str2 [,m[,n]])
-- 查找str2在str1中的位置。m,n是可选项,分别表示:
-- m——从第几个字符开始查找
-- n——第几次出现的位置
SELECT
INSTR('thinking in java','in'),
INSTR('thinking in java','in',4),
INSTR('thinking in java','in',4,2)
FROM dual;
-- 数字函数
-- ROUND(m,n):四舍五入
-- 保留m到小数点后n为
-- n为0或不指定则是保留到整数
-- n为负数则是保留到小数点的前n位
SELECT
ROUND(45.678,2),ROUND(45.678,0),ROUND(55.678,-2)
FROM dual;
-- TRUNC(m,n):截取数字(即不进行四舍五入)
-- 参数作用与ROUND一致
-- MOD(m,n):求余
SELECT ename,sal,MOD(sal,1000) FROM emp;
-- CEIL(n),FLOOR(n):上取整和下取整
SELECT CEIL(45.78),FLOOR(45.78) FROM dual;