oracleXE
- 账户名:system 系统账户(管理员)
sys:超级用户(工程师) - 区别:sys比system的权限要多
- oracleXE版本不自带普通用户
- oracle 11g和oracle 12g自带用户scott,默认密码是tiger,并给该用户自带四张二维的数据表。
sql语句
概念:结构化语言,
作用:操作数据,管理用户,管理事务。
使用:
- 通过SQL语句对数据库中的数据进行管理。
- 数据的读取:单表查询,多表查询,子查询,
- 数据的存储:增加一条数据或表,删除一条数据或表,修改一条数据或表。
- 创建,删除,修改用户。
- 管理事务。
oracle新建用户,授权
使用system登录plsql,登录身份sysdba。
-- 这两个杠是注解的意思
-- 创建用户
-- create user 用户名 identified by 密码
create user scott identified by 1234;
-- 给用户授予权限
--赋予数据库登录连接权限
grant connect to scott;
--赋予数据库操作资源的权限
grant resource to scott;
单表查询
-- 单表查询
-- 查询表中所有数据
--select * from 表名
select * from emp;
-- 查询表中的某个字段
-- select 字段名,字段名 from 表名;
select empno,ename from emp;
-- 查询结果中的字段使用别名
--select 字段名 as "别名" from 表名;
--as关键字可以省略,若别名中无特殊的字符,双引号也可以省略;
select empno 员工编号,ename "员工姓名",job as 工作,mgr as "员工工资" from emp;
连接符,去重,排序,逻辑运算
-- 连接符
--||作为sql语句连接符,
-- 连接符的格式:字段名 || ‘字符集’|| 字段名
-- 一个拼接好的连接在结果集中作为一个新的字段来显示的,可以使用别名来优化显示
select * from emp;
select empno || '的名字是'||ename as "信息" from emp;
-- 去除重复
--当是多行的时候,多行相同时进行去除
select distinct empno,ename from emp;
select distinct mgr from emp;
--单字段排序 asc升序,desc降序
-- select * from 表名 order by 字段 asc;
-- select * from 表名 order by 字段;默认asc升序
-- select * from 表名 order by 字段名 desc;
select * from emp order by empno desc;
--多字段排序
--select * from 表名 order by 字段1,字段2 desc;
-- select * from 表名 order by 字段1,字段2 ;
-- select * from 表名 order by 字段1,字段2 asc;
-- 先按照字段1进行排序,若字段1的字段名相同,则按照字段2进行排序。
select * from emp order by empno,ename;
select * from emp order by empno desc,ename asc;
-- 字段的逻辑运算
--字段时数值类型的时候,可以进行四则运算,也可以同数值类型的字段进行四则运算
select mgr+1000,mgr+comm from emp;
where子查询
--使用where子查询
--单条件查询
--模式 select * from emp where 字段名 筛选条件;
-- 筛选条件是:= ,<,>,<=,>=,<>(这是不等于,标准写法),后面的是不标准的写法,!=
-- 字符用单引号括起来,数值可以不用,用了最好,
--查询用户名SMITH的用户信息,逻辑运算符=
select * from emp where ename = 'SMITH';
-- 查询员工工资大于1000的员工信息,逻辑运算符>
select * from emp where sal>1000;
--查询员工工资不等于3000的员工信息
select * from emp where sal <> 3000;
--练习
--查看工资等于1250的员工信息
select * from emp where sal = '1250'
--查看工作等于CLERk的员工信息
select * from emp where job='CLERK'
--查看工资大于等于2000的员工信息
select * from emp where sal > 1250
--查看工资大于1250的员工姓名和工作
select ename,job from emp where sal > 1250
--查看工资不等于1500的员工信息
select * from emp where sal<>1500
--查看入职日期在81年之后的员工信息
-- 日期的格式为日-月-年,实例:'03-1月-1981';
select * from emp where hiredate > '01-1月-1981'
--where的多条件查询
--(and,between and,or ,in,is null,is not null,escape,like,)
-- 查询有津贴的员工信息
-- is null 表示的是数据为空,is not null 表示的数据不为空(比如0.0也是不为空)
--多条件使用and关键字进行连接,筛选出所有符合条件的数据
select * from emp where comm is not null and comm >0
--查询姓名中包含s,以s开头,以s结尾,第二个字符是‘a’的
-- 模糊查询中%表示任意多个任意字符,_表示一个字符,
--查询姓名包含的s的用户信息
select * from emp where ename like '%S%'
--查询姓名以S开头的用户信息
select * from emp where ename like 'S%'
--查询姓名以S开结尾的用户信息
select * from emp where ename like '%S'
--查询第二字符是A的用户信息
--_表示一个任意字符
select * from emp where ename like '_A%'
-- 这里面的_是特殊字符,它本身就是个下划线,但在这里它有了新的含义,但就是使用它本身的意思
--就需要使用escape,escape将普通字符转换成转义字符,转移字符将特殊字符转换成普通字符。
-- select * from 表名 where 字段名 like '字符1字符二' escape '字符1';
select * from emp where ename like '/_' escape '/'
-- 查询工作为SALESMAH,ANALYST,MANAGER的员工信息
--使用or关键字,进行或条件的筛选
select * from emp where job='SALESMAH' or job='ANSLYST' or job='MANAGER'
--使用in关键字进行筛选,但是in关键字的只能是一个字段名中的,而or可以是不同的字段名
select * from emp where job in ('SALESMAH','ANSLYST','MANAGER')
--查询工资在2000到3000之间的员工的信息
--使用and关键字,多条件同时成立进行筛选
select * from emp where sal > 2000 and sal < 3000
--使用between and进行条件的筛选,这个是包含两头的。
select * from emp where sal between 2000 and 3000