




已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Day01SQL(structure query language)DB databaseDDL(data definition language)数据定义语言:create table/alter talbe/drop talbecolumn,data type,widthconstraintDML(Data manipulation language)数据操作语言:insert,update,delete(增,删,改)rowTCL(transaction(事务) control language)事务控制语言:事务核心语句:commit提交、rollback回滚DCL(grant授权 revoke收回权限)DQL(data query language)数据查询语言:selectR(关系型)DBMS数据库产商 数据库名版本oracle oracle10g oracle10.2.0IBM db2MS SQL serverSYBASE SEMYSQLORACLESID 数据库对应的实例的名字(即一个具体数据库的名称)创建数据库其实是创建了:数据文件,日志文件,操作文件。 SGA进程 instance与应用程序1.空值(NULL)在输入数据时,该字段没有指定值,并且没有空值不等于0空值不等于空格算术表达式中包含空值导致结果为空在算术表达式中包含空值需要用空值转换函数coalesce处理2.空值转换函数coalesce函数(通用)数据类型可以是数值number、字符character、日期date数据类型必须匹配NVL(p1,p2)函数(orale专用)nvl(p1,p2)if p1 is null thenreturn p2;elsereturn p1;end if;3.拼接运算符用于连接多个字段的值拼接在一起,特殊符号放在单引号里3.文字字符串用 单引号表示4.distinct关键字,去掉重复值从distinct开始到from中所有字段的联合中有重复的去重(注意,是联合起来的重复)distinct后跟多跟distinct应用到select后面所有列,所有列联合起来唯一如果select后面跟distinct关键字,一定是直接跟在select后面,前面没有任何内容。5.where的作用用where子句对表里的记录进行过滤1.)where子句跟在FROM子句之后2.)where子句后跟条件表达式列名、表达式(比如:salary12)、常 量比较运算符文字值3.)where子句后不能跟别名总结:1)where子句执行在前,select执行在后,别名不能放在where子句2)select salary*12 ann_sal from s_emp where salary*121200select salary*12 ann_sal from s_emp where salary1000(能提搞查询效率)salary可建立索引,索引的目的,提高查询效率3)where子句能不用表达式尽量不用表达式;4)where子句中的列为字符类型字符串必面用单引号括起来字符串是大小写敏感6.比较和逻辑运算符1)逻辑比较运算符 2)SQL比较运算符between and :表示一个范围,是闭区间orin表示一个集合,是离散值,含义为等于其中任意一个值,等价于 :anyin(X,Y,Z):表示符合X,Y,Z的 。等价于 dept = any(X,Y,Z),表示等于任意一个7.LIKE运筧符在字符串比较中,可用like和通配符进行查找通配符种类:与表示0或多个字符表示任意单个字符8.is null运算符is null是判断是否为空测试NULL值需要用IS NULL运算符NULL不能用等于()和不等于()跟任何值比较,包括它自身。所以 ,不能使用或来测试一列是否有空值9.is not null运算符表示不为空10.运算符的否定形式逻辑比较运算符!SQL比较运算符NOT BETWEEN ANDNOT IN ALL(并且关系,注意别让NULL在NOT IN里出现) IN(或者关系) NOT LIKENOT IS NULL11.ORDER BY子句用ORDER BY 子句查询出来的结果集进行排序ASC:升序,默认DESC:降序ORDER BY是SELECT语句中的最后一个子句ORDER BY执行于SELECT语句之后ORDER BY 之后可以跟字段名,别名,字段顺号,表达式(尽量不用)NULL值在排序中的显显升序显示在最后除序显示在前面(NULL值表示无穷大)按多列进行排序ORDER BY 后面的列可以不出现在SELECT后面Day02一、SQL函数的两种类型单行函数 字符类型(character)数值(number)日期(date)转换多行函数(组函数)1.单行函数where 后跟条件表达式,还可以跟单行函数表达式或函数的写法导致索引用不了大小写转换函数LOWER()转小写UPPER()转大写一般用于 insert语句中,便于以后操作(查询)方便,没有大小写限制参数为列名或常量,调常量,用from dual(系统表,只有一条记录)INITCAP()首字线大写concat()拼接 select concat(He,llo, World) Hello from dual;求子串:substr(string,1,3)参数:字符串,起始位,截取个数求长度:length(string)参数:字符串select substr(first_name,length(first_name)-1,2) from s_emp ;左对齐:lpad(string,返回长度,不够就补符号),位数不够的,左边补指定字符select deptno,lpad(deptno,5,) from dept;右对齐rpad()select deptno,rpad(deptno,5,!) from dept;数值函数四舍五入round(数,精度) 如round(45.723,2) 得45.72 round(45.723,1) 得50 round(45.723,1)得46截取trunc(数,起始截取点)如round(45.723,2) 得45.72round(45.723,1)得45-1表示保留到十位数,0保留到个位数,1保留一位小数,依此类推select round(44.723,-1) from dual;40select round(44.723) from dual;45select round(44.323) from dual;44select round(44.323,1) from dual;44.3select round(44.373,1) from dual;44.4系统自动调用的函数(隐式调用,oracle的自动转换函数一般都趋向于字符串转数值)to_number(数字字符),返回数值(注意一定要是数字字符)select to_number(12)*10 from dual;得120select * from test where c1 = 10;select * from test where to_number(c1) = 10;这语句会导致索引用不了,所以表达式一定要做到数据类型匹配。to_number()select to_number(!$,xx) from dual;(xx代表两位十六进制)得171to_char(数值,格式)函数9:代表数字位select to_char(salary,$9) from s_emp;0:当定义宽度大于实际值宽度时,0会被强制显示在前面,以补齐位数select to_char(salary,000,000,00.000) from s_emp;select to_char(salary,909,099,999.990) from s_emp;select to_char(235,900,00.00) from s_emp;:代表美元的货币符号select to_char(salary,$99,999.99) from s_emp;L:本地货币符号select to_char(salary,L99,999.99) from s_emp;(跟环境变量有关)设置中文B HHELLNLSLANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBKexport NLS_LANG设置英文 NLS_LANG=AMERICAN_AMERICA.US7ASCIIexport NLS_LANG直接在SQL环境下alter session set nls_language=simplified chinese;alter session set nls_languageAMERICAN_AMERICA.US7ASCII;C SHELLsetenv NLSLANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBKsetenv NLS_LANG=AMERICAN_AMERICA.US7ASCII.如查显示位数不足(定义宽度小于实际长度),用代替二、多表查询交叉连接,内连接,外连接内连接原理(重要知识点,查看另一文件sql_notes.txt)1.交叉连接corss:实际上是两个表中的记录的笛卡尔积(即两张表组合)列出每个员工在哪个部门select e.first_name,e.dept_id,d.id, from s_emp e cross join s_dept d;(300条记录,s_emp(25)*s_dept(12)=300)问题:每个员工都在好多部门解决方案,用: 表1 join 表2 on 两个表关联字段匹配表达式 select e.first_name,e.dept_id,d.id, from s_emp e join s_dept d on e.dept_id=d.id;另一例题select d.id,, from s_dept d inner join s_region r on d.region_id=r.id;2.内连接等值连接(join):两张表有描述共同属性的列。常见形式为你表的主键和子表的外键相等。非等值连接(join):可以用between and 这样的非等值运算符将两张表中的列写成一个表达式,所谓表之间的关系,实际指表中的行(记录)之间的关系,该关系通过将表中的列写成表达式来体现。自连接(self join):同一张表的列之间的关系实际反映的是同一张表的行(记录)之间的关系;通过给表起别名将同一张表的列之间的关系转换成不同表的列之间的关系内连接中包含有where或and时,都是先连接后过滤原理:t1表和t2表做内连接,连接条件为on t1.c1 = t2.c2,假设t1表做驱动表,t2表做匹配表,记录的匹配过程如下:1、从t1表中读取第一条记录r1,若它的c1值为12、根据该值到t2表中查找匹配的记录,即需要遍历t2表,从t2表中的第一条记录开始,若该记录(r1)的c2列的值=1,我们就说这两条记录能够匹配上,那么t1的r1和t2的r1组合起来,作为结果集里的一条记录,否则不能组合起来,即被过滤掉。3、按照方法2依次将t2表中所有的记录检测一遍,只要匹配就放入结果集中4、从t1表中读取第二条记录,依次重复步骤2和3,产生最终的结果集t1表和t2表做内连接,连接条件为on t1.c1 = t2.c2,假设t1表做驱动表,t2表做匹配表,记录的匹配有如下三种情况:1、t1表中的某条记录在t2中找不到任何一条匹配的记录,那么t1表中的该记录不会出现在结果集中2、t1表中的某条记录在t2表中只有一条匹配的记录,那么t1表中的该记录和t2表中匹配的记录组合成新记录出现在结果集中3、t1表中的某条记录在t2表中有多条匹配的记录,那么t1表中的该记录会和t2表中每一条匹配的记录组合成新记录出现在结果集中4、内连接的核心为任何一张表里的记录一定要在另一张表中找到匹配的记录,否则不能出现在结果集中t1表和t2表做内连接,连接条件为on t1.c1 = t2.c2有两种方式都能得到结果集记录1、一种t1表做驱动表,t2表做匹配表2、另一种t2表做驱动表,t1表做匹配表3、无论哪种方式最终得到的结果集都一样,所不同的是效率练习:Carmen在哪个部门select e.first_name, from s_emp e join s_dept d on e.dept_id=d.id and e.first_name=Carmen;Asia地区有什么部门select from s_dept d join s_region r on d.region_id=r.id and =Asia;Carmen在哪个地区工作select e.first_name, from s_emp e join s_dept d on e.dept_id=d.id join s_region r on d.region_id = r.id and e.first_name=Carmen ;Asia地区有哪些员工select e.first_name from s_emp e join s_dept d on e.dept_id=d.id join s_region r on r.id=d.region_id and =Asia;列出员工名字,工资,工资级别select e.ename,e.sal,s.grade from emp e join salgrade s on e.sal between s.losal and s.hisal; 哪些员工的级别是三级和五级select e.ename,e.sal,s.grade from emp e join salgrade s on e.sal between s.losal and s.hisal and s.grade in (3,5);select first_name,id,manager_id from s_emp; 列出员工名字和领导名字的对应关系(一张表的关系,给表起别名)select m.first_name manager,e.first_name employee from s_emp e join s_emp m on e.manager_id=m.id;哪些人是领导(在上题的基础上,加个distinct)select distinct m.first_name manager from s_emp e join s_emp m on e.manager_id=m.id;找Carman,怎么找回来?用下面知识点解决3.外连接外连接(outer join):(内连接把匹配不上的记录过滤的情况下用外连接)语法及原理:t1表和t2表做外连接,连接条件为from t1 left outer join t2 on t1.c1 = t2.c2,t1表必须做驱动表,t2表做匹配表,记录的匹配过程如下:1、从t1表中读取第一条记录r1,若它的c1值为12、根据该值到t2表中查找匹配的记录,即需要遍历t2表,从t2表中的第一条记录开始,若该记录(r1)的c2列的值=1,我们就说这两条记录能够匹配上,那么t1的r1和t2的r1组合起来,作为结果集里的一条记录,否则不能组合起来,即被过滤掉。3、按照方法2依次将t2表中所有的记录检测一遍,只要匹配就放入结果集中,若扫描完后,t1的r1记录在t2表中找不到任何匹配的记录,t2表中模拟一条null记录与t1表中r1组合起来,放入结果集中4、从t1表中读取第二条记录,依次重复步骤2和3,产生最终的结果集t1表和t2表做外连接,连接条件为from t1 left outer join t2 on t1.c1 = t2.c2,t1表必须做驱动表,t2表做匹配表,1、外连接的结果集=内连接的结果集+t1表中匹配不上的记录和一条null记录的组合2、外连接的核心可以将匹配不上的记录找回来,即一个都不能少t1表和t2表做外连接,连接条件为from t1 right outer join t2 on t1.c1 = t2.c2,t2表必须做驱动表,t1表做匹配表,1、外连接的结果集=内连接的结果集+t2表中匹配不上的记录和一条null记录的组合t1表和t2表做外连接,连接条件为from t1 full outer join t2 on t1.c1 = t2.c2,t2表必须做驱动表,t1表做匹配表,外连接的结果集=内连接的结果集+t2表中匹配不上的记录和一条null记录的组合+t1表中匹配不上的记录和一条null记录的组合select distinct m.first_name manager from s_emp e left join s_emp m on e.manager_id=m.id where m.manager_id is null;select distinct nvl(m.first_name,BOSS) manager from s_emp e left join s_emp m on e.manager_id=m.id; 外连接在什么情况下用:select distinct deptno from emp;dept表(什么东西里没有什么,什么东西里不包含什么,什么东西不是东西等之类的否定的语句,用外连接)哪个部门没有员工(在表dept,emp里操作)一条记录(1514+1)select e.ename,e.deptno,d.deptno,d.dnamefrom emp e right join dept d on e.deptno = d.deptnowhere e.empno is null;where在外连接之后执行,在内连接之前执行and先过滤再连接where先连接再过滤注意:内连接中的and是先连接再过滤结论:外连接+is null用来解决否定问题,不是,不包含,没有。哪些人是员工(哪些人不是领导)?17条记录(4124+17)select m.first_name from s_emp e right join s_emp m on e.manager_id=m.id where e.id is null;哪个部门没有smithselect d.dnamefrom emp e right join dept don e.deptno=d.deptnoand e.ename = SMITHwhere e.empno is null;Day03count统计所有非空值select dept_id from s_emp where dept_id =31;select count(*) from s_emp where dept_id =31;select count(first_name) from s_emp ;select count(first_name) from s_emp where first_name = Carmen;select count(distinct dept_id) from s_emp;有多少个不同职位select count(distinct title) from s_emp;2.group by 列名(,列名,列名)select 列名,组函数from 表where conditiongroup by group_by_expressionHaving gruou_conditionorder by columnwhere先过滤,再group by ,后select根据group by 子句指定的表达式,将要处理的数据(若有)各个职位的平均工资?select title,avg(salary) from s_emp group by title;每个提成有多少人?select commission_pct,count(commission_pct) from s_emp group by commission_pct;分组时,会把NULL值都分加一组;select commission_pct,count(*) from s_emp group by commission_pct;42号部门的平均工资列出平均工资select round(avg(salary) from s_emp where dept_id = 42;列出平均工资与 部门号select dept_id,round(avg(salary) from s_emp where dept_id = 42;出错select dept_id,round(avg(salary) from s_emp where dept_id = 42 group by dept_id;正确结论:若有group by 子句,select后面可跟group by后面跟的表达式以及组函数,其它会报错如果没有group by 子句,select后面有一个组函数,其它都必须是组函数。各个工资级别有多少人select s.grade, count(*) from emp e join salgrade s on e.sal between s.losal and s.hisal group by s.grade; select s.grade, count(*) from emp e right join salgrade s on e.sal between s.losal and s.hisal group by s.grade; 各个部分的平均工资,列出部门名称,地区名称,平均工资select ,,avg(e.salary) from s_emp e join s_dept d on e.dept_id = d.id join s_region r on d.region_id=r.id group by ,;或者select max(),max(),avg(e.salary) from s_emp e join s_dept d on e.dept_id = d.id join s_region r on d.region_id=r.id group by e.dept_id;Asia地区各个部门的平均工资select max(),max(),avg(e.salary) from s_emp e join s_dept d on e.dept_id = d.id join s_region r on d.region_id=r.id and =Asia group by e.dept_id;各个部门不同职位的平均工资select dept_id,title,count(*),avg(salary) from s_emp group by dept_id,title;总结:group by 后可以跟多个列。select * from dept order by dname,deptno desc;HAVING子句的select语句的执行过程行被分组将HAVING子句的条件应用 到每个分组上只有符合HAVING条件的组被保留,再应用SELECT后面的组函数对每组的数据进行处理各个部门的平均工资1500;select dept_id,avg(salary) from s_emp group by dept_id having avg(salary)1500;除了32,42部门,其它各个部门的平均工资select dept_id,avg(salary) from s_emp group by dept_id having dept_id not in (32,42);先分组再过滤select dept_id,avg(salary) from s_emp where dept_id not in (32,42) group by dept_id ;先过滤再分组(效率高)总结:where子句和having子句的区别:where子句 过滤的是行(记录),后跟单行函数having子句 过滤的是分组以后的聚合结果,只能包含group by后面的表达式和组函数where执行 在前 ,having执行在后where和having子句都不允许用列别名3.子查询子查询就是在一条SQL语句加入SELECT语句语法:SELECT select_listFORM tableWHERE expr operator(SELECT select_list FROM table)先执行子查询,子查询的返回结果作为主查询的条件,再执行主查询 子查询只执行一次若子查询的返回结果为多个值,ORACLE会去掉重复值之后,再将结果返回给主查询谁的工资是最低的?select first_name,salary from s_emp where salary in (select min(salary) from s_emp);哪个部门的平均工资比32部门的平均工资高?select dept_id,avg(salary) from s_emp group by dept_id having avg(salary) (select avg(salary) from s_emp where dept_id = 32);哪个部门的平均工资比32部门的平均工资高,并列出部门名字与地区名字?select max(),max(),e.dept_id,avg(salary) from s_emp e join s_dept d on e.dept_id=d.id join s_region r on d.region_id=r.id group by dept_id having avg(salary) (select avg(salary) from s_emp where dept_id = 32);谁跟Smith做一样的职位?select first_name from s_emp where title in (select title from s_emp where last_name =Smith) and last_name Smith; 谁是领导?select first_name from s_emp where id in (select manager_id from s_emp );哪些人是员工?子查询实现:select first_name from s_emp where id not in (select manager_id from s_emp where manager_id is not null);外连接实现:select e.first_name from s_emp m right join s_emp e on e.id=m.manager_id where m.manager_id is null; 谁跟Smith的职位不一样?select last_name from s_emp where title not in (select title from s_emp where last_name = Smith);select e1.last_name,e1.title from s_emp e1 left join s_emp e2 on e1.title=e2.title and e2.last_name = Smith where e2.last_name is null;4.1多列子查询哪个员工的工资跟本部门平均工资相等?select first_name,salary from s_emp where (dept_id,salary) in (select dept_id,avg(salary) from s_emp group by dept_id);4.关联子查询语法形式SELECT column1,column2,.FORM table1 outerWHERE column1 operator(SELECT scolumn1,column2,. FROM tables WHERE expr1 = outer.expr2);哪个员工的工资大于本部门平均工资?select first_name from s_emp o where salary (select avg(salary) from s_emp i where dept_id = o.dept_id );关联子查询的执行过程关联子查询采用的是循环(loop)的方式,执行步骤如下:1 外部查询得到一条记录(查询先从outer表中读取数据)并将其传入到内部查询。 2 内部查询基于传入的值执行。 3 内部查询从其结果中把值传回到外部查询,外部查询使用这些值来完成其处理,若符合条件,outer表中得到的那条记录就放入结果集中,否则放弃,该记录不符合条件。4 重复执行步骤1-3, 直到把outer表中的所有记录判断一遍。5.EXISTS运算符1.EXISTS运算符SELECT column1,column2,.FORM table1 outerWHERE EXISTS(SELECT X FROM tables WHERE expr1 = outer.expr2);EXISTS采用的是循环(loop)的方式,判断outer表中是否存在记录,只要在INNER表中找到一条匹配即可。1 外部查询得到一条记录(查询先从outer表中读取数据)并将其传入到内部查询的表。 2 在INNER表中的记录依次扫描,若根据条件存在一条记录在与outer表中的记录匹配,立即停止扫描,返回true,将outer表中得到的那条记录就放入结果集中否则放弃,该记录不符合条件。3 重复执行步骤1-2, 直到把outer表中的所有记录判断一遍。谁跟Smith的职位不一样?select last_namefrom s_emp owhere exists (select 1 from s_emp i where i.title = o.title and last_name = Smith)and last_name Smith; 2.NOT EXISTS运算符(可以用来代替外连接查询的现实)也是符合条件后退出扫描,过滤掉外表中与内表做对比的记录。哪个部门没有员工?not exists现实:select id,name from s_dept outer where not exists(select x from s_emp where dept_id = outer.id);外连接现实:select d.dnamefrom emp e right join dept don e.deptno=d.deptnowhere e.empno is null;not in现实:哪些人是员工?select first_name from s_emp outwhere not exists(select X from s_emp i where out.id = i.manager_id);in和exists的比较EXISTS是用循环(loop)的方式,由outer表的记录数决定循环的次数,对于exists影响最大,所以,外表的记录数要少 IN先执行子查询,子查询的返回结果去重之后,再执行主查询,所以,子查询的返回结果越少,越适合用该方式Day041.1系统开发周期基于数据库的开发是一个自顶向下的系统开发方法将业务1.2系统开发的五个阶段:需求分析:客户需要的系统模型 设计:ER图表模型数据库的表E(entity):实体R(relationship):关系开发测试:编程功能、性能测试实施、上线:生产系统1.3实体关系模型的概念实体:有共同属性的一类对象的集合。例如:客户、销售代表、订单属性(attribute):通过属性描述实体、区分实体。例如:名字、电话、身份证号关系(relationship):描述实体和实体的关系。例如:客户订货通过客户和订单的关系表达。1.4实体关系模型实体:圆角方框表示一个实体名,实体名唯一,大写,同义词用括号括起来属性:一个属性名,小写,“”为强制属性,必须有值,即NOT NULL“o”(option)为可选属性,即可以为NULL表示唯标识(唯一标识Unique identifier:UID),即PRIMARY KEY1.5实体关系语法实体和实体的关系从实例之间的数量关系的角度可分为一对一、一对多,多对多;实体和实体之间的关系从紧密程度上分为必须和可以例子:每个订单必须而且只能属于一个客户一个客户可以有一张或多张订单1.6关系类型用唯一标识来表达一对一:这种类型较少。例子:法律上夫妻关系(一夫一妻制)一对多:这种类型很普遍。例子:学生和班级、员工和部门多对多:这种类型较多。例子:学生和课程。(一学生可以选多个课程,一个课程可以被多个学生选)1.7完整性约束保证数据的一致性通过数据库的特性或应用程序完成数据库约束1.8主键(PRIMARY KEY)主键值要求唯一且非空 PKUK+NN(NOT NULL)联合主键:多列联合唯一,任意一列可以重复。FK:NOT NULL ,可重复UK:唯一,可NULLPK:唯一,NOT NULL1.9外键(FK)1.10数据库设计表和列分别对应实体和属性(考虑用什么类型的表(堆表(hecp):存放无序)定义命名规范还需要考虑:设计索引,创建视图,数据存储规划,确认完整性约束第一步:将实体映射成表第二步:将属性映射成列第三步:将唯一标识映射 成主键第四步:关系映射成外键一对多关系:一的那边定义成主键(PK)或唯一键(UK)多的那边定成外键(FK)一对一关系,在外键(FK)列上增加唯一约束(UK)若一对一关系在两头都是可选的,任意一边定义成外键(PK)若一对一关系中一边是强制的,将其定义成外键(PK)对于强制关系,在外键上定义非空约束(NN)多对多关系:另建一个表,分别把别两张表的PK列放到第三张表中,并在第三张表中设置联合主键;规范化:三个范式最小化数据冗余最少完整性问题标识丢失的实体、关系、表第一范式:表中不会有重复记录,即有主属性;每个属性值不可再分第二范式:每个非主属性必须完全依赖于主属性;完全依赖:比如有一张表:sid cid grade cname 学时 学分 (联合主键sid cid)grade完全依赖,cname部分依赖,只依赖于cid不符合第二范式时,会造成数据冗余,比如有100个学生选同一门课,就会有100个相同的cname第二范式主要发生于联合主键上!第三范式:每个非主属性不能依赖于另一个非主属性比如有一张表:sid name cid cname 学时(联合主键sid cid)cname依赖于cid , 学时依赖于cid把一对多关系合表就会不符合第三范式。经过严格的ER图设计,一般都会符合第三范式,第三范式决定了表连接。去规范化,以适度的冗余来合表,以提高查询的效率。命名规则首字符必须是字母,名字为130个字符长,只能包含AZ,az,0-9,同一个命名空间里的对象不能重名不能用ORACLE保留字create创表语法create table 表名(列1 数据类型 ,列2 数据类型 ,列3 数据类型 ,.列n数据类型 );create table yyjtest(c1 varchar2(10),c2 char(10);drop删除表语法drop table 表名;insert语句的基本语法insert into 表名(当给指定列插入值时,用上引括号) values (填上插入的值);插入值中字符用单引号括上。给全字段插入值insert into yyjtest values (abc,bcd);给指定字段插入值,没有插入的字段系统用NULL补上,这是隐式插入。给指定字段插入值,不想给指定字段插入值,自己用NULL补上,这是显式插入。insert into yyjtest(c1,c2) values (c,bcd);2.数据类型varchar2 变长字符类型,一定要带上宽度char定长字符类型,可以不带宽度,默认宽度为1,只能存一个字符number数值类型number(p,s)数值类型varchar2和char的区别.select c1|d,length(c1), c2|d,length(c2) from yyjtest;select length(c1), length(c2) from yyjtest;1.varchr2按字符串的实际长度存,char按定义长度存2.列的取值是定长,定义成char类型,列的取值长度不固定,定义成varchar2。select * from test where c1 = abc;找到记录select * from test where c1 = abc ;找不到记录select * from test where c2 = abc;找到记录select * from test where c2 = abc ;找到记录3.字符串的比较中,varchar2按实际字符串比,对空格是敏感的,char会将短字符串补起后,再与字符串比,对空格不敏感。number类型create table yeyjnumber(c1 number,c2 number(6),保留六位整数。最大值为999999c3 number(4,2),保留到小数点后两位,最大保留整数数字位数为(42)2位数字,即最大值为99.99;c4 number(3,-3),保留到千位数(没有小数部分)最大保留整数数字位数为(3(3))6位数字,即最大值为999000;c5 number(2,4)保留到小数点后四位(没有整数部分0),最大值为0.0099);create table yeyjnumber(c1 number,c2 number(6),c3 number(4,2),c4 number(3,-3),c5 number(2,4);insert into yeyjnumber(c2) values (1123456.2222222222);insert into yeyjnumber(c3) values (12);insert into yeyjnumber(c3) values (12.123);insert into yeyjnumber(c3) values (12.1234);insert into yeyjnumber(c3) values (12.12345);insert into yeyjnumber(c3) values (999100);insert into yeyjnumber(c5) values (0.00341231231
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025农资产品购销合同模板
- 行政管理的制度环境
- 肿瘤患者心理护理
- 双胎护理常规
- 2025届广东省深圳实验学校高中园与惠东高级中学高三下学期5月适应性联考(三模)物理试卷
- 故事:小猫钓鱼
- 微生物菌种保藏
- 2025年管理会计试题
- 瞳孔护理教学规范与操作要点
- 固镇发展新质生产力
- 煤矿安全安全设施设计
- 高中语文-戏剧单元重要知识点整理
- 门式脚手架移动作业平台施工方案
- JJF 1934-2021 超声波风向风速测量仪器校准规范
- AS1657-1992---固定平台、走道、楼梯与梯子的设计、施工与安装
- 地形图的识别及应用与涉密地图的保密管理(课堂PPT)
- 机电传动控制期末考试试卷试题及答案
- 电大汉语言文学专业本科社会实践调查报告
- 高级英语第一册Unit2Hiroshima课后练习答案
- 地下停车场交安设施施工方案_车库交通安全设施施工方案_标志_标线_交通设施00000
- 《苏幕遮燎沉香》教学设计
评论
0/150
提交评论