数据库中无论字段是什么类型,默认值都是NULL也就是说当我们向表中插入一条数据时,若对应的字段没有给定值,则默认就将NULL作为值插入到该字段上。可以使用DEFAULT为某个字段指定默认值,这样就会同指定的值插入当前字段。SQL语句本身不区分大小写,但行业中使用通常会将关键字全部都大写,其他内容全部都消协,形成差异来增加可读性。但需要注意,字符串在数据库中使用单引号扩起来,并且区分大小写。NOT NULL 约束
该约束可以是某个字段必须给值,在任何情况下,该字段的值不能为修改表的结构:
1.添加新的字段,字段只能追加到表的最后而不是在现有字段中插入一个新字段ALETER TABLE myemp_lemon ADD(添加的属性) 2.删除一个字段3.修改现有字段
修改可以修改字段的长度,类型,默认值DML语句
DML可以对表中的数据进行增,删,改DML语句伴随事物控制的。插入语句
INSERT INTO 不写默认全列插入
NULL。
COMMIT 插入语句ROLLBACK
INSERT 语句中可以不指定针对那些字段插入数据,若不指定,则是全列插入,这时候VALUES中给定的值的顺序,类型,个数必须与表中的字段一致赛可以。插入日期建议使用TO_DATE函数修改表中的数据,需要注意,不加
WHERE条件,整张表中所有记录都会被修改
删除表中的数据:DELETE FROM myemp_lemontea
WHERE name ='rose'
CREATE TABLE dept_lemonteatea (deptno NUMBER(2), dname VARCHAR2(14) , loc VARCHAR2(13) ) ; DESC dept_lemonteatea;
INSERT INTO dept_lemonteatea VALUES (10,'ACCOUNTING','NEW YORK'); INSERT INTO dept_lemonteatea VALUES (20,'RESEARCH','DALLAS');
INSERT INTO dept_lemonteatea VALUES (30,'SALES','CHICAGO');
INSERT INTO dept_lemonteatea VALUES (40,'OPERATIONS','BOSTON'); SELECT *FROM dept_lemonteatea; 补充:1.DB:数据库DBMS:数据库管理系统
2.行(Row)是横排的数据,也被称为记录列(Column)是总列的数据,也称为字段3.SQL(结构化的查询语言)可分为:
数据定义语言(DDL),数据操纵语言(DML),事务控制语言(TCL),数据查询语言(DQL),数据控制语言(DCL) 4.数据定义语言用于建立,修改,删除数据库对象。CREATE:创建表和其他对象ALTER:修改表或其他对象的机构DROP:删除表或其他对象的结构
TRUNCATE: 删除表的数据,保留表的结构5.数据操作语言(DML)包括:INSERT:将数据插到表中
UODATE:更新数据表中已存在的数据DELETE:删除数据表中的数据6.事务控制语言(TCL)
COMMIT:提交,确认已经进行的数据改变、ROLLBACKl:回滚,取消已经进行的数据改变
SAVEPOINT:保存点,使当前事务可以回到指定的保存点,便于取消部分改变
7.数据查询语言,用来查询数据结构:8.CHAR:表示固定长度的字符类型
SELECT
N表示占用的字节数,最大长度为
CHAR(N)形式:表示固定长度的字符类型,2000字节
9VARCHAR2:表示变长的字符类型VACHAR2(N):表示最多可以占用字节数10.DATE:用于定义日期时间的数据默认格式是:DD-MON-RR
11.DEEAULT:通过DEFAULT子句给列指定默认的值
12.ALTER TABLE:给表增加列,列只能添加在最后,不能插入到现有的列中13.删除列:ALTER TABLE emp DROP (hiredate)13.MODFIY:修改表中列的数据类型14.INSERT INTO:给数据表增加记录
15.UPDATE....SET:更新表中的记录,如果没有where子句,则表示全表的数据都会更新
16.DELETE:删除表中的记录,如果17.DELETE和TRUNCAT的区别:
delete可以有条件删除,truncat将全表的数据都删除
delete是DML语句,可以回退,truncat是DDL语句,立即生效,无法回退如果是删除全表记录,且数据量较大的时候率低。Day02:
1.LENGTH()函数返回字符串中字符的事务可以SELECT ename,LEGTH(ename) FROM emp 2.DUAL:伪表
为了满足SELECT语法要求,但是要查询的数据有与现有的表中数据又没关系的时候使用。3:
RTIM函数:取出字符串左右两面的给定字符;给定的只能是单一字符LTRIM与RTRIM:分别取出字符串做,右边的字符,可以连续去除左边或右边出现的给定字符的内容,给定字符不关心顺序,只要当前字符串中包含给定的字符去除。
SELECT TRIM('a' from 'aaaatimeaaa') FROM DUAL 4:LPAD,RPAD:补位函数
LPAD(str1,n,str2):显示str1的内容,要求显示n的长度,若str1的长度不足n,则在左侧补充若干个str2字符以达到长度。需要注意str2必须是达内一的字符。
SELECT ename,LPAD(sal,6,'*') FROM emp
delete语句必truncat语句执行效
where子句,则全表的数据都会删除
LPAD常被用来实现“右对齐”LPAD常被用来实现左对齐
当显示的位数不足时补充字符若显示的内容长度超过要显示的位数个字符显示,剩下的会被去除5:SUBSER函数:
用来截取字符串,截取给定字符串,从指定的位置对应的字符开始连续截取指定的字符
SELECT SUBSTR('THINKING IN JAVA',10,2) FROM DUAL(数据库中字符串的首位计数从1开始,要之一与java的区分)第三个参数可以不指定,不指定则截取到末尾。若第三个参数的大小超过字符长度时,也是截取到字符串末尾。第二个参数写0,0也相当于从字符串第一个字符开始截取。负数是从倒数第几个字符开始截取
6:INSERT函数:
INSERT(char1,char2[,n[,m]]):
查看char2在char1中的位置。
1;
1
n:从第几个字符处开始查找,若不写则默认为m:查看出现的第几次,若不写则默认7:数字类型函数
ROUND(N,[,m]):用于四舍五入,对n进行,保留小数点后m位,m可以不屑,不写默认为0,相当于保留到整数,m可以是负数,保留十位以上的数字。SECELT ROUND(45.678,2) FROM DUAL
TRUNC函数,参数的含义与ROUND一致,效果仅仅是不进行四舍五入,所以是截取数字
SELECT TRUNC(45.678,2)FROM DUAL SELECT TRUNC(45.567,-1) FROM DUAL
MOD(m,n):求m/n余数,r若n为0则直接返回m SELECT ename,MOD(SAL,1000) FROM DUAL 8:CEIL,ELOOR:
CEIL:返回大于给定参数的最小整数(向上取整数)SELECT CEIL(45.678)FROM DUAL;//45
FLOOR:返回小于给定参数的最大整数(向下取整)SELECT FLOOR(45.678)FROM DUAL;//45 9:日期
SYSDATE关键字:该关键字对应ORACLE的一个内部函数,表示一个当前系统时间值。
SELECT SYSDATE FROM DUAL;
SYSTIMESAMP:显示当前系统的时间戳类型的值。SELESCT SYSTIMESAMP FROM DUAL
DATE类型的
SECELT INSERT('thinking in java','in',4,2) FROM DUAL
T0_DATE()函数:将一个字符串按照给定的日期格式转换为DATE类型的值,若日期格式字符串中出现了非英文符号的其他字符,这些字符需要使用双引号括起来,否则会抛出日期格式无法识别的错误。
SELECT TO_DATE('2008-08-08','YYYY-MM-DD HH-MI-SS')FROM DUAL 数据库中的日期时刻一比较大小的,时间晚的大,时间早的小;
可以对一个日期的值进行加法操作,结果为计算后的日期。两个日期时间也可以进行减法操作,结果为相差的天数。
SELECT TO_DATE('2008“年08“月”08“日”,'YYYY“年”MM“月”DD“日”“时”MI“分”SS“秒”)FROM DUAL TO_CHAR函数:可以将给定日期按照给定的格式转化为一个字符串SELECT TO_CHAR(SYSDATE 'YYYY-MM-DD HH-MI-SS') FROM DUAL LAST_DAY函数返回给定日期对应月底日期,返回值依然是SELECT LAST_DAY(SYSDATE) FROM DUAL; ADD_MONTHS函数:对给定的日期加上给定的月。
SELECT ename ADD_MONTHS(hiredate,20*12) FROM emp;
MONTHS_BETWEEN函数:计算两个日期之间相差多少个月,计算一句第一个日期减去第二个日期的差计算的。
SELECT ename,MONTH_BETWEEN(SYSDATE,hiredate)FROM emp
NEXT_DAY函数:返回距离给定日期最近的还没有过的周几是哪天,若给定的日期与要计算的周几正好是一天,则算出的是下周。1表示的是周日,2表示的是周一,以此类推。
SELECT NEXT_DAY(SYSDATE,4)FROM DUAL LEAST,GREATEST函数:LEAST返回给定参数中最小的
SELECT LEAST(SYSDATE,'10-10月-08')FROM DUAL; GREATEST返回给定参数中最大的
SECELT GREATEST(SYSDATE,'10-10月-08)FROM DUAL 参数多少个都可以
EXTRACT:提取当前系统时间中的数据
提取当前系统时间中的年:SELECT EXTRACT(YEAR FROM SYSDATE)FROM DUAL; 10:空值操作
SELECT *FROM student WHERE gender IS NOT NULL NULL与任何数字的运算结果都是空值函数
NVL(arg1,arg2)该函数会判断第一个参数是否为NULL,若是,该函数返回第二个参数的值,否则就将第一个参数值返回,所以该函数的作用是将NUL值替换为一个非NULL值
SELECT ename,sal,comm,sal+NVL(comm,0) FROM emp;
NULL
DATE类型。
HH24
NVL2(arg1,arg2,arg3)当arg1不为NULL时,显示arg2,是NULL显示arg3 SELECT ename,NVL2(comm,'有奖金','没有奖金')FROM emp; SELECT ename,NVL2(comm,sal+comm,sal) FROM emp; 补充:
1.CONCAT和“||”:返回两个字符串链接后的结果
2.LENGTH:用于返回字符串的长度,如果字符出为VARCHAR2返回的是实际长度,如果字符类型为CHAR,长度还要包括后补的空格3.TRIM经常用来截取字符串前后的空格Day03:
1.当SELECT语句中要查询的内容不是单纯的子句,而是一个函数或者是一个表达式时,查询的结果集中对应的该字段的字段名就是函数或者是表达式,这就不便于读取了,为此我们会这样的列加上一个别名,使得查询出来该字段的名字为这个别名增加了可读性,甚至在子查询中对这样的情况还要求必须写别名。别名可以在字段之后使用空格分隔开,然后定义或者是在字段名之后使用“然后在后面定义,但通常不需用使用“AS”SELECT ename,sal*12 “sal” FORM emp
别名的书写不区分大小写,且不能使用空格,若有需要在别名中区分大小写或者加空格,那么别名需要被双引号括起来。
2.WHERE子句,与DML中一致,WHERE是用来限定条件的。在SELECT语句中使用,可以只将满足WHERE要求的记录查询出来查看10号部分的员工信息:
WHERE *FROM emp WHERE deptno = 10; 查看职位是SALESMAN的员工信息
SELECT *FROM emp WHERE job=‘SALESMAN'
3.AND的优先级高于OR,所以提高优先级可以使用括号。SELECT ename,job,sal FROM emp WHERE sal>1000 AND(job='SALESMAN' OR job=’CLERK‘)4.LIKE关键字,用于模糊查询字符串内容通配符:
%:0到多个任意字符_: 1个任意字符5.IN(list)
:
OR不可代替的
判断指定的内容的值是否等于列表中任意一项
IN常被用作判断指定值是否与子查询的结果内容一致,这是NOT IN(list)
:
判断指定内容的值不等于列表中任意一项查看职位是MANGER或是CLERK的员工信息
AS”
SELECT ename,job,sal FROM emp WHERE job IN('MANGER','CLERK') 6.BETWEEN...AND...:判断指定内容的值在一个区间范围内工资在1500到3000之间的员工信息
SELECT ename,sal FROM emp WHERE sal BETWEEN 1500 AND 3000;7.ANY与ALL
判断指定内容>,>=,<,<=一个列表使用举例:
>ANY:大于列表中的其中之一,所以大于最小的即可>ALL:大于列表中所有,所以必须大于最大的 SELECT empno,ename,job,sal,deptno FROM emp WHERE sal> ANY(3500,4000,4500) ANY与ALL列表通常不会写几个数据,否则没有意义,通常别表中是一个查询的结果,所以她们常用在判断子查询结果中使用 8.WHER语句可以使用函数或者表达式的结果作为过滤条件 SELECT ename,sal,job FROM emp WHERE UPPER(ename) = UPPER('rose'); SELECT ename,sal,job FROM sal*12>50000 9.DISTINCT关键字 去除重复行,DISTINCT后面的字段相同的将在查询结果中被去除查看公司有哪些职位? SELECT DISTINCT job FROM emp DISTINCT关键字必须紧跟在SELECT关键字之后。 DISTINCT后面可以是多个字段,若是多个字段,那么则是这些字段值的组合没有重复。10.排序 ORDER BY语句:用来排序查询结果集,ORDER BY 子句必须写在SELECT语句的最后面 ORDER BY 可以根据后面指定的字段的值进行升组或是降序排序 降序使用DESC,升序使用ASC,但升序ASC通常不写,因为默认的就是升序。若按照多字段排序时,排序的优先级是按照第一个字段的排序方式排列,然后若第一个字段值一样,那么这些记录在按照第二个字段的排序方式排列,以此类推。SELECT ename,deptno,sal FROM emp ORDER BY deptno DESC,sal DESC 11.聚合函数 又叫多行函数,分组函数 作用:将若干行记录进行统计,然后产生一个结果。MAX( ) MIN( ) 统计指定内容中所有参与记录中的最大值与最小值查看公司中最高工资与最低工资 SELECT MAX(sal) max_sal,MIN(sal) min_sal FROM emp AVG( ) SUM( ) 统计平均值和总和 聚合函数忽略NULL值。若希望NULL值的记录参与统计,可以使用NVL函数现将这些记录转换为非NULL值 SELECT NVG(NVL(comm,0))FROM emp COUNT( ) 该函数统计的是非空记录有多少条,而并不关心具体每条记录的值是多少。SELECT COUNT(*) FROM emp 12.GROUP BY子句 GROUP BY 关键字后面可以跟着若干个字段,作用是根据给定的字段值看作一组若是多个字段,则是这些字段值的组合相同的记录看作一组。 SELECT语句中若使用了组函数,那么不再组函数中的其他字段必须出现在BY子句中! 查看每个部门的最高工资,最低工资,平均工资以及工资的总和 SELECT MAX(sal),MIN(sal),AVG(sal),SUM(SAL),deptno FROM emp GROUP BY deptno 查看公司每个职位都有多少人? SELECT COUNT(*),job FROM emp GROUP BY job WHERE语句不允许使用分组函数; 例:我们若想员工工资大于2000,这说明我们已经将表中的数据查询出来了,并先进行统计,在统计的基础上在进行判断。而WHERE 的过滤实际是在查询表的过程中进行的,表中的数据查询出那条记录石油WHERE的判断为准的,所有这里的where已经在实际需要盘读那的地方之前就进行完毕了 HAVING 子句,该子句必须跟在GROUP BY 子句之后不能单独定义,作用实在分组后,做统计,并用统计结果进行过滤 SELECT MAX(sal),MIN(sal),deptno FROM emp GROUP BY deptno HAVING AVG(sal)>2000 13.关联查询 联合多张表进行查询,需要注意的是,N张表关联查询至少要有N-1个连接条件。连接条件的目的在于让数据库知道表中的记录与另一张表中的记录是如何对应上的 查看SALES部门的员工名字 SELECT emp.ename FROM emp,dept WHERE emp.deptno=dept.deptno AND dept.dname='SALES' 查看每个员工的名字以及部门的名称以及所在地 GROUP SELECT e.name,d.dname,d.loc FROM emp e,dept,d WHERE e.deptno= d.deptno 不添加连接条件,或者是链接条件无效,都会产生笛卡尔积。笛卡尔积会产生大量无用的关联。对于系统资源产生严重的破坏,严重时会导致系统瘫痪查看每个员工的名字以及所在部门的名称以及所在地 SELECT e.name,d.dname,d.loc FROM emp e JOIN dept d ON e.deptno=d.deptno 这样写的好处在于连接条件定义在条理更清晰 ON子句中,WHERE里只定义过滤条件即可, 还可以将不满足连接条件的数据 外连接:除了将满足条件的数据查询出来以外, 也都查询出来 外连接分为,左,右,全外连接 左外连接:以左边的表为主,左边表中的所有记录都查询出来,的记录时,来自右边的表中的字段全部为NULL 右外连接:右表为主,左边补 NULL NULL 全外连接:哪边不满足连接条件,哪边补 当有不满足条件 自连接:自己表中的一条数据对应自己表的多条数据。自连接为了解决数据一样,但是又存在父子关系的情况,而且层级关系中有多少层不确定的情况。自连接接单的说就是解决了树状结构的数据关系。查看员工,以及其上司的名字? SELECT e.name,m.ename FROM emp e JOIN emp m ON e.mgr=m.empno 补充: 1.查询语句执行的顺序: 查询语句依次执行的顺序依下列子句的次序: 1.from子句:窒息该顺序从后往前,从左到右。数据流较小的表尽量凡在后面2.where子句:执行顺序为自下而上,从右到左。将能够过滤掉最大数量记录的条件鞋子where子句的最右边 3.group by--执行的顺序从做往右分组。最好在要group by之前过滤掉 group by前使用where将不需 4.haing子句:消耗资源。尽量避免使用,having会在检索出记录之后对结果集进行过滤,需要排序等操作。 5.select语句:少用*号,尽量取字段名称。oracle在解析的过程中,通过查询数据字典将*依次转换为所有的列名,消耗时间6.order byDay04: 1.子查询的作用是为其他SQL语句提供数据,以便其他SQL可以根据该数据进行操作。 子查询可以嵌套在DQL,DML,DDL中使用,最常见的地方在谁的工资比CLARK的工资高: DQL中使用。 子句:执行顺序为从左到右,消耗资源 SELECT ename,sal FROM emp WHERE sal>(SELECT sal FROM empWHERE ename= 'CLARK') 查看与JONES相同部门的员工? SELECT ename,sal,deptno FROM emp WHERE deptno=(SELECT deptno FROM emp WHERE ename='JONES') DDL中使用子查询:删除CLARK所在部门的员工 DELETE FROM emp WHERE deptno=(SELECT deptno FROM emp WHERE ename='CLARK'); 提高CLARK所在部门员工工资的20% UPDATE emp SET sal*1.2 WHERE deptno=(SELECT dptno FROM emp WHERE ename='CLARK') 查找薪水比公司平均薪水高的员工 SELECT ename,sal FROM emp WHERE sal>(SELECT AVG(sal) FROM emp) 查看与SALESMAN不同职位但是相同部门的其他员工 SELECT ename,deptno FROM emp WHERE deptno IN(SELECT deptno FROM emp WHERE job=’SALEMANS'); 查看谁的工资毕20号部门随便的一个员工工资高 SELECT ename,sal,deptno FROM emp WHERE sal>ANY(SELECT sal FROM emp WHERE deptno=20); 2.EXISTS关键字 用在WHERE子句中,气候要跟一个子查询,而EXISTS是返回为TRUE取决于后面的子查询是否能查询到数据。查看员工的部门信息? SELECT deptno,dname FROM dept d WHERE EXISTS(SELECT *FROM emp e WHERE d.deptno=e.deptno) 查询列出最低薪水高于部门 30的最低薪水的部门的最低薪水? SELECT MIN(sal),deptno FROM emp GROUP BY deptno HAVING MIN(sal)>(SELECT *FROM emp WHERE deptno=30); 多行子列查询,通常可以把它看作一张表对待,定义在外层查询的使用。 查看薪水比本部门平均薪水高的员工信息 SELECT e.name,e.sal,e.deptno FROM emp e(SELECT deptno,AVG(sal) avg_sal FROM emp GROUP BY deptno)t WHERE e.sal>t.avg_sal AND e.deptno=t.deptno; 在SELECT语句中也可以使用子查询,是外连接的一种写法SELECT e.ename,e.sal(SELECT d.dname FROM dept d WHERE d.deptno=e.deptno)dname FROM emp e; 3.分页查询 FROM子句中 分页的目的是,当我们的数据;量过大的时,若一次性全部查询出来,会对系统资源造成不必要的开销,而且处理速度会变慢,为此我们可以分段式的将数据一点一点的取出。 分页的语句SQL没有意义,所以不同的数据库分页语句不一样。 ROWNUM:伪例,并不是表中的一个真实的字段,但是在任何表中查询中都可以使用该列,该列的值的结果集每一条记录编一个行号。只要可以查询出一条记录该字段的值就会+1.行号从1开始。 由于只有从表中查询一条数据,ROWNUM才会使用1进行标号,然后其自动涨为2.所以,不要在第一次查询数据使用ROWNUM编号的时候在WHERE中做大于1以上的数字盘读那,否则会查询不处理任何数据! ROWNUM一开始不大于1,所以WHERE不满组条件,不满足WHERE条件就查询不出来数据ROWNUM就不会涨,不涨就不大于1,所以WHERE不满足条件... 所以下面操作查不到数据 SELECT ROWNUM,ename,sal,job,deptno FROM emp WHERE ROWNUM>1; SELECT *FROM(SELECT ROWNUM rn,ename,sal,job,deptno BETWEEN 6 AND 10; 分页的同时,数据还有排序的需求时,查看公司排名在 FROM emp) t WHERE t.rn 6-10为的员工信息 由于使用ROWNUM编号实在查询的过程中完成的,而排序是在查询出数据以后进 行的,所以这就导致排序之前的编码就没有意义了。下面并不会得到实际想要的数据: SELECT *FROM(SELECT ROWNUM rn,ename,sal,job,deptno DESC)t WHERE t.rn BETWEEN 6 AND 10; 所以若有排序需求,分页需要三次查询猜可以实现:1:排序2:编号3:取范围 SELECT * FROM(SELECT ROWNUM rn,t.* FROM (SELECT ename,sal,job,deptno FROM emp ORDER BY sal DESC ) t) WHERE rn BETWEEN 6 AND 10 分页,BETWEEN中两个数学公式;page:页数 pagesize:每页显示的体哦啊数根据上面的两个值计算:start:(page-1)*pagesize+1 end:page*pagesize 4.DECODE FROM emp ORDER BY sal GROUP BY中使用DECODE函数可以将字段的不同的记录看作一组,只要使用DECODE将需要划分为一组的不同值转变为相同的值即可SELECT COUNT(*) job_cnt,DECODE(job,'ANALYST', 'VIP','MANAGER', 'VIP', 'OPERATION') FROM emp GROUP BY DECODE(dname,'OPERATIONS','VIP','MANAGER','VIP','OPERATION');SELECT ename,sal,deptno,ROW_NUMBER() OVER(PARTITION BY deptno ORDER BY sal DESC)rank SELECT deptno,dname,loc FROM dept ORDER BY DECODE(dname,'OPERTIONS',1,'ACCOUNTING',2,'SALES',3); 4.ROW_NUMBER函数,可以根据指定的字段分组,再根据指定的字段排序,然后生成组内连续且唯一的数字查看每个部门的工资排名情况 SELECT ename,sal,deptno,ROW_NUMBER() OVER(PARTITION BY deptno ORDER BY sal DESC) rank FROM emp; 5.RANK函数:生成组内不连续且不唯一的函数 SELECT ename,sal,deptno,RANK() OVER(PARTITION BY deptno ORDER BY sal DESC) rank FROM emp 6.DENSE——RANK函数:生成组内连续但不唯一的函数 SELECT ename,sal,deptno,DENSE_RANK() OVER(PARTITION BY deptno ORDER BY sal DESC)rank FROM emp; 7.ROLLUP 高级分组函数 ROLLUP函数用在GROUP BY子句中,ROLLUP函数中可以传入若干个参数,作用是参数逐个递减,每次进行一回分组并统计结果,然后将这些结果并在一起显示GROUP BY ROLLUP(a,b,c) 相当于: GROUP BY a,b,c UNION GROUP BY a,b UNION GROUP BY a UNION 全表(不写GROUP BY)统计8.CUBE()高级分组函数 会将给定的字段的每一种组合都进行一次分组,然后将所有结果并在一起显示。分组的次数是2的参数个数的次方9.GROUPING SETS高级分组函数 可以按照给定的分组方式进行分组,然后结果并在一起显示。 每个参数表示一种分组方式,参数可以使用括号将要分组的字段组合括起来表示一种Day05: 1.试图:也称为虚表(虚拟的表),试图实在SQL语句中体现的地方不一致,但是其不是数据库真实存在的表而是一个select语句查询的结果集。所有试图中有那些字段,对应的都有那些记录完全取决与select语句当我们通过select语句查询试图时,数据库会新使用该视图的对应select语句将数据库查询处理,然后将这个结果集当作一张表,在我们进行我们的select语句,将要查询数据查询出来,所有,所以试图就是from中使用子查询试图中对应的子查询中,查询的字段若有表达式函数,那么必须添加别名。单纯的字段也可以添加别名。这样创建出来的试图对应的字段就是该别名对试图进行DML操作只能对简单试图进行。 对视图进行DML操作就是对试图数据来源的基表进行的向试图里插入数据,数据实际上是插入数据来源的基表中,能在视图看到的字段会有值,其他的都是默认的值更新试图的数据,就是更新基表中对应的数据 与INSERT一样,更新试图数据有可能导致视图无法再次查到该数据 DELETE试图中的数据就是删除表中对应的数据但是删除只能呢个删除试图中能看到的数据。 WITH CHECK OPTION检查选项当试图添加该选项后,对视图进行INSERT:必须插入的数据试图可见对视图进行UPDATE:必须更新后试图对其可见WITH READ ONLY 选项: 将试图设置为只读,那么就不孕需对视图进行定义复杂视图 定义一个可以查看个部门薪资的情况2.序列 作用:根据设定的方式,生成一组数字。通常序列被用来为表中的主键字段提供序列有两个伪列: NXETVAL(nextval0向序要下一个数字 若序列还没有生成过数字。则第一次获取的数字为START WITH指定的数字,否则是用之前数字加上步长值,一旦获取下一个数字,就无法在通过序列获取之前的数字 CURRVAL:向序列要最后一个值,该位列可以调用若干次,每次返回的数字一样,并不会导致获取下一个值。除非使用NEXTVAL需要注意,序列刚创建完毕后,至少要调用NEXTVAL一次生成呢个数字后才可以使用该序列 DML操作了 查看数据字典,得知用户创建过的所有数据库对象 而且,新增的记录只 3.索引:提高查询效率 索引的算法与用于完全由数据库自行决定4.约束 列级约束,表级约束 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- igat.cn 版权所有 赣ICP备2024042791号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务