什么网站做简历比较好,昆明公司网站优化,沈阳网站建设公司熊掌号,玉名是什么意思一、入门oracle有四个用户#xff0c;分别为sys、system、sysman和scott,其中sys是oracle权限最高的用户#xff0c;类似于Linux系统的root#xff0c;scott是示例用户#xff0c;上课就以这个用户里的三张员工表empno、dept、salgrade作为示例来授课。启动服务1. 快捷键ct…一、入门oracle有四个用户分别为sys、system、sysman和scott,其中sys是oracle权限最高的用户类似于Linux系统的rootscott是示例用户上课就以这个用户里的三张员工表empno、dept、salgrade作为示例来授课。启动服务1. 快捷键ctrlaltdel打开任务管理器2. 选择服务3. 启动OracleServiceXXXX(XXXX是全局名字)和oracleXXXXXXXListener服务(选中一个按o快速找到哦)这个非常重要(important),没有启动一切免谈(记笔记.....)验证数据库是否创建成功winRcmd打开windows命令行控制台(小黑窗)C:\User\PCsqlplus /nolog若出现SQL则证明数据库创建成功登陆语法格式conn[ect] 用户名/口令 [AS SYSDBA | AS SYSOPER]注中括号表示可以省略登陆sys用户conn /as sysdba(用户名和口令都为空)只能以“sysdba”或者“sysoper”系统身份登录 不能用 normal。登陆scott用户刚开始scott用户默认被锁定需要登陆sys用户之后执行alter user scott account unlock;并重新设置口令即可登陆默认口令是tiger登陆conn scott/tiger(password)虚表虚表不是真实存在的表只有一个字段和一行记录当需要查询且不想从已存在的表中获取数据时便可以使用虚表更详细的解释你可以百度一下。二、基础结构查询语言的分类考试好像一直考应该蛮重要的吧。SQL相关概念和规则子句关键字加其他语法元素例如select * 是一个子句from table是一个子句。列别名列名 as 列别名 or 列名 列别名需要注意的是若包含空格、需区分大写以及含特殊字符时需加引号关键字通常使用大写其他语法元素小写通常以子句为单位进行分行。NULL空值是一种无效的、未被赋值的、未知的或不可用的值。任何包含空值的算术表达式运算结果均为空值。(这一点需要注意)处理空值的函数nvl(comm,0)若comm不为空就返回comm否则返回0nvl2(expr1,expr2,0)若expr1不为空就返回expr2,否则返回0NULLIF(expr1,expr2)数据类型需一致相等返回null,否则返回第一个表达式coalesce(expr1,expr2,...)返回第一个非空参数数据类型需一致特殊运算符between and 判断要比较的值是否在某个范围内。 eg: sal [not] between 1500 and 2000in 判断要比较的值是否和集合列表中的任何一个值相等。 eg: sal [not] in (1500,1600,1800)like 判断要比较的值是否满足部分匹配。 eg: ename [not] like %T_ 注%代表任意多字符(0)下划线代表一个任意字符is null 判断要比较的值是否为空值NULL 。 eg: where comm is [not] null运算符优先级()、算术运算符(-*/)、连接运算符(||)、比较运算符( 不等于)、特殊比较运算符(like、in、between and、is null)、逻辑运算符(notandor)消除重复行在select字句中使用关键字DISTINCT可消除重复行。eg select distinct deptno from emp;原义字符串和连接运算符原义字符串原义字符串是包含在SELECT列表中的一个字符、一个数字或一个日期。日期和字符字面值必须用单引号引起来。每个原义字符串都会在每个数据行输出中出现。连接操作符用于连接列与列、列和字符形式上是以两个竖杠||用于创建字符表达式的结果列显示表结构打开plsqldev(红色油桶)打开Command Window,或者在windows控制台上操作也行。SQLdesc tablename;SQL六个常用的执行语句select*from tablewhere conditiongroup by columnhaving conditionorder by column [asc|desc] asc升序desc是降序执行顺序:from where group by having select order by三、函数单行函数1. 单行函数返回一个结果2. 支持嵌套3. 单行函数可以放在select、where、order by子句中4. 单行函数对单行数据操作字符函数(大小写转换函数和字符处理函数)* lower(列名|表达式)将大写或大小写混合的字符转换成小写* upper(列名|表达式) 将小写或大小写混合的字符转换成大写* initcap(列名|表达式) 将每个单词的第一个字母转换成大写其余的字母都转换成小写(这个不要漏了哦)* concat(列名1列名2)连接两个字段或表达式类似于||* substr(列名|表达式,n1,n2)返回第一个参数中从第n1位开始 长度为n2的子串 。* length(column | expression)取字符长度* instr(s1,s2,[,n1],[n2]) 返回s1中子串s2从n1开始第n2次出现的位置。n1,n2默认值为1* lpad(s1,n1,s2)返回s1被s2从左面填充到n1长度后的字符串 。* rpad(s1,n1,s2) 返回s1被s2从右面填充到n1长度后的字符串。* trim去除字符串头部或尾部(头尾)的字符格式:TRIM([leading | trailing | both] character from source) 注意第一个参数和from* replace(s1,s2,s3) : 把s1中的s2用s3替换。注意谁替换谁用的比较多的是concat()、substr()、instr()、length()数值函数round(numn)将num四舍五入到小数点后n位trunc(numn)将num截取到小数点后n位mod(numn)取num对n取余日期函数日期函数默认格式是DD-MM-RRSYSDATE是系统当前时间日期可直接加减数值表示加减对应天数两个日期相减之后得到相隔的天数除以7是week,除以24是hour,可以转化成相应单位进行相加减看图判断年份RR 日期格式用来判定按照DD-MM-RR格式给定的日期实际代表的日期是多少从第一个表可以看出YY格式的年份和当前的年份属于同一个世纪不用做任何判断。RR格式的年份判断规律同小同大均为当前世纪前小后大为上世纪前大后小为下个世纪1.当前日期为2015年指定日期格式为DD-MON-RR,指定日期为01-1月-01该日期实际所代表的日期为当前日期为小指定日期为小所以当前日期是2001年(当前世纪)2.当前日期为2015年指定日期格式为DD-MON-RR,指定日期为01-1月-95该日期实际所代表的日期为当前日期为小指定日期为大所以实际日期是1995年(上个世纪)3.当前日期为1998年指定日期格式为DD-MON-RR,指定日期为01-1月-95该日期实际所代表的日期为当前日期为大指定日期为大所以实际日期是1995年(当前世纪)4.当前日期为1998年指定日期格式为DD-MON-RR,指定日期为01-1月-01该日期实际所代表的日期为当前日期为大指定日期为小所以实际日期是2001年(下个世纪)months_between(sysdate,hiredate)返回两个日期类型数据之间间隔的自然月数select ename,job,months_between(sysdate,hiredate) months --当前系统时间与入职时间的间隔月数from emporder by monthsadd_months(sysdate,n)返回指定日期加上n个月后的日期select empno,ename,job,add_months(hiredate,3) date --入职三个月后的日期from empnext_day返回某一日期的下一个指定日期(有点绕结合例子来看就懂了)select next_day(sysdate,星期一) NextMonday --下个周一是什么日期from dual; --虚表last_day返回指定日期当月的最后一天的日期select last_day(sysdate) LastDay from dual; --这个月的最后一天是什么日期round(sysdate[,format])将date按format格式进行四舍五入默认四舍五入为最近的天format世纪CC,年YY月MM,日DD小时HH24分MI秒SS(这个需要稍微记一下)select ename,job,round(hiredate,MONTH) --入职日期按月四舍五入from emp;trunc(sysdate[,format])将date按format格式进行截断和round差不多--查询81年入职的员工姓名入职日期按月截断的日期。select ename,trunc(hiredate,MONTH)from empwhere substr(hiredate,-2,2) 81;extract([YEAR | MONTH | DAY] from date)返回日期类型数据中的年份、月份和日期--部门编号是10的部门中所有员工入职月份。select extract(month from hiredate) from emp;转换函数通常需要在字符类型、日期类型、数值类型之间进行显式转换转换函数及对应关系如下图所示。to_char(data,format)用于日期型需要注意的是format大小写敏感可通过format提取日期的年or月or日下面表格的内容可以稍微记一下select empno,ename,job,to_char(hiredate,DD MONTH YYYY) hiredate --17 November 1981from emp;to_char(number,format)用于数值型select to_char(sal,$99,999) salaryfrom emp;to_number(char,format)要转换的char类型数据必须是由数字组成的字符串。to_date(char,format)要转换的char类型数据必须是可以转换成日期的字符。select to_date(2019-1-10,YYYY-MM-DD) from dual;通用函数case函数select ename,deptno,(case deptnowhen 10 then 销售部when 20 then 技术部when 30 then 后勤部else 无end) deptname,from emp;decode函数select ename,deptno,decode(deptno,10, 销售部,20,技术部,30,后勤部无) deptname,from emp;多行函数分组函数分组函数是对表中一组记录进行操作每组只返回一个结果,即首先要对表记录进行分组然后再进行操作汇总每组返回一个结果分组时可能是整个表分为一组也可能根据条件分成多组。min(column)返回每组的最小值适用于任何类型的数据max(column)返回每组的最大值适用于任何类型的数据avg(column)返回每组的平均值只能够对数值类型的列或表达式操作sum(column)返回每组的总和只能够对数值类型的列或表达式操作count(column)返回满足条件的每组记录条数查询职位以SALES开头的所有员工平均工资、最低工资、最高工资、工资和。select avg(sal),min(sal),max(sal),sum(sal)from empwhere job like SALES%;组函数中DISTINCTDISTINCT会消除重复记录后再使用组函数select count(distinct deptno) from dept;分组函数中空值处理除了count(*)之外其它所有分组函数都会忽略列中的空值然后再进行计算。select avg(comm) from emp; --avg(comm) 500在分组函数中使用NVL 函数可以使分组函数强制包含含有空值的记录select avg(nvl(comm,0)) from emp; --avg(nvl(comm,0)) ---157需要注意的几点select 子句中出现的除分组函数之外的列都应写在group by子句中分组函数的筛选判断放在having子句中不能放在where子句中上面这个图很重要多看几遍多表连接多表连接指的是在多个表之间通过一定的连接条件使表之间发生关联进而能从多个表之间获取数据语法格式SELECT table1.column, table2.columnFROM table1, table2WHERE table1.column1 table2.column2;三点要求* 在 WHERE子句中书写连接条件。* 如果在多个表中出现相同的列名则需要使用表名(或表别名)作为来自该表的列名的前缀。* N个表相连时至少需要N1个连接条件。最后一个条件需要特别注意一下笛卡尔积什么是笛卡尔积第一个表中的所有行和第二个表中的所有行都发生连接。什么时候会产生笛卡尔积连接条件被省略或者无效时简而言之就是没有连接条件。如何避免笛卡尔积在where子句中包含有效的连接条件当from后面有多个表时无论题意如何连接条件一定要有且需要N-1个(N为表的数量)等值连接两个部门有相同的列即可用等值连接而且大概率会是用等值连接select empno,ename,job,dname,locfrom emp,deptwhere emp.deptno dept.deptno;非等值连接两个表不存在相同的列但两个表的列存在某种不可告人的关系select ename,job,gradefrom emp,salgradewhere sal between losal and hisal;--losal最低工资 hisal最高工资自身连接自身连接即自己跟自己连接以别名区别查询每个员工的姓名和直接上级姓名SELECT worker.ename|| leader is ||manager.enameFROM emp worker, emp managerWHERE worker.mgr manager.empno;外部连接在两个表进行等值连接时有些记录按照连接条件没有连接上可在缺少匹配值的一边加上()语法符号()所在边的表增加一个“万能”的行这个行全部由空值组成。它可以和另一边的表中所有不满足连接条件的行进行连接。由于这个“万能”行的各列全部是空值因此在连接结果中来自“万能”行属性值全部为空值。多表连接的写法分析要查询的列都来自于哪些表构成FROM子句;分析这些表之间的关联关系如果表之间没有直接关联关系而是通过另一个中间表关联则也要在FROM子句中补充中间关联表;接下来在WHERE子句中补充表之间的关联关系通常N个表至少要有N-1个关联关系;分析是否还有其它限制条件补充到WHERE子句的表关联关系之后作为限制条件;根据用户想要显示的信息补充SELECT子句。分析是否有排序要求如果排序要求中还涉及到其它表则也要进行第2步补充排序字段所在的表并且添加表之间的关联关系;表别名在多表连接且有相同列时使用表别名可以区分来自不同表但是名字相同的列。在定义表别名之后在对列进行限制时只能使用表别名不能使用表名。SQL:1999语法的连接语法这张图包含了SQL99所有连接方式的语法看完后面的再来看这个表就不会一脸懵逼了交叉连接交叉连接是两个表进行交叉相乘和笛卡尔积的效果一样使用cross join子句。SELECT emp.empno,emp.ename,emp.sal,emp.deptno,dept.locFROM empCROSS JOIN dept;自然连接自然连接类似于等值连接对两个表之间所有相同名字和数据类型的列进行等值连接使用natural join子句连接。SELECT empno,ename,sal,deptno,locFROM empNATURAL JOIN dept;USING子句自然连接是使用所有名称和数据类型相匹配的列作为连接条件而USING子句可以指定用某个或某几个相同名字和数据类型的列作为连接条件。SELECT e.ename,e.ename,e.sal,deptno,d.locFROM emp e JOIN dept d USING (deptno)WHERE deptno 20 ;使用USING子句创建连接时应注意以下几点如果有若干个列名称相同但数据类型不同自然连接子句可以用USING子句来替换以指定产生等值连接的列。如果有多于一个列都匹配的情况使用USING子句只能指定其中的一列。USING子句中的用到的列不能使用表名和别名作为前缀。NATURAL JOIN子句和USING子句是相互排斥的不能同时使用。ON子句自然连接条件基本上是具有相同列名的表之间的等值连接如果要指定任意连接条件,或指定要连接的列则可以使用ON子句用ON将连接条件和其它检索条件分隔开其它检索条件写在WHERE子句ON子句可以提高代码的可读性。codeSELECT e.empno, e.ename, e.deptno, d.deptno, d.locFROM emp eJOIN dept dON (e.deptno d.deptno); --我觉得很像where左外连接左外连接以FROM子句中的左边表为基表该表所有行数据按照连接条件无论是否与右边表能匹配上都会被显示出来是不是觉得很像外部连接。SELECT e.ename,e.deptno,d.locFROM emp eLEFT OUTER JOIN dept dON (e.deptno d.deptno);右外连接右外连接以FROM子句中的右边表为基表该表所有行数据按照连接条件无论是否与左边表能匹配上都会被显示出来。SELECT e.ename,e.deptno,d.locFROM emp eRIGHT OUTER JOIN dept dON (e.deptno d.deptno);全外连接返回两个表等值连接结果以及两个表中所有等值连接失败的记录SELECT e.ename,e.deptno,d.locFROM emp eFULL OUTER JOIN dept dON (e.deptno d.deptno);