【IT专家】数据库基础sql语句总结(以Oracle为主介绍,并与mysql,sql server做对比)一 下载本文

内容发布更新时间 : 2024/5/4 17:20:00星期一 下面是文章的全部内容请认真阅读。

本文由我司收集整编,推荐下载,如有疑问,请与我司联系

询英文时区分大小写。 —-查询 employees 表中 last_name 为 fay 的员工,显

示:employee_id,last_name,hire_date

SELECT EMPLOYEE_ID,LAST_NAME,HIRE_DATEFROM EMPLOYEESWHERE LAST_NAME=‘Fay’;—-条件为日期类型:值必须出现在一对单引号中,并且值必须 为 Oracle 默认为日期格式:DD-MON-RR —-查询 employees 表中 1997-8-17 入职员 工的 last_name,job_id,salary SELECT

LAST_NAME,JOB_ID,SALARY,HIRE_DATEFROM

EMPLOYEESWHERE HIRE_DATE=‘17-8 月-97’;注意:WHERE 子句中不能使用列 别名。

——比较运算符: , =, , =,=,!=, ——查询 employees 表中年薪大于 1000 的员工,显 示:last_name,job_id,salary,年薪 SELECT

LAST_NAME,JOB_ID,SALARY,SALARY*12

AS

年薪 FROM

EMPLOYEESWHERE SALARY*12 1000;–查询 employees 表中 97 年之后入职员工的 last_name,hire_date

SELECT LAST_NAME,HIRE_DATEFROM EMPLOYEESWHERE HIRE_DATE =‘1-1 月-97’;——特殊的比较运算符 (包含了边界值) last_name,salary SELECT

LAST_NAME,SALARYFROM

EMPLOYEESWHERE

SALARY

——BETWEEN..AND:查询指定范围内的数据

–查询 employees 表中工资在 6000-12000 之间的员工,显示:

BETWEEN 6000 AND 12000;—–IN(值列表):查询匹配列表中任意一个值相等的数 据。只能判断是否相等。 —–查询 employees 表中在 20 或 50 号部门工作的员工, 显示:last_name,departmnet_id SELECT

LAST_NAME,DEPARTMENT_IDFROM

EMPLOYEESWHERE

DEPARTMENT_ID IN(20,50);—–LIKE:模糊查询 %:任意长度的任意字符。 _:一个 长度的任意字符。

SELECT LAST_NAMEFROM EMPLOYEESWHERE LAST_NAME LIKE ‘%n_’;–

本文由我司收集整编,推荐下载,如有疑问,请与我司联系

使用 ESCAPE 声明一个符号,声明 LIKE 中此符号后面的一个下划线或百分号,不 是转义字符,而是查询的内容。 示:last_name.job_id

SELECT LAST_NAME,JOB_IDFROM EMPLOYEESWHERE JOB_ID LIKE ‘%A/_%’ ESCAPE ‘/’;—–IS NULL/IS NOT NULL —–NULL:与类型无关,表示未知 或不确定的值。

SELECT LAST_NAME,SALARY,DEPARTMENT_IDFROM EMPLOYEESWHERE DEPARTMENT_ID IS NULL;—–逻辑运算符:AND OR NOT —–查询 employees 表 中工资在 6000-12000 之间的员工,显示:last_name,salary SELECT BETWEEN

LAST_NAME,SALARYFROM 6000

AND

EMPLOYEESWHERE

SALARY

–查询 employees 表 job_id 中包含 A_的员工,显

12000;SELECT LAST_NAME,SALARYFROM

EMPLOYEESWHERE SALARY =6000 AND SALARY =12000;–查询 employees 表中 在 20 或 50 号部门工作的员工,显示:last_name,departmnet_id SELECT

LAST_NAME,DEPARTMENT_IDFROM

IN(20,50);SELECT

EMPLOYEESWHERE

DEPARTMENT_ID LAST_NAME,DEPARTMENT_IDFROM

EMPLOYEESWHERE DEPARTMENT_ID=20 OR DEPARTMENT_ID=50;—–NOT 关 键字:查询表中不在某个范围内的数据。 12000 之间的员工信息

SELECT LAST_NAME,SALARYFROM EMPLOYEESWHERE NOT SALARY BETWEEN

6000

AND

12000;SELECT

LAST_NAME,SALARYFROM

—–查询 employees 表中工资不在 6000-

EMPLOYEESWHERE NOT(SALARY =6000 AND SALARY =12000);—–排序: ORDER BY 子句 格式如下:1.升序:ASC 关键字,默认为升序排序 2.降序:DESC 关键字

SELECT 3FROM 1[WHERE] 2[ORDER BY 列名/第几列] ASC/DESC 4SELECT LAST_NAME,SALARYFROM EMPLOYEESORDER BY SALARY DESC;SELECT LAST_NAME,SALARY*12 AS

年薪 FROM EMPLOYEESORDER BY

年薪

本文由我司收集整编,推荐下载,如有疑问,请与我司联系

DESC;SELECT LAST_NAME,SALARY*12 AS 年薪 FROM EMPLOYEESORDER BY 2 DESC; //表示按照查询结果的第二列降序排序注意:ORDER BY 一定是放在 sql 语句的最后面,且是最后执行的(因此 ORDER BY 中可以用列的别名),只有在 MySql 中 ORDER BY 的后面可以加 limit —–多列排序

—–查询 employees 表中所有员工的

last_name,job_id,department_id,salary。结果根据 department_id 升序排序,salary 降序 排序。 SELECT

LAST_NAME,JOB_ID,DEPARTMENT_ID,SALARYFROM

EMPLOYEESORDER BY DEPARTMENT_ID ASC NULLS FIRST,SALARY DESC;** 注意: –Oracle 认为 NULL 是最大的。 –SQL Server 认为 NULL 是最小的。** —–NULLS FIRST/NULLS LAST:在不影响排序规则的前提下,将 NULL 放在结果 的最前/后面。

SELECT LAST_NAME,SALARY*12 AS 年薪 FROM EMPLOYEESORDER BY 2 NULLS LAST DESC; //表示按照查询结果的第二列降序排序—–单行函数:每个字段 的每条记录经过旦行函数输出一条记录 —-字符类型单行函数 SELECT

EMPLOYEES;SELECT

LAST_NAME,UPPER(LAST_NAME)--大写 FROM LAST_NAME,LOWER(LAST_NAME)--小写 FROM

EMPLOYEES;—–获得字节数,字符数

SELECT LENGTH(‘中国’)--获得字符数 FROM DUAL;SELECT LENGTHB(‘中 国’)--获得字节数 FROM DUAL;—–从指定位置截取字符串,直到字符串的最后 SELECT SUBSTR(LAST_NAME,3) AS AFROM EMPLOYEES;—–从指定的位置开 始截取指定长度的字符串

SELECT SUBSTR(LAST_NAME,3,2) AS AFROM EMPLOYEES;—–从倒数第 N 位 开始截取字符串,直到字符串的最后(Oracle 独有)

SELECT SUBSTR(LAST_NAME,-3) AS AFROM EMPLOYEES;—–从倒数第 N 位 开始截取指定长度的字符串(Oracle 独有)

本文由我司收集整编,推荐下载,如有疑问,请与我司联系

SELECT SUBSTR(LAST_NAME,-3,2) AS AFROM EMPLOYEES;—–在第一个参数 中查找第二个参数首次出现的位置,没找到返回 0

SELECT LAST_NAME,INSTR(LAST_NAME,’A’)FROM EMPLOYEES;SELECT LAST_NAMEFROM

EMPLOYEESWHERE

INSTR(LAST_NAME,’a’)!=0;—–

LPAD()/RPAD():显示第一个参数的值,使用第二个参数设置第一个参数显示的长 度,如果第一个参数长度不够,使用第三个参数在第一个参数的左/右面补齐长度。 SELECT

LPAD(EMPLOYEE_ID,6,0),LAST_NAMEFROM

EMPLOYEES;—–

TRIM():去掉字符串两端的字符

SELECT TRIM(‘ FEGCXFDF ‘) AS A ---------去掉字符串两端的空格 FROM DUAL;SELECT TRIM(‘AABBBBABBBAA’,’A’) AS A----------去掉字符串两端指定 的字符’A’FROM DUAL;—–数字类型单行函数 —-四舍五入 SELECT

ROUND(256.987),ROUND(256.987,2),ROUND(256.987,0),ROUND(256.987,-1)FROM DUAL;—-截断数字 SELECT

TRUNC(256.987),TRUNC(256.987,2),TRUNC(256.987,0),TRUNC(256.987,-1)FROM DUAL;—-取余数

SELECT MOD(15,2)FROM DUAL;—–日期类型单行函数 —-SYSDATE:获得当前 数据库服务器的日期+时间

SELECT SYSDATE-200FROM DUAL;MySQL 中: SQL Server 中 –now():日期+时 间 –getDate():日期+时间 –currdate():日期

注意: 1.日期+天数=日期 2.日期-天数=日期 3.日期-日期=天数 4.日期不能加日 期

—-查询 employees 表中所有员工的 last_name,hire_date,天数

SELECT LAST_NAME,HIRE_DATE,(SYSDATE-HIRE_DATE) AS 月数 FROM EMPLOYEES;—-MONTHS_BETWEEN():求两个日期相差的月数