Oracle数据库学习随笔

一、Oracle 数据库表空间
1、创建表空间:
create tablespace HZT datafile ‘D:/ora/oradata/orcl/HZT.dbf’
size 15M autoextend on next 5M maxsize 50M;
2、删除表空间:
drop tablespace HZT including contents and datafiles
二、Oracle 用户
1、创建用户 – Create the user
create user HZT
identified by “”
default tablespace HZT
temporary tablespace TEMP
profile DEFAULT
password expire;
2、用户权限分配

可视化操作:
在这里插入图片描述
分配链接权限 connector 链接角色:
– Grant/Revoke role privileges
grant connect to HZT;
在这里插入图片描述
分配系统权限
– Grant/Revoke system privileges
grant create any index to HZT;
grant create any sequence to HZT;
grant create any synonym to HZT;
grant create any table to HZT;
grant create any view to HZT;
grant unlimited tablespace to HZT;
在这里插入图片描述
三 数据表
创建表
create table TEST
(
ID NUMBER,
NAME VARCHAR2(10),
AGE NUMBER
)
删除数据表
drop table table_name;
commit;
查看表结构的命令
desc table_name;

四、约束条件
主键约束
唯一约束
非空约束
外键约束

五、SQL学习
1、SELECR基本查询语句
select * from table_name
where … 限制满足查询条件的行
group by …
关键词不能拆分、不区分大小写格式。*
2、select 语句中的算术表达式:
* / + - ( )
计算从左往右,先计算括号内的数值,再乘除,后加减。
注:select 语句乘除只能计算数值型字符,不能直接乘除日期型;
列名不能缩写;
列的别名:可用as 或者空格进行命名,含有 @ 空格 等特殊字符的,需在别名两侧加双引号;
distinct 去重;
|| 连接符;
3、字符串和日期
字符串和日期的值要放在单引号中
字符值区分大小写,日期值格式敏感,
日期的默认格式 DD-MON-RR
中文版与英文版的Oracle 对于日期的月份格式有区别,中文的用1月,英文的为月份的简写 比如:January Jan。
4、比较条件
< 小于,=等于,> 大于 , <=小于等于, >=大于等于, <>不等于,!= 不等于, ^= 不等于。
BETWEEN… AND … 在两个值之间(包含); 【等同于 >= 下限 and <= 上限】 。
IN(set) 匹配一个任意值列表,实际上由Oracle 服务器转变为一组or条件:a in (value1, value2) 等同于 a=value1 or a=value2。
LIKE 匹配一个字符模板, 使用 % _ 进行模糊查询,‘%条件%’, escape转义字符,比如 like ‘SA_%’ escape ‘’。
IS NULL 是一个空值 。
IS NOT NULL 不是一个空值 。
select 语句无法直接查询百分数,需要将百分数化为小数。

5、逻辑运算
AND 并列的条件同时为真
OR 符合一个条件即可
NO 取反

6、优先规则
在这里插入图片描述
7、Order by排序
对结果集做排序处理,在排序中也可以使用不包括在select子句中的列排序。
order by 子句查询, ASC升序排序 默认的, DESC降序。
order by 在select 语句的最后, 后跟排序的列
对于空值,升序排在最后,降序排在最前。
可以用列的序号排序,也可以用列的别名排序,还可以指定多列进行排序;

六、多表查询
笛卡尔积:
两个集合X和Y的笛卡儿积(Cartesian product),又称直积,表示为X × Y,是其第一个对象是X的成员而第二个对象是Y的一个成员的所有可能的有序对。
假设集合A={a,b},集合B={0,1,2},则两个集合的笛卡尔积为{(a,0),(a,1),(a,2),(b,0),(b,1), (b,2)}。

类似的例子:如果A表示某学校学生的集合,B表示该学校所有课程的集合,则A与B的笛卡尔积表示所有可能的选课情况。
1、内连接 ( inner join)
等值连接
select table1.column1, table2.column2 from table1, table2 where table1.column1 = table2.column2
非等值连接
非等值连接是一种不使用相等(=)作为连接条件的查询。如!=、 >、 <、>=、 <=、between… and… 等;
select * from table1, table2 where table1.column1 > a
自连接
使用一个表连接它自身的操作。
select * from table1 a, table1 b where a.column1 = b.column2
[ select worker.last_name “manager name”, manager.last_name “worker name” from employees worker, employees manager where
manager.manager_id =worker.employee_id ]

MySQL 中 CROSS JOIN 和 INNER JOIN 的表现完全相同,都可以指定 ON 条件
2、外连接 (outer join)
外连接指查询出符合连接条件的数据同时还包含孤儿数据。(孤儿数据指列的值为空的数据)
左(外)连接, left (outer) join on :
包含左表的孤儿数据,即左表全显示,右表包含空值
select * from table1 t1 left outer join table2 t2 on t1.column1=t2.column2
*右(外)连接, right(outer) join on:
包含右表的孤儿数据,即右表全显示,左表含空值
select * from table1 t1 right outer join table2 t2 on t1.column1=t2.column2
全外连接,full (outer) join on :包含全部表的孤儿数据
select * from table1 t1 full outer join table2 t2 on t1.column1=t2.column2

Oracle 扩展的外连接
在Oracle 数据库中对外连接中的左外与右外连接做了扩展,可以简化外连接的语法,通过在连接条件的后侧使用(+)来表示是否显示孤儿数据,有(+)表示不显示孤儿数据,而另一侧则显示孤儿数据,但是该种写法仅能在Oracle 数据库中使用,在MySQL中就无法使用了。
那个表要显示孤儿数据,哪个表就不加(+)

select last_name, d.department_name from employees e, departments d
where e.department_id = d.department_id (+)

select last_name, d.department_name from employees e, departments d
where e.department_id(+) = d.department_id

3、交叉连接 (cross join)
两个表的交叉乘积,该连接与两个表的笛卡尔乘积一样。
4、自然连接 (natural join)
把两个表相同的列做等值连接,相同的列必须数值和类型都相同,如果列的数据类型不一致将返回报错。相当于内连接,性能与等值连接相同,无须些连接条件。
select * from table1 natural join table2
5、Using 子句的使用
当有多个列匹配时,用Using 子句匹配唯一的列。
如果某列在USING中使用,那么在引用该列时不要使用表名或别名
natural join 与 using 子局互相排斥,不能同时使用。
select * from table1 join table2 using (column1) 注:column1为表1 表2 匹配的相同列。

6、子查询
嵌套查询,即一个查询是另一个查询的条件。
可以将子查询放在许多SQL子句中,where 子局、from 子局、having 子局。
select * from table1
where column1 = ( select colmun2 from table2 where… )
子查询放在圆括号中;
子查询放在比较条件的右边;
在单行子查询中用单行运算符 ,单行子查询指查询结果返回一条数据。
在多行子查询中用多行运算符,多行子查询指查询结果返回多条数据。
多行子查询:
in ( ),
any( ),<any 小于任意一个,小于最大值; >any 大于任意一个,大于最小值。
all( ),<all 小于所有,小于最小值 >all 大于任意一个,大于最大值。

七、数据操纵语言(DML)
insert 的语句
insert into table_name (colmun1, colmun2, colmun3 ) values (values1, values2, values3 );
插入空值列数据
insert into table_name (colmun1, colmun2, colmun3 ) values (values1, values2, null );
或 insert into table_name (colmun1, colmun2 ) values (values1, values2 );

Oracle 数据导入方式:
一、sql文件导入
打开PLSQL Developer ,创建命令窗口,编辑 @d:/[尚硅谷]_宋红康_oracle_sql_plsql课件_章节练习_资料/2.数据表文件/01_del_data.sql
和 02_hr_cre.sql 和 03_hr_popul.sql。成功导入sql文件并执行语句。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/huangtao_1995/article/details/129288011