DESCRIBE departments;# 算术运算符# + - / * div mod(%)SELECT100+'1'# java中结果是1001,是连接的作用# 在SQL中,会将字符串转换为数值(隐式转换)FROM DUAL;SELECT100+'a'# 此时'a'看做0来处理FROM DUAL;SELECT100+NULL# NULL值参与运算,结果为NULLFROM DUAL;SELECT100/2# 只要是除法,都会保留小数FROM DUAL;SELECT100DIV0# 分母如果为0.结果是NULLFROM DUAL;# 取模运算,结果的符号只与被模数的符号有关系,与模数符号无关系SELECT12%3,12%5,12 MOD -5,-12 MOD 5,-12 MOD -5FROM DUAL;SELECT employee_id,last_name,salary
FROM employees
WHERE employee_id %2=0;
比较运算符
比较运算符
# 比较运算符# 结果为真返回1,为假返回0,其他情况返回NULL# 1. = 等于SELECT1=2,1!=2,1='a'#如果字符串不能隐式转换,就把他看成0FROM DUAL;SELECT'a'='a','a'='b'# 纯粹进行字符串的比较,则比较的是ASCLL码FROM DUAL;SELECT1=NULL# 只要有NULL参与判断,结果就为NULL!!!!FROM DUAL;# <=>安全等于,唯一区别是可以对NULL进行判断# 两个操作数都是NULL,结果是1;一个操作数是NULL,结果是0# 练习:查询表中commission_pct为NULL的数据SELECT commission_pct,employee_id
FROM employees
WHERE commission_pct <=>NULL;
其他表达式(关于NULL)
#安全等于写法
SELECT commission_pct,employee_id
FROM employees
WHERE commission_pct <=> NULL;
SELECT commission_pct,employee_id
FROM employees
WHERE NOT commission_pct <=> NULL;#把结果反过来了
# ISNULL // IS NOT NULL
SELECT commission_pct,employee_id
FROM employees
WHERE commission_pct IS NULL;
SELECT commission_pct,employee_id
FROM employees
WHERE commission_pct IS NOT NULL;
# 函数写法
SELECT commission_pct,employee_id
FROM employees
WHERE ISNULL(commission_pct) ;
SELECT employee_id,last_name,salary
FROM employees
WHERE salary BETWEEN6000AND8000;# 包括端点值SELECT employee_id,last_name,salary
FROM employees
WHERE salary >=6000&& salary <=8000;SELECT employee_id,last_name,salary
FROM employees
WHERE salary BETWEEN8000AND6000;# 交换6000和8000之后,查询不到任何数据# 查询不在6000和8000之间的SELECT employee_id,last_name,salary
FROM employees
WHERE salary <=6000or salary >=8000;SELECT employee_id,last_name,salary
FROM employees
WHERE salary NOTBETWEEN6000AND8000;
in (set)\ not in (set) :离散型查找
# 第一种写法SELECT last_name,salary,department_id
FROM employees
WHERE department_id =10OR department_id =20OR department_id =30;# 第二种写法SELECT last_name,salary,department_id
FROM employees
WHERE department_id IN(10,20,30);# not inSELECT last_name,salary,department_id
FROM employees
WHERE salary NOTIN(6000,7000,8000);
like 模糊查询
# 查询name中包含'a'的员工信息# %代表不确定个数的字符(0个,1个或者多个)SELECT last_name,salary,department_id
FROM employees
WHERE last_name LIKE'%a%';# 查询name中以'a'开头的员工信息SELECT last_name,salary,department_id
FROM employees
WHERE last_name LIKE'a%';# 查询name中包含'a'且包含'e'的员工信息SELECT last_name,salary,department_id
FROM employees
WHERE last_name LIKE'%a%'AND last_name LIKE'%e%';#第二种写法SELECT last_name,salary,department_id
FROM employees
WHERE last_name LIKE'%a%e%'OR last_name LIKE'%e%a%';# 查询name中第二个字符是'a'的员工信息# _ 代表一个不确定的字符SELECT last_name,salary,department_id
FROM employees
WHERE last_name LIKE'_a%';