SQL---基础语句select

来源:互联网 发布:315怎么投诉淘宝卖家 编辑:程序博客网 时间:2024/06/05 13:33

SQL语句分类:
数据查询语言 Date Query Language,DQL.负责数据查询而不会对数据本身进行修改的语句,核心指令是select,辅助指令from,where,group by和order by.
数据定义语言 Date Definition Language,DDL.负责数据结构定义与数据库定义的语言,由create,alter,drop三个语法组成.
数据操纵语言 Date Manipulation Language,DML .负责对数据库对象运行数据访问工作的指令集,以insert,update,delete三种指令为核心.
数据控制语言 Data Control Language,DCL.可对数据访问权进行控制的指令,可以控制特定用户账户对数据表,查看表,预存程序,用户自定义函数等数据库对象的控制权,由grant,revoke两个指令主城.

select 列名 from 表名;
查询表中的列的数据

更改所查询出来数据列的显示宽度
col 列名 for a20

使用as为列起别名,as可省略
select last_name,title,salary*12 as total
from s_emp;

||拼接字符,单引号修饰字符串

select first_name||' '||last_name namefrom s_emp;

nvl设置列默认值 字符串用单引号修饰

select last_name,salary*(1+nvl(commission_pct,0)/100) totalfrom s_emp;

distinct 去除重复默认对列的组合去重
select distinct name
from s_dept;

order by 表示按列排序,默认为升序
asc 升序 desc 降序
select last_name,dept_id,salary
from s_emp
order by last_name desc;

先按salary升序,相同时按dept_id降序
select last_name,dept_id,salary
from s_emp
order by salary,dept_id desc;

表达式和别名和列名都可以用来排序
select last_name name,salary*12
from s_emp
order by name desc;

可以由select的子项的标号直接排序,由1开始
select last_name name,salary*12
from s_emp
order by 2 desc;

排序时null值当最大值使用

where设定数据条件
select last_name,dept_id,salary
from s_emp
where dept_id=42;

between and 是闭区间的
select last_name,salary
from s_emp
where salary between 1500 and 2000;

escape 临时指定转义字符
select last_name,title
from s_emp
where last_name like ‘/_M%’ escape ‘/’;

null不能使用=来判断 需要使用is null
select last_name,title
from s_emp
where commission_pct is null;

and的优先级比or高 比较运算符优先级最高,如between,in
select last_name,salary,dept_id
from s_emp
where salary between 1000 and 2000
and (dept_id=41 or dept_id=43);

concat 连接符 lower 小写 upper 大写
select lower(last_name) ll,upper(title) ut,concat(first_name,last_name) name
from s_emp;

initcap 首字符大写
dual是一个虚拟表,是“空表”的意思
select initcap(‘Hello world’)
from dual;

substr 截取字符串
length 下标从1开始,长度
select substr(last_name,length(last_name)-1,2)
from s_emp;

多表查询
内连接,当有null时不查询
查询员工信息和部门名称
select e.last_name,e.title,d.name dept_name
from s_emp e,s_dept d
where e.dept_id=d.id;

左外连接,把左表中的没有关联关系的行业查询出来
select e.last_name,d.name
from s_emp e
left outer join s_dept d
on e.dept_id =d.id;

右外链接,把右表中没有关联关系的行也查询出来
select e.last_name,d.name
from s_emp e
right outer join s_dept d
on e.dept_id =d.id;

全外链接
select e.last_name,d.name
from s_emp e
full outer join s_dept d
on e.dept_id =d.id;

自连接
查询每个员工信息,及该员工的经理信息
select e.id,e.last_name,m.last_name manager_name
from s_emp e
left outer join s_emp m
on e.manager_id=m.id;

替换变量
select id,last_name,salary
from s_emp
where dept_id = &var2;

select id,last_name,salary
from s_emp
where last_name=’&var1’

define var2=33

原创粉丝点击