使用windows+r健,然后输入cmd,进入命令框,连接用户,sqlplus+用户名/密码
把会话环境改成中文模式:
alter session set nls_language='simplified chinese';
把会话环境改成英文模式:
alter session set nls_language=english;
然后导入数据表: @表名.sql.
sql语句的分类:
1.DQL:主要是查询语句语言———主要是select语句
2.DML:数据操纵语言———改变数据库中的是数据,
主要是insert,update,delete语句
3.DDL:数据定义语言———主要是建立修改删除数据库中的对象,
主要是create,alter,drop,truncate语句
4.TCL:事物控制语句,用来维护事物的一致性,
主要是commit,rollback,savapoint语句
5.DCL:数据控制功能
用来执行权限授予和权限收回操作,
主要是grant,revoke语句
格式:
select 列名…
from 表名…
where 操作的列名 比较操作表达式
例:查看员工工资小于1000的员工id和名字
select id,last_name,salary
from s_emp
where salary <1000;
常用操作符:
1.between and
查看员工工资在700到1500之间的
select id,last_name,salary
from s_emp
where salary between 700 and 1500;
2.in():表示值在一个指定的列表中
例:查看员工id=1,3,5,9的员工工资
select id,salary
from s_emp
where id in(1,3,5,9);
3.like:模糊查询,表示在值不精确的时候用
%:代表0-多个字符
_:代表一个字符
:转义字符 ,需要escape关键字,后面加的字符代表本来的意思
例:
查看员工名字以C字母开头的员工的id,工资
select id,last_name,salary
from s_emp
where last_name like 'C%';
查看员工名字包含c字母开头的员工的id,工资
select id,last_name,salary
from s_emp
where last_name like '%c%';
查看员工名字长度不小于5,且第四个字母为n字母的员工id和工资
select last_name,salary
from s_emp
where last_name like '_ _ _ _ n _%';
查看员工名字中包换一个_的员工id和工资
select id,last_name
from s_emp
where last_name like '%\_%' escape '\';
代表\后面的字符要恢复原本的意思(恢复_的意思)
4.is null ,判断值为null的时候使用,null的值不能使用=
查看员工提成为空的名字和id
select id,last_name
from s_emp
where commission_pct is null;
查看员工提成—不为空的名字和id
select id,last_name
from s_emp
where commission_pct is not null;
and/or,当条件需要的时候多次使用
查看员工部门id为41且职位名称为Stock Clerk(存库管理员)的员工id和名字
select dept_id,title,last_name
from s_emp
where dept_id=41
and
title ='Stock Cleck';
查看员工部门为41 或者 44号部门,且工资大于1000的员工id和名字
select dept_id,salary,last_name
from s_emp
where (dept_id =41 or dept_id=44)
and
salary>1000;
以上就是单行函数用到的
多行函数,可以结合组函数,group ,分组函数。
查询id小于5的所有员工的平均工资
select avg(salary)
from s_emp
where id<5;
使用单行函数,将上面的结果中每一个last_name转换为大写
select id,upper(last_name),salary
from s_emp
where id<5;
查询每个部分的员工人数、以及该部门的平均工资,并且按照平均工资的降序排序
select dept_id,avg(salary) avs,count(*)
from s_emp
group by dept_id
order by avs desc;
ASCII(X) ,返回字符X的ASCII码
select ascii('a') from dual;
CONCAT(X,Y) ,连接字符串X和Y
select concat('hello','world')
from dual;
INSTR(X,STR[,START][,N) ,从X中查找str,可以指定从start开始,也可以指定从n开始
select instr('hello world','o',2)
from dual;
select inste('hello world ','o',-1)
查询id小于5的员工信息(id、last_name、salary)
select id ,last-name,salary
from s_emp
where id<5;
LENGTH(X) , 返回X的长度
select length('hello world')
from dual;
LOWER(X) ,X转换成小写
select lower('HELLO THE WORLD')
from dual;
UPPER(X) ,X转换成大写
select upper('hello')
from dual;
INITCAP(X) ,X首字母转换为大写,其他字母小写
select initcap('bbbbb ccccc')
from dual;
LTRIM(X[,TRIM_STR]) ,把X的左边截去trim_str字符串,缺省截去空格
select ltrim('==hello==','=') from dual;
RTRIM(X[,TRIM_STR]) ,把X的右边截去trim_str字符串,缺省截去空格
select rtrim('==hello==','=') from dual;
TRIM([TRIM_STR FROM]X) ,把X的两边截去trim_str字符串,缺省截去空格
select trim('=' FROM '==hello==')
from dual;
REPLACE(X,old,new) ,在X中查找old,并替换成new
select replace('hello tt world','tt','theeee')
from dual;
SUBSTR(X,start[,length]) ,返回X的字串,从start处开始,截取length个字符,缺省length,默认到结尾
select substr('abcdefg',2,4)
from dual;
常用的数字函数:
ROUND(X[,Y]) ,X在第Y位四舍五入,Y代表要保留到哪一位
select round(45.953,2)
from dual;
select round(45.923,0)
from dual;
TRUNC(X[,Y]) ,X在第Y位截断
select trunc(45.929,2)
from dual;
MOD(X,Y) ,X除以Y的余数
select mod(10,3)
from dual;
sysdate,表示的是当前的时间
sysdate 参与时间的加减操作的时候,单位是天
select sysdate from dual;
select sysdate+1 from dual;
常见的日期函数:
months_between:俩个日期之间相差几个月
例:
30天之后和现在相差多少个月
select months_between(sysdate+30,sysdate)
from dual;
add_months:现在的日期/指定的日期往后推2个月
select add_months(sysdate,2) from dual;
select add_months('01-11月-2020',2) from dual;
next_day:离当前时间最近的下一个星期5是哪一个天
select next_day(sysdate ,'星期五')
from dual;
last_day:当前日期所在月份的最后一天(月底)
select last_day(sysdate)
from dual;
round:
把当前日期四舍五入到月(如果日期超过16号,那么进一个月)
select round(sysdate,'month')
from dual;
把当前日期四舍五入到年
select round(sysdate,'year')
from dual;
trunc 对日期进行截取,和round类似,但是只舍弃不进位(不管当前日期到没到16号,都舍去当前月份)
select trunc (sysdate,'month')
from dual;
1.等值查询:
例如:
查询员工的名字、部门编号、部门名字
select last_name,dept_id,s_dept.id,name
from s_emp,s_dept
where s_emp.dept_id=s_dept.id;
2.不等值连接:在俩个表中拿数据类型相同的去比较
3.外连接(左外,右外,全连接)
1.左外连接:把左边的表当成基础表,左表在右表中查询的数据,不管有没有都要显示出来。
例:查询所有员工,以及对应的部门名字,没有部门名字的也要显示出来。
select id,last_name,dept_id
from s_emp left outer join s_dept
on s_emp.dept_id=s_dept.id;
简写:
select last_name,id,dept_id,name
from s_emp,s_dept
where s_emp.dept_id=s_emp.id(+);
2.右外连接:要把右边的表的数据都要查询出来
例:查询所有员工 以及对应的部门的名字,没有任何员工的部门也要显示出来
select last_name,dept_id,name
from s_emp right [outer] join s_dept
on s_emp.dept_id =s_dept.id;
简写:
select last_name,dept_id,name
from s_emp,s_dept
on s_emp.dept_id(+)=s_dept.id;
3.全连接
查询所有员工 以及对应的部门的名字,没有任何员工的部门也要显示出来,没有部门的员工也要显示出来
select dept_id,id,last_name,name
from s_emp full join s_dept
on s+emp.dept_id=s_dept.id;
4.自连接:自己和自己连接
查询每个员工的名字以及员工对应的管理者的名字
select s1.last_name,s2.last_name manger
from s_emp s1,s_emp s2
where s1.manager_id=s2.id;