一、 Oracle基本概念:
1) 表空间:
2) 全局数据库名: 用于区分一个数据库的内部标识;
全局数据库名=数据库名+域名
使数据库的取名在整个网络环境中唯一
3) 模式和模式对象
模式为模式对象的集合
每一个用户对应一个模式
模式对象是用户拥有的对象
非模式对象与用户无关,如表空间
二、 启动数据库服务
OracleService<SID>:数据库服务
OracleOraDb11g_hom1TNSListener:数据库监听服务
OracleDBConsole<SID>:企业管理器服务
三、 连接数据库
4) SYS和SYSTEM用户
SYS和SYSTEM用户都是Oracle 的系统用户,它们都使用SYSTEM表空间,SYS拥有更大的权限
通过SQL*Plus方式连接
通过PL/SQL Developer方式连接
四、 数据类型
Oracle中伪列就像一个表列,但是它并没有存储在表中
伪列可以从表中查询,但不能插入、更新和删除它们的值
5) 常用的伪列有ROWID和ROWNUM
ROWNUM是查询返回的结果集中行的序号,可以使用它来限制查询返回的行数
五、 SQL简介
一、 常见案例
1) 按照姓名升序,如果姓名相同按照年龄降序排序
SQL>SELECTstuNo,stuName, stuAge
FROM stuInfo
WHERE stuAge>17
ORDER BY stuName ASC, stuAge DESC;
SQL>SELECTDISTINCT stuName,stuAge
FROM stuInfo;
SQL>SELECT stuName as "姓 名", stuAge as "年 龄", stuID as 身份证号
FROM StuInfo;
SQL>CREATE TABLE newStuInfo1
AS
SELECT * FROM StuInfo;
SQL>CREATE TABLE newStuInfo2
AS
SELECT stuName,stuNo,stuAge FROM StuInfo;
SQL>CREATE TABLE newStuInfo2
AS
SELECT stuName,stuNo,stuAge FROM StuInfo
WHERE 1=2;
2) 查看表中行数,取出stuName,stuAge列不存在重复数据的记录
SQL>SELECT stuName,stuAge
FROM stuInfo
GROUP BY stuName,stuAge
HAVING(COUNT(stuName||stuAge) <2);
SQL>SELECTCOUNT (*) FROM stuInfo;
3) 删除stuName、stuAge列重复的行(保留一行)
SQL>DELETE
FROM stuInfo
WHERE ROWID NOT IN(
SELECT MAX(ROWID)
FROM stuInfo
GROUP BY stuName,stuAge
HAVING(COUNT(stuAge||stuAge)>1)
UNION
SELECT max(ROWID)
FROM Stuinfo
GROUP BY stuName,stuAge
HAVING(COUNT(stuAge||stuAge)=1)
4) 用于事务控制的语句
COMMIT
ROLLBACK
SAVEPOINT
ROLLBACKTO <SavePoint_Name>
SQL>INSERTINTO dept VALUES(50,'a',null);
SQL>INSERTINTO dept VALUES(60,'b',null);
SQL>SAVEPOINTa;
SQL>INSERTINTO dept VALUES(70,'c',null);
SQL>ROLLBACKTO SAVEPOINT a;
SQL>COMMIT;
SQL>SELECT* FROM dept;
二、 集合操作符
UNION(联合)
UNION ALL(联合所有)
INTERSECT(交集)
MINUS(减集)