大家好,又见面了,我是你们的朋友全栈君。
前两天又装了oracle,开始再次学习数据库,希望这次可以系统的学习,主要是语句的学习。
数据库操作语句SQL
一、select 查询语句
二、DDL 数据 定义 语句(create、drop、alter)
三、DML 数据 操作 语句(insert delect update)
四、TCL 事务 控制 语句(commit 提交、rollback 撤销 、savepoint 保存)
一、SELECT
1、select 字段名1,字段名2,字段名3 from 表名;
2、*代表所有的字段名,不推荐。(效率差一点)
3、字段或者表达式
+ – * /
select salary,14*salary from s_emp;
一个月涨500之后,再显示:
select salary+500,14*(salary+500)from s_emp;
4、不让显示——起别名 空格。
select salary+500 sal,14*(salary+500) Y_sal from s_emp;
5、字符串怎么解决:单引号
6、把两个字符拼接起来:||
select first_name || last_name name from s_emp;
用下划线隔开:
select first_name || ‘_’ || last_name name from s_emp;
7、特殊拼接:拼接一个单引号(转义的思想)
select first_name || ‘‘’’ || last_name name from s_emp;
拼接两个单引号??
select first_name || ‘‘’’ ||‘‘’’ || last_name name from s_emp;
select first_name || ‘‘‘‘’’ || last_name name from s_emp;
两种方法都是对的。
7、空值(null)的处理:(空值和任何值做运算 都是空值)
select salary sal ,
salary*12(1+commission_pct)/100
from s_emp;
nvl(part1,part2) null值处理函数
当part1为空值,就返回part2
若part1不为空,就返回part1
NULL要早点处理
select salary sal ,
nvl(salary*12(1+commission_pct)/100,
100) from s_emp;
8、把s_emp表中的manager_id查询出来,如果manage_id是空 就显示成-1;
select nv1(manager_id,-1) from s_emp;
9.数据的排重:distinct
select salary from s_emp;
select distinct salary from s_emp;
二、where 语句
1、作用:限制表中的行数剧,返回。
2、两个
from 表名 where 1=1;
from 表名 where 1=2;
— 代表单行注释
把s_emp表中salary大于1400员工信息显示出来
select * from s_emp where salary>1400;
把s_emp表中salary大于1400员工信息显示出来
select * from s_emp where salary=1400;
把s_emp表中name叫CAI员工信息显示出来
select * from s_emp where name=’CAI’;
3、常见的条件运算符: = > <
4、sql提供的运算符:
4.1 表达式表达一个闭区间;[a,b] between a and b;
把s_emp表中工资在1000到1500之间的员工信息
显示出来
select * from s_emp where salary between 1000 and 1500;
4.2 表达式表示一个范围的取值:in
where id in(2,5,7);
4.3 模糊查询 like
where name like ‘李%’;
where name like ‘%小%’;
4.4 特殊的转义处理: _和%
where name like ‘S\_%’ escape ‘\’;
找出所有__开头的表名
where name like ‘S\_\_%’ escape ‘\’;
三、空值的判断: is NULL
1、找出提成是10的员工:
select id from s_emp where commission_pct = 10;
2、找出提成不是10的员工:
select id from s_emp where commission_pct != 10;
3、找出提成是NULL的员工:
select id from s_emp where commission_pct is NULL;
总结;模糊查询 、空值的判断、。。。
7.7 逻辑条件:
and where salary >=1400 and salary <=2500;
or
not
八、数据的排序: order by 排序标准 排序方式(desc);
按照一定的排序标准把数据按照升序或者降序的次序进行排序
升序:默认 asc
降序:desc
排序中的NULL是如何处理的 :作为最大值。
查询的第四部分
一、单行函数
特点:针对SQL语句的每一行,都返回一个结果。
多行函数(组函数):
特点:针对SQL语句的一组数据,都返回一个结果。
eg:upper(part1) 字母变大写(单行函数)
select first_name,upper(first_name)
from s_emp where id = 1; 一行
select first_name,upper(first_name)
from s_emp where id < 1; 无结果
select first_name,upper(first_name)
from s_emp where id > 1; 24个结果
count(part1) 统计函数(组函数)
select first_name,count(first_name)
from s_emp where id = 1; 出现错误
select count(first_name)
from s_emp where id = 1; 正确 1
select count(first_name)
from s_emp where id < 1; 0
select count(first_name)
from s_emp where id > 1; 24
1.3 测试表:dual
单行单列的表
select * from dual;
select upper(‘hello’) from dual;
1.4 处理字符串的单行函数
大写 upper(part1) select upper(‘hello’) from dual;
小写 lower(part1) select upper(‘HELLO’) from dual;
首字母大写 initcap(part1) select initcap(‘hello world’) from dual;
长度 length(part1) select length(‘hello’) from dual;
连接 concat(part1,part2) select concat(‘hello world’) from dual;
|| 作为连接更加方便 select first_name||last_name name from s_emp;
截取函数 substr(part1,part2,part1)
part1:字符串
part2:数字,从哪位开始截取,编号从1开始截取(C中是从0开始)
part2:截取长度
替换 replace(part1,part2,part1)
part1:要处理的字符串
part2:要被替换的内容
part2:被替换成的内容
to_char(part1,part2)
part1:要处理的数字
part2: 格式
‘格式’:
fm:格式的开头
0:小数点前代表前置导零
9:0到9数字
,:分隔符 千位
.:小数点
¥:rmb
$:美元
eg:select to_char(12345,’fm$099,999.99′) from dual;
select to_char(12345.23,’fm$099,999.00′) from dual;
按照如下格式显示工资:
‘fm$099,999.00’
select id,first_name,to_char(salary,‘fm$099,999.00’) from s_emp;
1.8 处理数字函数:
round(part1,part2) 四舍五入
part1:要处理数字
part2:默认0代表取整
1代表保留小数点后一位
-1代表对小数点前一位进行 四舍五入
select round(2.54) from dual;
select round(2.54,1) from dual;
select round(2.54,-1) from dual;
trunc 截取函数(用到的更多)
trunc(part1,part2) 截取(数字,字符串等等)
part1:要处理数字
part2:默认0代表取整
1代表保留小数点后一位
-1代表对小数点前一位进行 截取
select trunc(2.54) from dual;
select trunc(2.54,1) from dual;
select trunc(2.54,-1) from dual;
1.9函数嵌套:把一个函数的返回值作为另一个的嵌套。
select concat (concat(‘a’,’b’),concat(‘c’,’d’));
显示first_name 的后三个字符 length substr
select first_name,substr(first_name,length(first_name)-2,3)
from s_emp;
附:
数据库连接
创建表
查询语句
desc 显示表:
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/137438.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...