oracle和mysql的区别:
oracle的基本单元是用户,而mysql的基本单元是数据库,简单来说,当开始做一个新的项目时,如果用oracle作为数据库,只需要创建一个用户,而mysql需要创建一个数据库。
安装好oracle后的使用思路
oracle是存放数据的仓库,在安装成功oracle后,要登录管理员账户(system),需要创建一个表空间,但表空间只是一个逻辑单位,真正存放数据的的地方叫数据文件,因此还需要指定一个存放数据文件的地址,指定了数据文件的地址后,还需要指定存放数据的大小,指定一旦超过了这个大小后每次增加的大小。(注意:数据文件的位置)
创建表空间
create tablespace test datafile 'c:\oracleTest.dbf' size 100m autoextend on next 10m;
删除表空间
drop tablespace test;
创建好表空间后就可以创建一个用户了
创建用户并指定密码
create user wyz identified by wyz#111
上面代码创建了一个用户wyz并为他指定密码
由于用户是oracle的基本单位,不同的用户有不同的权限,因此在创建用户后需要给用户分配权限,权限有以下几种:connect,resource,dba三种。
分配用户权限
grant resource to wyz
增删改查
修改表结构 增加一个gender字段
alter table person add (gender number(2));
修改列类型
alter table person modify gender char(1);
修改列名称
alter table person rename column gender to sex;
删除一列
alter table person drop column sex;
char 与varchar2的区别
char类型是固定的,比如定了字段长度为6,实际只存了一个字符,那他的长度也是6;而varchar2是可变长度。
删除表的三种方式及他们之间的区别:
delete from person;
delete指删除表中所有记录
drop table person;
drop为删除表结构
truncate table person;
先删除表,再次创建表,效果等同于第一种,但当数据量大且带索引的情况下,效率高
序列
默认从1开始,递增,主要用来给主键赋值
SCOTT用户介绍
SCOTT用户也是oracle默认存在的一个账户,对于初学者来说,应该利用SCOTT用户学习,里面包含了少量表,但可以构建复杂的查询语句。安装了oracle后需要解锁scott用户才能使用。
用户名:scott 密码:tigger
解锁scott用户或重置密码
alter user scott identified by tiger;
常用数值函数
select round(26.14,1) from dual;
四舍五入,后面的参数代表保留的小数位数。
查询员工入职多长少个月了
select months_between(sysdate,e.hiredate) from emp
日期转字符串,字符串转日期
select to_char(sysdate,'fm yyyy-mm-dd hh24:mi:ss');
select to_date('2020-12-02 12:12:12','yyyy-mm-dd hh24:mi:ss');
说明:对大小写不敏感,所以后面的分不能写为mm,而改为了mi
根据教程学习oracle,在此记录下自己学习到的东西,便于以后翻阅
一、order by 指定如何去排序
- 按照列顺序排列 例:按照客户名称排序
SELECT name,address,credit_limit FROM customers ORDER BY name ASC;
默认按照ASC排序
- 按照列位置排列 1代表第一列
SELECT name, credit_limit,address
FROM customers
ORDER BY 2 DESC, 1;
- 用NULL值排序
语句按城市(city)和州(state)检索位置并对其进行排序
SELECT country_id, city, state FROM locations ORDER BY state DESC;
排序好的结果是
如果希望state为null值时排在最后,则可改为下查询语句(nulls first 或 nulls last)
SELECT country_id, city, state
FROM
locations
ORDER BY
state ASC NULLS LAST;
- 按函数和表达式排列数据
SELECT customer_id, name FROM customers ORDER BY UPPER( name );
二、distinct
SELECT DISTINCT可以用来过滤结果集中的重复行,确保SELECT子句中返回指定的一列或多列的值是唯一的
- 语法如下
SELECT DISTINCT column_1 FROM table_name;
- 根据多列检索唯一结果如下:column_1,column_2和column_n中的值的组合用于确定数据的唯一性
SELECT DISTINCT column_1,
column_2,
...
FROM
table_name;
注意:
DISTINCT将NULL值视为重复值。如果使用SELECT DISTINCT语句从具有多个NULL值的列中查询数据,则结果集只包含一个NULL值。
DISTINCT子句只能在SELECT语句中使用
在Oracle中DISTINCT和UNIQUE没有区别,二者为同义词,DISTINCT遵循ANSI标准,UNIQUE是Oracle特定的用法,从移植角度考虑,使用遵循ANSI标准的DISTINCT是一个更好的选择。
三、fetch
FETCH 子句在 Oracle 中可以用来限制查询返回的行数
语法:[ OFFSET offset ROWS]
FETCH NEXT [ row_count | percent PERCENT ] ROWS [ ONLY | WITH TIES ]
- OFFSET 子句指定在行限制开始之前要跳过行数。OFFSET 子句是可选的。 如果跳过它,则偏移量为 0,行限制从第一行开始计算
- FETCH 子句指定要返回的行数或百分比。例如 fetch next 1 rosw/fetch first 1 rows,这两句是一样的。
- ONLY | WITH TIES 选项 仅返回 FETCH NEXT (或 FIRST) 后的行数或行数的百分比。
WITH TIES 返回与最后一行相同的排序键。请注意,如果使用 WITH TIES,则必须在查询中指定一个 ORDER BY 子句。如果不这样做,查询将不会返回额外的行。
例:返回库存量最高的前 5 个产品:
使用with wies实例:
以百分比返回的示例:
返回库存量最高的前 1% 的产品
跳过库存量最高的十个产品,输出接下来的十个产品
可用于分页实现
四、between
日期 between 示例
创建主键和外键示例
级联删除外键:当主表中的一条记录被删除,从表中相关联的记录也应该删除
禁用外键:什么时候需要禁用外键呢? 例:创建了A,B,C三张表,A的主键是B和C的外键,这时候删除A,B,C三张表时无法删除,提示*( 无法禁用约束条件 (XXXXXXXXX) - 存在相关性),这时候需要先禁用全部外键,然后在执行删除功能,禁用外键语法:
ALTER TABLE B
DISABLE CONSTRAINT fk_supplier; 其中fk_supplier是外键名称