SQL的基本曾删改查

来源:互联网 发布:wps不能使用数据透视表 编辑:程序博客网 时间:2024/05/18 09:07

结构化查询语言(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;--去除重复行 distinctselect distinct   sal from emp;select distinct ename ,sal from emp;select sal from emp;--升序asc(可以省略不写) 降序descselect * 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;--转换为小写lowerselect lower (ename) from emp;----转换为大写upperselect upper(ename) from emp; --左剪裁ltrimselect ltrim('123asdsa','123')from dual;--右剪裁rtrim select rtrim('123asaf','asaf')from dual;-- 左右移除空格select ltrim(rtrim( '    123ags     '))from dual;-- 翻译 translateselect translate('jags','ag','24') from dual;--替换 replaceselect 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;--超过这个星期的星期三返回下个星期的的一天--日期做截断 truncselect 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.99select 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 不为空转nselect 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 !='';


原创粉丝点击