SQL的基本曾删改查

结构化查询语言(Structured Query Language)(发音ˈeskjuːˈ)

SQL是最重要的关系数据库操作语言,是所有关系数据库管理系统的标准语言

许多数据库厂商在使用SQL的同时,都对SQL进行了扩展,比如ORACLEPL/SQL语言,MS SQL-ServerT-SQL语言

SQL语言是一种非过程化语言,只需要提出做什么”,而不需要指明“怎么做”

结构化查询语言(Structured Query Language)(发音ˈeskjuːˈ)

SQL是最重要的关系数据库操作语言,是所有关系数据库管理系统的标准语言

许多数据库厂商在使用SQL的同时,都对SQL进行了扩展,比如ORACLEPL/SQL语言,MS SQL-ServerT-SQL语言

SQL语言是一种非过程化语言,只需要提出做什么”,而不需要指明“怎么做”


--员工表
select * from emp;
--部门表
select * from dept;
--工资表
select * from salgrade;
--奖金表
select * from bonus;
--员工表
select  * from emp;
--查询员工姓名编号工资
select  empno, ename, sal from emp;
--查询员工的工资和年薪
select sal,sal*12 from emp;
--强制给名字加上数字
select ename, ename|| '12'from emp;
--as用法
select ename as 员工名字,empno as 员工编号 from emp;
--as可以省略
select  empno  员工编号, ename  员工名字, sal 月薪 ,sal *12 +5000年薪   from emp;
--||拼接符(要用单引号),相当于java中的+号
select  ename ||'月薪是 '||sal 员工月薪 from emp;
select ename ||' 员工编号'|| empno from emp;
--去除重复行 distinct
select distinct   sal from emp;
select distinct ename ,sal from emp;
select sal from emp;
--升序asc(可以省略不写) 降序desc
select * from emp order  by sal asc ;
select * from emp order by sal desc;
select * from emp order by sal ,empno desc;
select * from emp order by sal ,empno ;
select empno  , ename, sal, from emp order by sal;
--where用法
--查询ALLEN员工的信息
select  *  from emp where ename ='ALLEN';
select * from  emp where ename ='MARTIN';
--查询1250工资的员工
select * from emp where sal =1250;
--查询入职为1981-2-22的员工
select *from emp where hiredate ='22-2月-81';
--查询1250工资以下的员工
select *from emp where sal <1250;
--查询1250工资以上的员工
select *from emp where sal >1250;
--查询不等于1250工资的员工
select * from emp where sal !=1250;
select * from emp where sal <>1250;
--between A and B查询在A和B之间的数
select *from emp where sal between 800 and 1000; 
select *from emp where sal >= 800 <= 1000; 
--in() 集合查询在集合中的数
select * from emp where sal in(800,900,1250,1000);
select *from emp where sal =  800  or   sal  =900 or  sal = 1250 or  sal  =1000 ;
--查询奖金为空的员工
select * from emp where comm is null;
select * from emp where comm ='';
--查询奖金不为空的员工
select * from emp where comm is not null;
select * from emp where comm !='';
--like模糊查询 %表示所有 _表示一个字符
--查询以S 开头的员工名字 
select * from emp where ename like 'S%';
--查询以S开头后面至少有一个
select * from emp where ename like 'S_%';
--查询以S开头的的并有五个字符
select * from emp where ename like 'S____';
select * from emp where ename like '%/%' escape '/';
--and or not
--查询 工资大于900并接名字以S开头
select * from emp where sal>900 and ename like 'S%';
--查询 工资大于900或者名字以S开头
select * from emp where sal >900 or ename like 'S%';
--查询 工资不是900,1000,1250的员工信息
select * from emp where sal not in(900,1000,1250);
--查询名字不是以S开头的
select * from emp where ename not like  'S%';
-- 常用
--首字母大写initcap  
select  initcap(ename) from emp;
select initcap ('abc')from  dual;
--转换为小写lower
select lower (ename) from emp;
----转换为大写upper
select upper(ename) from emp; 
--左剪裁ltrim
select ltrim('123asdsa','123')from dual;
--右剪裁rtrim 
select rtrim('123asaf','asaf')from dual;
-- 左右移除空格
select ltrim(rtrim( '    123ags     '))from dual;
-- 翻译 translate
select translate('jags','ag','24') from dual;
--替换 replace
select replace('jaagsd','a','12') from dual;
--查找出现的位置instr 第一次出现的位置
select instr('string','i')from dual;
-- substr(eg,n,m) 截取字符串 n开始包含n 截取m个
select substr ('stringags',3,2)from dual;
--concat 字符串连接
select concat('ags','ker')from dual;
select 'ags'||'ker' from dual;
--数值函数
-- 绝对值
select abs(-21)from dual;
--x的y次幂
select power(2,2)from dual;
--ceil 向上取整
select ceil(12.5)from dual;
-- floor 向下取整
select floor(12.5)from dual;
--trunc 截断
select trunc(12.25,1)from dual;
--round 四舍五入
select round(12.5)from dual;
select round(12.4)from dual;
--sqrt 开平方
select sqrt(9)from dual;
select power(8,1/3)from dual;
--mod 取余数
select mod(15,2)from dual;
-- sign 取符号
select sign(-12)from dual;
select sign(12)from dual;
--日期函数
-- months_between 两个日期间隔的月份
select months_between(sysdate,'09-9月-1997')from dual;
--add_months 修改月份
select add_months(sysdate,-1)from dual;
select add_months(sysdate,1)from dual;
--next_day 返回指定日期后的一个星期几的日期
select next_day('12-2月-12','星期日')from dual;
select next_day(sysdate,'星期日')from dual;
--last_day 返回指定日期的这个月的最后一天
select last_day('12-2月-12')from dual;
--日期做四舍五入 round
--年
select round(sysdate,'year')from dual;--一年超过六月返回下一年的第一天
--月
select round(sysdate,'month')from dual;--超过这给月的一半返回下个月的第一天
--日
select round(sysdate,'day')from dual;--超过这个星期的星期三返回下个星期的的一天
--日期做截断 trunc
select trunc(sysdate,'year')from dual;--返回这一年的第一天
select trunc(sysdate,'month')from dual;--返回这个月的第一天
select trunc(sysdate,'day')from dual;--返回这星期的第一天
--to_char 日期转字符串
select to_char(sysdate,'yyyy-mm-dd hh:mi:ss')from dual;

--to_date 字符串转日期
select to_date('2013年05月12号 16点15分22秒','yyyy"年"mm"月"dd"号" hh24"点"mi"分"ss"秒"')from dual;
--to_number 字符串转数值类型 $99,999,999.99 ¥L999,999,999.99
select to_number('$12,992,959.99','$99,999,999.99')from dual;
select to_number('¥209,889.59','L999,999,999.99')from dual;
--to_char 数值转字符串 
select to_char(125304.54,'L999,999,999.99')from dual;
--时间比较问题
select * from emp where hiredate >'18-2月-81';
select *from emp where hiredate >to_date('1981-1-1','yy-mm-dd');
select * from emp where to_char( hiredate ,'yyyy-mm-dd')>'1981-1-1-';
-- nvl 空转数
select ename ,nvl(comm,0) from emp;
-- nvl2(e,n,m) e为空转m 不为空转n
select ename, nvl2(comm,0,1)from emp;
-- decode 
select decode(sal,3000,'有',5000,'有钱','5')from emp;
--case when then else end (if else)
select (case when sal >=5000 then '有钱' when sal >=3000 then '2' else'-1'end)from emp;
--switch case
             select (case sex when 0 then '男' when 1 then '女'end ) from dual;
   

--sum 求和 max 最大 min 最小 avg 平均 count 统计
--查询最大工资
select max(sal)from emp;
--查询平均工资
select avg(sal)from emp;
--查询最小工资
select min(sal)from emp;
--查询所有工资的和
select sum(sal)from emp;
--查询一共有几个员工
select count (sal)from emp;
--聚合函数可以写在一行上
select max(sal),avg(sal),min(sal),sum(sal),count(sal)from emp;
--聚合函数不可以和单行数据同时展示
select ename,  max(sal),avg(sal),min(sal),sum(sal),count(sal)from emp;
-- count(*) 统计所有 
select count(*)from emp;
--count(exp)统计非空的exp的个数
select count (comm)from emp;
--count(distinct exp)统计非空不重复的exp的个数
select count(sal),count (distinct sal)from emp;
--查询部门编号为10的员工信息 
select *from emp where deptno=10 ;

--查询年薪大于3万的人员的姓名与部门编号 
select  sal*12 from emp where sal<=30000;
--查询佣金为null的人员姓名与工资 
select *from emp where comm is null;

--查询工资大于1500 且 and 含有佣金的人员姓名 
select *from emp where sal>=1500 and comm is not null;
--查询工资大于1500 或 or含有佣金的人员姓名 
select *from emp where sal>=1500 or comm is not null;
--查询姓名里面含有 S 员工信息 工资、名称 
select *from emp where ename like 'S%';
--求姓名以J 开头第二个字符O的员工姓名的与工资 
select *from emp where ename like 'SO%';
--求包含%的雇员姓名 
select *from emp where ename like '%%%' escape '%';

--where用法--查询ALLEN员工的信息select * from emp where ename ='ALLEN';select * from emp where ename ='MARTIN';--查询1250工资的员工select * from emp where sal =1250;--查询入职为1981-2-22的员工select *from emp where hiredate ='22-2月-81';--查询1250工资以下的员工select *from emp where sal <1250;--查询1250工资以上的员工select *from emp where sal >1250;--查询不等于1250工资的员工select * from emp where sal !=1250;select * from emp where sal <>1250;--between A and B查询在A和B之间的数select *from emp where sal between 800 and 1000; select *from emp where sal >= 800 <= 1000; --in() 集合查询在集合中的数select * from emp where sal in(800,900,1250,1000);select *from emp where sal = 800 or sal =900 or sal = 1250 or sal =1000 ;--查询奖金为空的员工select * from emp where comm is null;select * from emp where comm ='';--查询奖金不为空的员工select * from emp where comm is not null;select * from emp where comm !='';



  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值