*********************** 基础 *************************
一、准备知识
1、Oracle的卸载重装
- oracle卸载之后可能无法立即重装
- 电脑进入安全模式,删除对应磁盘路径的oracle相关文件;
- 在注册表中搜索与 oracle 相关内容,并且删除;
- 重启电脑一般情况下即可重新安装;
- oracle安装完成后,所有服务设置为手动,只启动实例服务和监听服务即可 ;
2、sqlplus命令总结
- sqlplus输入密码的时候是不会显示的
- set linesize 长度 设置每行长度
- set pagesize 长度 设置每页长度
- conn 用户名/密码 (as sysdba) 切换用户,如果是 sys 用户一定要写 as sysdba
- host 本机命令 调用本机命令
一行数据显示不全(sqlplus中):col name format a20;set linesize 200
3、scott用户表结构
- dept部门表、emp员工表、salgrade工资等级表、bonus工资条表
4、Oracle数据库、实例、表空间、用户、数据文件和数据表之间的关系
- oracle 数据库和其他数据库不一样的是 oracle 的表和其他的数据库对象都是存在用户下的;
- 不同的用户可以在同一个表空间下建立同名的表,同名的表通过用户来区分;
- 关于Oracle 的用户和表空间关系的详细说明
二、SQL基本分类
1、DDL(数据定义语言):CREATE、ALTER 、DROP
#修改表结构
ALTER TABLE <tablename>
MODIFY (column definition);
ADD (column definition);
DROP COLUMN column;
#查看表结构
DESC <tablename>;
#给表里的字段加上约束条件
ALTER TABLE 表名 ADD CONSTRAINT PRIMARY KEY (字段名);
ALTER TABLE 表名 ADD CONSTRAINT UNIQUE (字段名);
alter table test1 add constraint u_id unique(id);
alter table test1 add constraint key_id primary key(id);
#改表名
alter table persons2 rename to personone;
#改列名
alter table persons rename COLUMN name to pname;
2、DQL(数据查询语言):SELECT…FROM…WHERE…
- distinct是对行去重,不是对列去重;
- select可以输出常量,数字原样输出,字符串加单引号,可以用 || 拼接;
- 限制数据条数的查询:top(sql server)、limit(mysql)、ROWNUM(oracle);
select * from (select emp.*,rownum rn from emp where rownum <10) temp where
temp.rn between 2 and 5;
3、DML(数据操作语言):INSERT、UPDATE、DELETE
--oracle批量insert
insert all into persons2 values(1,'haha',23)
into persons2 values(2,'haha',23)
into persons2 values(3,'haha',23)
into persons2 values(4,'haha',23)
into persons2 values(5,'haha',23)
select 1 from dual;
--mysql批量insert
INSERT INTO example
(example_id, name, value, other_value)
VALUES
(100, 'Name 1', 'Value 1', 'Other 1'),
(101, 'Name 2', 'Value 2', 'Other 2'),
(102, 'Name 3', 'Value 3', 'Other 3'),
(103, 'Name 4', 'Value 4', 'Other 4');
4、DCL(数据控制语言):GRANT、REVOKE、COMMIT、ROLLBACK
--授予对象权限
GRANT SELECT,UPDATE ON order_master
TO MARTIN;
--取消对象权限
REVOKE SELECT,UPDATE ON order_master
FROM MARTIN;
--事务相关
UPDATE xxx;
SAVEPOINT mark1;
DELETE FROM xxx;
SAVEPOINT mark2;
ROLLBACK TO SAVEPOINT mark1;
COMMIT;
三、where | group by | order by | having
等关键词使用
1、聚合函数和 group by
- group by 只能使用 from 和 where 中定义的别名;
- select中有聚合函数但是后面没有group by,则select子句中不能再出现其他的字段
- 使用了group by 后select子句中只能出现聚合函数和分组字段
- 聚合函数嵌套之后,select子句中只能有嵌套的聚合函数,不能包含其他的字段
- select、having、order by都可以使用聚合函数 ;
- 分组之后的过滤用having,但是这个过滤是只针对聚合函数和分组字段的;
2、伪列(rowid、rownum)& 伪表(dual)
rownum
- 行号是自动生成的,一旦select出来就是临时表的一个列,是固定值;rownum 只能用小于
select emp.* ,rownum rn from emp where rownum < 3;
- 行号的应用:查询第一行;查询第n到m行(实现分页操作),具体代码的形式如下
select * from
(select *,ROWNUM rn from 表
where ROWNUM<=(