ORACLE-SQL培训资料
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Leabharlann Baidu
知识准备
对于PL/SQL Developer的使用有一定了解,知道如何登录 Oracle,如何使用command和SQL窗口的操作。 对于《SQL基础知识篇》(SQL-001)中的知识有一定的了解。
1、概念:
结构化查询语言(Structured Query Language)简称SQL,是一种特殊 目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查 询、更新和管理关系数据库系统;
2、 SQL语言基本分类:
1)数据定义语言(DDL): 包括:create table、alter table、drop table等;
2)DML(Data Manipulation Language,数据操作语言):用于检索或者 修改数据。
DML包括: INSERT:用于增加数据到数据库; UPDATE:用于从数据库中修改现存的数据 DELETE:用于从数据库中删除数据。
5)事务处理语言(TPL): 它的语句能确保被DML语句影响的表的所有行及时得以更新。TPL语句包括 BEGIN TRANSACTION ,COMMIT和ROLLBACK 6)指针控制语言(CCL): 它的语句,像DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT 用于 对一个或多个表单独行的操作
Group by、having select t.sal from dengxianglei_EMP t group by t.sal having t.sal=2000; Exists \ not exists select * from dengxianglei_EMP o where exists (select 'x' from dengxianglei_dept t where t.deptno = o.deptno); Decode Decode (a,b,c,d);\decode(a,b,c,d,e) Case select t.ename,case t.ename when '小红' then sal * 1 when '小明' then sal * 2 else sal end new_sal from dengxianglei_emp t;
表名和列的命名规则 1)必须以字母开头 2)长度不能超过30个字符 3)不能使用oracle的保留字 4)只能使用如下字符 A-Z,a-z,0-9,$,#等 Oracle中字段的数据类型 字符型 char 最大2000个字节 定长 char(10) '张三'后面添加6个空格把10个字节填满 varchar2 范围 最大4000个字节 变长 char 查询的速度极快浪费空间,查询比较多的数据用。 varchar2 节省空间 (oralce中基本都用这个) 数字 number 范围- 10的38次方到10的38次方,可以是整数也可以是小数 number(4)最大表示四位整数-9999到9999 number(5,2)表示5为有效数字 2为小数的一个小数-999.99到999.99
部分字段插入 insert into dengxianglei_EMP (empno, ename, job, mgr, sal, comm, deptno) values (CUX_store_limit_T_S.Nextval, '小明', '会计', null,--空值 2000, 500, 20);
CREATE
SEQUENCE(创建序列)
创建序列: CREATE SEQUENCE 序列名 [INCREMENT BY n]
[START WITH n]
[{MAXVALUE/ MINVALUE n|NOMAXVALUE}] [{CYCLE|NOCYCLE}] [{CACHE n|NOCACHE}]; create sequence cux_store_limit_t_s minvalue 1--默认是1 maxvalue 2147483647--默认9999999999999999999999999999 start with 20000--默认1 increment by 1--默认1 CYCLE--默认循环 cache 10; --默认20 create sequence CUX_store_limit_T_S;(也可以这样建)
表连接(多表查询) 笛卡尔积(a表记录条数*b表记录条数) select
* from dengxianglei_emp,dengxianglei_dept; 规定:多表查询的条件是 至少不能少于 表的 个数-1 才能排除笛卡尔集 (如果有N张表联合查询,必须得有N-1个条件, 才能避免笛卡尔集合) SELECT e.ename, e.sal, d.dname FROM dengxianglei_emp e, dengxianglei_dept d WHERE e.deptno = d.deptno; 自连接(内联)
日期 图片
date 包含年月日和时分秒 7个字节 blob 二进制大对象 图像/声音 4G
Create table例子:创建一个员工表 create table dengxianglei_EMP (empno NUMBER(4),--员工号 ename VARCHAR2(10),--员工姓名 job VARCHAR2(9),--职位 mgr NUMBER(4),--上级领导 hiredate DATE,--入职日期 sal NUMBER(7,2),--工资 comm NUMBER(7,2),--奖金 deptno NUMBER(2)—部门编号); create table dengxianglei_DEPT ( deptno NUMBER(2) not null, dname VARCHAR2(14), loc VARCHAR2(13) );--为后面准备
3.2.DML 3.2.1. insert(插入数据)
--所有字段都插入 insert into dengxianglei_EMP values (CUX_store_limit_T_S.Nextval, '小红', '会计', 5, sysdate, 2000, 500, 20);
Union \union all\Intersect\Minus select * from dengxianglei_EMP t where t.empno = 5 intersect select * from dengxianglei_EMP t where t.empno = 6; select * from dengxianglei_EMP t where t.empno = 5 union select * from dengxianglei_EMP t where t.empno = 5; select * from dengxianglei_EMP t where t.empno = 5 union all select * from dengxianglei_EMP t where t.empno = 5; select * from dengxianglei_EMP t where t.empno = 6 minus select * from dengxianglei_EMP t where t.empno = 5;
3.3 DQL(数据查询语言,sql最主要的部分) Select查询语法: SELECT “栏位名” FROM “表格名” ; Distinct(去重) Where(条件) And or In\not in Between and select * from dengxianglei_EMP t where t.empno between 4 and 7; Like Order by Count
3.2.2 UPDATE --将员工号为1的员工名字改为小胡 UPDATE DENGXIANGLEI_EMP T SET T.ENAME=„小胡‟, T.sal=„5000‟ WHERE T.EMPNO=1; 3.2.3 delete --删除员工号为2的员工信息删除 delete from DENGXIANGLEI_EMP T where t.empno=2; delete from DENGXIANGLEI_EMP;删除表中所有记录,表结 构还在,写日志,可以恢复,速度慢 drop table DENGXIANGLEI_EMP;删除表结构和数据 truncate table DENGXIANGLEI_EMP;删除表中的所有记录, 表结构还在,不写日志,无法找回删除的记录,速度快
3.1.2 Drop
drop Drop table table_name;
SEQUENCE seq_name; Drop index index_name; Drop view view_name;
3.1.3 alter 添加字段(学生所在班级classid)(添加add) alter table student add(classid number(2)); 修改字段的长度(修改modify) alter table student modify(xm varchar2(12)); 删除一个字段 alter table student drop column sal; 字段如何改名字 --先删除 a)alter table student drop column sal; --再添加 b)alter table student add (salary number(7,2)); 表名修改 rename student to stu;
3)数据查询语言(DQL:Data Query Language): 其语句,也称为"数据检索语句",用以从表中获得数据,确定数据怎样在应 用程序给出。保留字SELECT是DQL(也是所有SQL)用得最多的动词,其他DQL 常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。这些DQL保留字常与 其他类型的SQL语句一起使用。 4)DCL(Data Control Language ,数据控制语言):用于定义数据库用户 的权限。 DCL包括: ALTER PASSWORD GRANT REVOKE CREATE SYNONYM
SQL-101
2016年6月
1、sql概念与分类 2、数据定义语言(DDL) 3、DML(Data Manipulation Language,数据 操作语言) 4、数据查询语言(DQL:Data Query Language) 5、函数 6、约束与索引
系统环境
Oracle数据库9i或以上版本 安装PL/SQL Developer数据库集成开发工具,建议使用英文 版
3、基本语法 3.1.create Create
table Create sequence Create view(后面讲) Create index (后面讲)
3.1.1 Create 语法: CREATE );
table (建表)
TABLE table_name( column_name1 data_type, column_name2 data_type,.......
知识准备
对于PL/SQL Developer的使用有一定了解,知道如何登录 Oracle,如何使用command和SQL窗口的操作。 对于《SQL基础知识篇》(SQL-001)中的知识有一定的了解。
1、概念:
结构化查询语言(Structured Query Language)简称SQL,是一种特殊 目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查 询、更新和管理关系数据库系统;
2、 SQL语言基本分类:
1)数据定义语言(DDL): 包括:create table、alter table、drop table等;
2)DML(Data Manipulation Language,数据操作语言):用于检索或者 修改数据。
DML包括: INSERT:用于增加数据到数据库; UPDATE:用于从数据库中修改现存的数据 DELETE:用于从数据库中删除数据。
5)事务处理语言(TPL): 它的语句能确保被DML语句影响的表的所有行及时得以更新。TPL语句包括 BEGIN TRANSACTION ,COMMIT和ROLLBACK 6)指针控制语言(CCL): 它的语句,像DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT 用于 对一个或多个表单独行的操作
Group by、having select t.sal from dengxianglei_EMP t group by t.sal having t.sal=2000; Exists \ not exists select * from dengxianglei_EMP o where exists (select 'x' from dengxianglei_dept t where t.deptno = o.deptno); Decode Decode (a,b,c,d);\decode(a,b,c,d,e) Case select t.ename,case t.ename when '小红' then sal * 1 when '小明' then sal * 2 else sal end new_sal from dengxianglei_emp t;
表名和列的命名规则 1)必须以字母开头 2)长度不能超过30个字符 3)不能使用oracle的保留字 4)只能使用如下字符 A-Z,a-z,0-9,$,#等 Oracle中字段的数据类型 字符型 char 最大2000个字节 定长 char(10) '张三'后面添加6个空格把10个字节填满 varchar2 范围 最大4000个字节 变长 char 查询的速度极快浪费空间,查询比较多的数据用。 varchar2 节省空间 (oralce中基本都用这个) 数字 number 范围- 10的38次方到10的38次方,可以是整数也可以是小数 number(4)最大表示四位整数-9999到9999 number(5,2)表示5为有效数字 2为小数的一个小数-999.99到999.99
部分字段插入 insert into dengxianglei_EMP (empno, ename, job, mgr, sal, comm, deptno) values (CUX_store_limit_T_S.Nextval, '小明', '会计', null,--空值 2000, 500, 20);
CREATE
SEQUENCE(创建序列)
创建序列: CREATE SEQUENCE 序列名 [INCREMENT BY n]
[START WITH n]
[{MAXVALUE/ MINVALUE n|NOMAXVALUE}] [{CYCLE|NOCYCLE}] [{CACHE n|NOCACHE}]; create sequence cux_store_limit_t_s minvalue 1--默认是1 maxvalue 2147483647--默认9999999999999999999999999999 start with 20000--默认1 increment by 1--默认1 CYCLE--默认循环 cache 10; --默认20 create sequence CUX_store_limit_T_S;(也可以这样建)
表连接(多表查询) 笛卡尔积(a表记录条数*b表记录条数) select
* from dengxianglei_emp,dengxianglei_dept; 规定:多表查询的条件是 至少不能少于 表的 个数-1 才能排除笛卡尔集 (如果有N张表联合查询,必须得有N-1个条件, 才能避免笛卡尔集合) SELECT e.ename, e.sal, d.dname FROM dengxianglei_emp e, dengxianglei_dept d WHERE e.deptno = d.deptno; 自连接(内联)
日期 图片
date 包含年月日和时分秒 7个字节 blob 二进制大对象 图像/声音 4G
Create table例子:创建一个员工表 create table dengxianglei_EMP (empno NUMBER(4),--员工号 ename VARCHAR2(10),--员工姓名 job VARCHAR2(9),--职位 mgr NUMBER(4),--上级领导 hiredate DATE,--入职日期 sal NUMBER(7,2),--工资 comm NUMBER(7,2),--奖金 deptno NUMBER(2)—部门编号); create table dengxianglei_DEPT ( deptno NUMBER(2) not null, dname VARCHAR2(14), loc VARCHAR2(13) );--为后面准备
3.2.DML 3.2.1. insert(插入数据)
--所有字段都插入 insert into dengxianglei_EMP values (CUX_store_limit_T_S.Nextval, '小红', '会计', 5, sysdate, 2000, 500, 20);
Union \union all\Intersect\Minus select * from dengxianglei_EMP t where t.empno = 5 intersect select * from dengxianglei_EMP t where t.empno = 6; select * from dengxianglei_EMP t where t.empno = 5 union select * from dengxianglei_EMP t where t.empno = 5; select * from dengxianglei_EMP t where t.empno = 5 union all select * from dengxianglei_EMP t where t.empno = 5; select * from dengxianglei_EMP t where t.empno = 6 minus select * from dengxianglei_EMP t where t.empno = 5;
3.3 DQL(数据查询语言,sql最主要的部分) Select查询语法: SELECT “栏位名” FROM “表格名” ; Distinct(去重) Where(条件) And or In\not in Between and select * from dengxianglei_EMP t where t.empno between 4 and 7; Like Order by Count
3.2.2 UPDATE --将员工号为1的员工名字改为小胡 UPDATE DENGXIANGLEI_EMP T SET T.ENAME=„小胡‟, T.sal=„5000‟ WHERE T.EMPNO=1; 3.2.3 delete --删除员工号为2的员工信息删除 delete from DENGXIANGLEI_EMP T where t.empno=2; delete from DENGXIANGLEI_EMP;删除表中所有记录,表结 构还在,写日志,可以恢复,速度慢 drop table DENGXIANGLEI_EMP;删除表结构和数据 truncate table DENGXIANGLEI_EMP;删除表中的所有记录, 表结构还在,不写日志,无法找回删除的记录,速度快
3.1.2 Drop
drop Drop table table_name;
SEQUENCE seq_name; Drop index index_name; Drop view view_name;
3.1.3 alter 添加字段(学生所在班级classid)(添加add) alter table student add(classid number(2)); 修改字段的长度(修改modify) alter table student modify(xm varchar2(12)); 删除一个字段 alter table student drop column sal; 字段如何改名字 --先删除 a)alter table student drop column sal; --再添加 b)alter table student add (salary number(7,2)); 表名修改 rename student to stu;
3)数据查询语言(DQL:Data Query Language): 其语句,也称为"数据检索语句",用以从表中获得数据,确定数据怎样在应 用程序给出。保留字SELECT是DQL(也是所有SQL)用得最多的动词,其他DQL 常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。这些DQL保留字常与 其他类型的SQL语句一起使用。 4)DCL(Data Control Language ,数据控制语言):用于定义数据库用户 的权限。 DCL包括: ALTER PASSWORD GRANT REVOKE CREATE SYNONYM
SQL-101
2016年6月
1、sql概念与分类 2、数据定义语言(DDL) 3、DML(Data Manipulation Language,数据 操作语言) 4、数据查询语言(DQL:Data Query Language) 5、函数 6、约束与索引
系统环境
Oracle数据库9i或以上版本 安装PL/SQL Developer数据库集成开发工具,建议使用英文 版
3、基本语法 3.1.create Create
table Create sequence Create view(后面讲) Create index (后面讲)
3.1.1 Create 语法: CREATE );
table (建表)
TABLE table_name( column_name1 data_type, column_name2 data_type,.......