1、Oracle数据库 一 、 SQL语句分为五类 2二 、 Oracle 常用字段类型 : 3三 、函数 5数字函数 5转换函数 6其它函数 7四、多表连接和子查询 8多表连接: 9五、数据操作与事务控制 11SQL语句分为五类 11六、数据库的主要对象 12七、Oracle 数据库开发应用程序 15用户管理 16 SQL :Structured Query Language :结构化查询语言。SQL分类(SELECT、DML、DDL、DCL、事务控制语句);RDBMS : 关系数据库管理系统用户 :Sys :超级管理员,权限最高;System :管理员;Scott :用户。Oracle卸载过程
2、 :_1、停止Oracle所有的服务;2、卸载所有Oracle所有产品,开始程序Oracle-Orahome10gOracle Installation ProductsUniversal Installer;3、运行regedit,选择HKEY_LOCAL_MACHINE SOFTWARE,删除所有ORACLE入口;4、运行regedit,选择HKEY_LOCAL_MACHINE SYSTEMCurrentContralSetService, 删除所有ORACLE入口;5、运行regedit,选择HKEY_LOCAL_MACHINE SYSTEMCurrentContralSetServic
3、eEventlogApplication, 删除所有ORACLE入口;6、删除Oracle目录;7、重启计算机(若有不可删除的,重启之后即可删除)。_一 、 SQL语句分为五类查询语句 :Select DML语句(数据操作语言) : Insert/Update/Delete/Merge DDL语句(数据定义语言) :create、alter、drop、truncate DCL语句(数据控制语言) :grant、revoke 事务控制语句 : commit、rollback、savepoint二 、 Oracle 常用字段类型 :Char(n) :定长字符串Varchar2(n) : 变长字符串
4、Number(m,p) : 数字类型Date : 日期类型1、创建表格CREATE TABLE student(st_class char(4), st_num char(10), st_name varchar2(4), st_sex char(2), st_age number(3,0)2、显示表格框架describe / desc student;3、插入数据INSERT INTO student(st_class, st_num, st_name, st_sex,st_age)VALUES(J02, 0245639,哈哈, 男, 15);4、显示所有数据select * from st
5、udent5、删除表格DROP TABLE student;6、连接符 | 和字段别名表示select first_name | last_name | 的工资是 : | salary 员工的工资 from employees7、去掉重复值select distinct department_id from employees8、筛选select first_name , last_name , salary from employeeswhere first_name = S; / where salary 1000; : 不等于between and 在某范围之内in(list) 字符串在
6、那个之间like(%、_)is not null; 是否为空 and ,or , not 。 连接关系,优先级 not and or ;在一定范围值内 :数字用 where salary between 2000 and 2300字符串用 where first_name IN (F);模糊查询 :where first_name like joan% where first_name like joan_ where department_id is null/not null满足两个条件,用AND连接,满足其中一个,用OR连接。 where department_id = 1and sal
7、ary 10009、排序 升序 : order by department_id asc (asc默认可以不写) 降序 :order by salary desc多种排序 :order by department_id asc, salary desc10、注释语句(-.) select * from student - 查找表中所有内容11、空指针:null。12、起别名 (1) select first_name AS “姓名” , last_name , salary from employees(2) select first_name AS 姓名 , last_name , sala
8、ry from employees(3) select first_name 姓名 , last_name , salary from employees13、重命名表格 :rename employees(旧表名) to employee(新表名);14、向表中增加字段 : alter table employees add( name varchar2(20) );15、从表中删除字段 :alter table employees drop(name);16、删除记录 :delete from employees where employee_id = 7;17、删除表中全部记录(清空表格
9、) :delete from employees;18、数据修改 : update salary set hightest_level = 4000 where grade_level = 5 19、修改字段属性 :alter table employee modify(department_id varchar2(30) not null) 三 、函数SQL函数分类 :单行函数,多行函数;单行函数分为 :字符函数、数字函数、日期函数、转换函数和其它函数;字符函数1、 大小写转换函数:lower upper initcap select first_name from employee whe
10、re lower(first_name) = jackyselect first_name from employee where upper(first_name) = JACKYselect first_name from employee where initcap(first_name) = Jacky2、 字符处理函数Concat :连接两个字符串select concat(last_name,first_name) from employeesubstr : 取出字符串的字符串 select first_name, substr(first_name, 1, 3) from emp
11、loyee length :求字符串长度 select first_name, length(first_name) from employee instr: 找到字符串的位置 select first_name, instr(first_name, c) from employee lpad | rpad :字符串填充补位函数 select first_name, lpad(first_name, 6, *) from employee trim( from first_name) :截取字符串两侧的字符(只能截取字符串两端的字符,不能截取中间的字符) ltrim(marry, ma), 截
12、取字符串左端的字符, 结果为 :ry,可以截取多个左端的字符; rtrim(marry, ry), 截取字符串右端的字符, 结果为 :ma,可以截取多个右端的字符; select first_name, ltrim(first_name, Ja) from employee select first_name, rtrim(first_name, cy) from employee replace :替换字符串 select first_name, replace(first_name, Ja, DD) from employee数字函数 Round :数字四舍五入 Select salary
13、,round(salary, 2),round(salary, 1),round(salary, 0),round(salary, -1),round(salary, -2) from employeewhere employee_id = 201001trunc:直接截掉数字select salary,trunc(salary, 2),trunc(salary, 1),trunc(salary, 0),trunc(salary, -1),trunc(salary, -2) from employeewhere employee_id = 201001 mod :求余数(取模) select
14、salary,mod(salary, 10) from employeewhere employee_id = 201001 日期函数 Sysdate :得到当前系统的时间(默认日期格式 :DD-MON月-YY) select sysdate dual; 日期加减一个数字得到一个新日期,即增加或减少多少天 select hire_date, hire_date + 10, hire_date -10 from employee 日期和日期之间不能相加,能够进行相减!相减得到两个日期相差的天数! Month_Between :比较日期之间相差的月份 select months_between(s
15、ysdate, hire_date)from employee add_months :日期加上或减去几个月 select hire_date, sysdate,add_months(hire_date, 5)from employeeselect hire_date, sysdate,add_months(hire_date, -5)from employee next_day :取得从当前时期开始遇到的第一个指代星期几的日期 select hire_date, sysdate,next_day(sysdate, 4) from employee last_day :指定日期所在月份最后一天
16、的日期 select hire_date, sysdate,last_day(sysdate)from employee round :取得按年或者月四舍五入得到的次年日期,年的四舍五入以每年六月为基准,月的四舍五入以每月的15号为基准。 select hire_date, sysdate,round(sysdate, year)from employeeselect hire_date, sysdate,round(sysdate, month)from employee trunc :取得按年或月截取获得的新日期select hire_date, sysdate,trunc(sysdate
17、, year)from employee select hire_date, sysdate,trunc(sysdate, month)from employee 转换函数 对日期进行to_char 转换 select sysdate,to_char(sysdate, YYYY-MM-DD)from employee 对数字进行to_char 转换:9不强制显示,0强制显示,L显示本地符号。 select salary,to_char(salary, $999,999,999.99)from employeeselect salary, to_char(salary, L00,000.00)f
18、rom employee to_date函数 select to_date(11-10月-10)from employee select to_date(2010-10-11, YYYY-MM-DD)from employee to_number函数 select to_number(12345) * 10 from employee、其它函数 nvl(expr1, expr2) :用于将控制转换为一个替换值 select manager_id, nvl(manager_id,12345) from employee nvl2(expr1, expr2, expr3) :如果expr1不为nu
19、ll,返回expr2,否则返回expr3 select manager_id 前, nvl2(manager_id,12345,4567) from employee nullif(expr1, expr2) :比较两个表达式,如果相等返回null,如果不相等返回第一个表达式的值。 select length(first_name),length(last_name),nullif(length(first_name),length(last_name) from employee coalesce(expr1, expr2,.exprn) :查找表达式莉第一非空值表达式,并返回此表达式的值(
20、括号里面表达式必须是同一类型的)。 select coalesce(email, last_name, first_name) from employee;条件表达式(实现if-then-else的逻辑) : 使用两种方法:case表达式,decode函数 case表达式: select employee_id, first_name, department,salary,case department when 1 then salary + 100 when 2 then salary + 200 when 3 then salary + 300 else salary + 500 end
21、 NEW SALARYfrom employee; decode函数: select employee_id, first_name, department,salary,decode(department, 1, salary + 100, 2, salary + 200, 3,salary + 300) NEW SALARY from employee; 分组函数1、 分组函数对多行输入值进行运算,得到多行对应的单个结果 AVG() :计算平均值,distinct 去掉重复值后再进行计算。 select avg(salary) 平均工资 from employee; select avg(
22、distinct salary) 平均工资 from employee; count : 计算总个数 非空的才计算在内。 select count(*) from employee; select count(*) from employee where department = 6;注 :count(*)求出所有符合条件的记录数,count(字段) 是求出所有符合条件并且字段值非空的记录数。 max(),min() :求最大值,最小值 select min(salary) from employee; select min(salary) from employee; sum() :求和 s
23、elect sum(salary) from employee;2、 使用group by对数据进行分组 使用group by可以将表分成多个组,group by 紧跟where语句之后,分组函数在使用的时候,需要遵守一些规则:I 出现在select列表中的字段,如果出现位置不再组函数中,那么必须出现在group by 子句中。 select department 部门, avg(salary) 平均工资 from employee group by department;II 在group出现的字段可以不出现在查询语句中。 select avg(salary) 平均工资 from emplo
24、yeegroup by department;III where子句中不允许出现出现组函数,组函数可以出现在查询列表中,或者group by 子句中, 但是不允许出现在where子句中。 错误例子:select department, avg(salary) from employee where avg(salary) 5000 group by department;3、 使用having 子句对分组结果进行限制 select department 部门, avg(salary) 平均工资 from employee group by department having avg(salar
25、y) 3000;四、多表连接和子查询 约束 :在表上强制执行的一些数据校验规则,被插入、修改或者删除的数据必须符合在相关字段上设置这些数据检验规则,也就是约束条件。 Oracle数据库中包括五类完整性约束:1、 NOT NULL 非空 :只能定义在列级,保证列值不能为空。2、 UNIQUE 唯一键 :保证值不允许重复(可以为空)。3、 PRIMARY KEY 主键 :不允许有重复值,也不允许有空值。4、 FOREIGN KEY 外键 :5、 CHECK 检查 : 约束条件存放在数据字典中,同样需要命名; 约束条件命名有两种方式:Oracle按照SYS-Cn的默认命名格式命名,或者有用户指定的约
26、束条件命名。在什么时候创建约束: (1)、建表的时候 create table student (num number(20) not null, name varchar2(20) not null,sex varchar2(2), age number(3) (2)、建表之后查找定义的约束: select * from all_constraints where table_name = STUDENT 删除约束 : alter table student drop constraint SYS_C005402; 添加约束: alter table student add constrai
27、nt num_uni_check unique(num);alter table stusub add constraint stu_sub_check primary key(st_no, su_no) 创建外键连接: create table stusub(num number(20), sub_no char(4), foreign key(num) references student)查询约束 :select * from all_constraints where table_name = EMPLOYEE;check约束 :create table stuInfo(stu_id
28、char(10) primary key,stu_name varchar2(10) not null, stu_age number(2), constraint stu_age_check check(stu_age 15)启用约束:alter table stuInfo enable constraint stu_age_check;关闭约束:alter table stuInfo disable constraint stu_age_check; 多表连接:使用单个select 语句从多个表中取出相关的数据。select department.department_id, employ
29、ee.em_name from department, employee where employee.department_id = department.department_id; 使用别名:select d.department_id, e.em_name from department d, employee e where e.department_id = d.department_id; 注意:一定要有where语句且where语句后面是正确的连接条件,如果漏写或者错误的连接条件,会产生错误的结果! 多表连接可以分为四类: 等值连接、非等值连接、外连接、自连接,还有SQL99新
30、标准下的多表连接。 等值连接:最常见的一种,连接条件中的两个字段通过等号连接建立等值关系。 示例:select d.department_id, e.em_name, d.department_name from department d, employee e where e.department_id = d.department_id; 通过and 连接字句和查询条件 select d.department_id, e.em_name, d.department_name from department d, employee e where e.department_id = d.department_id and e.department_= 1001 ; 连接多个表:通过and 操作符连接,一般来说,n个表连接,至少需要n-1个连接。 select s1.st_name,s2.su_name from stusub s3, student s1, subject s2 whe
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1