oracle
1.创建一个新用户:指定了密码
CREATE USER dba_name IDENTIFIED BY password;
2.赋予权限
GRANT CONNECT, RESOURCE, DBA TO dba_name;
3.登录账号
CONNECT dba_name@orcl;
4.创建数据库
Create DATABASE database-name
5.删除数据库
drop database dbname
基本概念
实例 = 后台进程+内存结构
数据库 = 数据文件+控制文件
3/17
select disctinct column from table group by having * order by column desc(默认升序)
语法 通常每个字句占一行,用缩进增加可读性,字符串大小写敏感,可多行,关键字不能缩写或者跨行
注意:
如果列名包含大小写或者空格需要用""
优先级
括号
算数运算符 /
连接运算符||
比较运算法
is null like in
between
not
and
or
例题:链接:https://blog.csdn.net/a18602320276/article/details/75126008
获取当前账户的信息
select * from tabs;
like
查询雇员姓名中第三个字母为”A”的雇员信息
select * from emp where ename like '__A%';
disctinct 去除重复行
(!)=
(not) in/ (not) between and
is (not) null(oracle默认将null值作为最大值,不可以用=)
|| 例如
select '编号:' || empno || '-姓名:' || ename || '-工作:' || job as 详情 from emp;
日期 ``
如果中间有空格或者关键字用"",否则’’
正则表达式 https://blog.csdn.net/wulex/article/details/82585755
请查询员工名包含a或e的员工名:
select last_name from employees where regexp_like( last_name ,'[ae]') ;
例题
请查询员工名和工作时间(换算成月并取整),并按工作时间排降序
select last_name, trunc(months_between(sysdate,hire_date),0) from employees order by trunc(months_between(sysdate,hire_date),0) desc;
字符串
select chr(2) from dual;
select concat(a,b) from stu;
select initcap(name) from stu;
select lower(e.ename) from emp e;
select lpad(e.ename,20,‘0’) from emp e;
select ltrim(e.ename,‘s’) ,e.ename from emp e;
select replace(e.ename,‘H’,‘h’) …
select substring(ename,0,1)…
数字
abs
ceil
floor
power(value,exponent)
mod(value,divisor)
trunc(number,[decimals]) 取整,默认值为0
日期
add_months(date,count)
last_day(date)
months_between(date1,date2)
sysdate
current_timestamp
round(date,‘day’)
trunc(date,‘day’)
extract(year from hire_date)
类型转换
to_char
to_date
to_number(char)
to_char(number,format) to_char(salary,’$99,999.99)
to_number((number,format)
select to_char(99,‘99.99’) from dual 结果: 99.00 必须整数数字相同,小数数字相同或为0
select to_number(’$123’,’$9999’) from dual;货币 格式范围大于数字
RML L
固定格式
9表示一个数字
0强制显示0
$货币符号
L本地货币符号
.小数点
,千分位
通用类函数
nvl(a,b) a为null返回b,否则a
nvl2(a,b,c) a不为null返回b,否则c
nullif(a,b) a,b相等返回null,否则a
coalesce
decode:(简单点用)
select decode(e.sal,1500,‘1’,2000,‘2’,‘3’) from emp;如果1500返回1,2000满足2,不满足则返回
case when:(会做比较傻的)
select case
when e.sal > 1000
then ‘1’
when e.sal > 2000
then ‘2’
else ‘3’
end
from emp
分组函数
对记录集进行分组
分组函数 avg、max、min、count、sum
查询结果筛选 having
+始终指向有缺损值得一方
笛卡尔积
等值连接
非等值连接
外连接(将那些不匹配的行也显示出来)
自连接
子查询作为列 作为中间表 作为筛选条件
单行子查询
只返回一行
使用单行比较操作符< > =
多行子查询
返回多行
多行操作符:in any all
top -n 分析
select * from (select * from emp order by sal desc )where rownul <=10;