数据库基本操作1229

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

数据库:数据仓库小型数据库:AccessFoxBase中型数据库:MySQLSQLServer中大型:SybaseOracleDB2都支持标准的SQL语言Oracle数据库基本组成Oracle服务[网络服务,监听服务,数据库服务...]Oracle实例配置数据库实例的DataBaseConfigurationAssistantOracle客户端SQLPlus客户端如果要连上数据库,必须要有两个服务:数据库实例服务数据库监听服务Oracle数据库默认管理员用户SysSystemsysdba数据的操作一般不会用管理员用户,而是会用普通用户默认的普通用户scott/tiger被锁定给用户解锁[需要管理员权限]:alteruser用户名accountunlock;将用户锁定[需要管理员权限]alteruser用户名accountlock;切换用户conn用户名;查看当前用户showuser;断开当前用户disc退出客户端exit修改其他用户密码:alteruser用户名identifiedby新密码;修改自己的密码password创建新用户createuser用户名identifiedby密码;新用户没有任何权限给用户一个连接数据库的权限grantconnectto用户名;删除用户dropuser用户名;对于数据库的操作,使用SQL语言SQL:结构化查询语言DDL:数据定义语言Create创建Alter修改Drop删除DML:数据操作语言Insertinto插入数据Update修改数据Delete删除数据Select查询数据DCL:数据控制语言Grant授权Revoke撤销授权TCL:事物控制语言创建用户:createuserwangerxiaoidentifiedby1234;给用户授权:Grantconnecttowangerxiao;//允许连接数据库Grantresourcetowangerxiao;//允许使用表空间切换到新用户Connwangerxiao/1234;在默认表空间中创建一张表用来保存学生信息:学号,姓名,性别,年龄,成绩Student[num,name,sex,age,score]Createtablestudent(Numnumber(10),Namevarchar2(30),Sexchar(3),Agenumber(3),Scorenumber(5,2));查看表结构:Descstudent;修改表结构1.将num字段的类型改为number(20),并且不允许为nullAltertablestudentmodifynumnumber(20)notnull;Altertablestudentmodifynamevarchar2(20)notnull;2.添加一个新字段telAltertablestudentadd(telnumber(11));3.删除tel字段Altertablestudentdropcolumntel;4.删除整张表Droptablestudent;oracle中的数据类型[用来定义字段的]字符char:定长的最多2000字节Varchar2:可变长度最多4000字节Long:可变长度最多2GB数字Number(a,b)Number(a)表示没有小数部分a表示是几位数[包括小数位]b表示小数有几位日期Date:精确到秒Timestamp:精确到0.000001秒二进制类型Raw:存储2000字节LongRaw:存储2GBLOB:大对象,以二进制的保存,最大可以4GBCLOB:大字符类型BLOB:大字节类型BFILE:大字节文件1.保存一条数据到student表中Insertintostudent(num,name,sex,age,score)values(123,’张三丰’,’男’,100,90.5);2.查询student表中的数据Selectnum,name,sex,age,scorefromstudent;3.查询所有字段的值Select*fromstudent;4.带伪列的查询Selectrownum,rowid,num,name,sex,age,scorefromstudent;5.修改第二条数据的学号和姓名Updatestudentsetnum=111,name=’张无忌’wheresex=’女’;6.删除姓名是张无忌的数据Deletefromstudentwherename=’张无忌’;任务:1.使用system用户登录2.创建一个新用户zhangsanfeng3.给新用户授权可以连接数据库,操作表空间4.切换到新用户zhangsanfeng5.创建一张新表WLMJ[秘籍编号(num),秘籍名称(name),等级(level),杀伤力(power)]6.往表中至少插入5条数据7.练习使用DML语句事物控制语言Savepoint设置回滚点事物中间的一个临时标记点可以让事物回滚到指定位置设置回滚点savepointa;Rollback回滚Rollbacktoa;//回滚到指定位置Rollback;//回滚到初始状态Commit提交事物:事物一旦被提交,就意味着不可以回滚哪些时候事物会被提交1.当执行commit语句的时候会提交事物2.当正常退出客户端的时候会自动提交事物示例用户:scottDeptbak部门表Deptno:部门编号Dname部门名称Loc部门位置Empbak员工表Empno:员工编号Ename员工姓名MGR上司编号Job岗位Hiradate入职日期Sal工资Comm奖金Deptno所属部门编号复制表(带数据)Createtableempbakasselect*fromemp;复制表(不带数据)Createtableempbakasselect*fromempwhere1=2;设计一个事物1.给7839员工降低1000块工资Updateempbaksetsal=sal-1000whereempno=7839;2.设置保存点Savepointa;3.给7369员工加1000块工资Updateempbaksetsal=sal+1000whereempno=7369;4.设置保存点Savepointb;5.Updateempbaksetsal=sal+1000whereempno=7934;6.回滚到bRollbacktob;7.回滚到aRollbacktoa;8.回滚到初始状态Rollback;查询语句Select*fromempbak;Selectempno,ename,job,salfromempbak;[尽量只查询需要查询的字段]别名查询Selectempnoas编号,enameas姓名,salas工资fromempbak;查询所有人的姓名和年薪[带运算符的查询]Selectename姓名,sal*12年薪fromempbak;查询年薪超过3万的人[带条件的查询]Selectename姓名,sal*12年薪fromempbakwheresal*1230000;--从结果集中去掉重复的数据distinct--查询empbak表中有多少个工作岗位selectdistinctjobfromempbak;--查询工资大于2000,并且小于3000的员工姓名,岗位和工资Selectename,job,salfromempbakwheresal=2000andsal=3000;Selectename,job,salfromempbakwheresalbetween2000and3000;--查询工资小于2000,或者大于3000的员工姓名,岗位和工资Selectename,job,salfromempbakwheresal2000orsal3000;--查询工作岗位是CLERK和SALESMAN的所有员工姓名和工资Selectename,salfromempbakwherejob=’CLERK’orjob=’SALESMAN’;Selectename,salfromempbakwherejobin(‘CLERK’,’SALESMAN’);----查询工作岗位除了CLERK和SALESMAN之外的所有员工姓名和工资Selectename,salfromempbakwherejob!=’CLERK’andjob!=’SALESMAN’;Selectename,salfromempbakwherejob’CLERK’andjob’SALESMAN’;Selectename,salfromempbakwherejobnotin('CLERK','SALESMAN');--job大于任意一个值Selectename,salfromempbakwherejobany(2000,3000,4000);--job大于所有值Selectename,salfromempbakwherejoball(2000,3000,4000);--查询所有有奖金的人的姓名和奖金Selectename,commfromempbakwherecommisnotnull;-----------------------------------------------------------------------------------------------------模糊查询%0个或者多个任意字符_1个任意字符--查询所有名字中有’S’的人的姓名和工资Selectename,salfromempbakwhereenamelike‘%S%’;--查询名字以S开头的人的姓名和工资Selectename,salfromempbakwhereenamelike'S%';--查询名字中第二个字符是A的人的姓名和工资Selectename,salfromempbakwhereenamelike'_A%';--查询名字只有4个字母的人的姓名和工资Selectename,salfromempbakwhereenamelike'____';排序语句orderby查询所有人的姓名和工资,按照工资从少到多排序Selectename,salfromempbakorderbysalasc;查询所有人的姓名和工资,按照工资从多到少排序Selectename,salfromempbakorderbysaldesc;--对部门10的员工按照工资从多到少排序Selectename,salfromempbakwheredeptno=10orderbysaldesc;根据多个字段排序[优先按照前面的字段排序,在前面字段值一样的情况下,再按照后面的字段排序]Selectename,sal,deptnofromempbakorderbydeptnoasc,saldesc;***********************1224***************************Oracle中的运算符算术运算符+-*/比较运算符=等于!=不等于=大于大于等于=小雨小于等于逻辑运算符And类似于Java中的&&,并且Or类似于Java中的||,或者Betweenand在某一个范围内In在多个值之间取任意一个值Notin不能取in中的值Any任意一个值All所有的值Like模糊匹配%通配0个以上字符_通配1个字符连接运算符:用来连接两个SQL语句的union用来合并两个结果集,如果有重复的数据,就去掉查询员工部门编号大于10的所有员工信息Select*fromempbakwheredeptno10;查询员工部门编号为20的所有员工信息Select*fromempbakwheredeptno=20;Select*fromempbakwheredeptno20unionSelect*fromempbakwheredeptno=20;unionall用来合并两个结果集,并保留重复的数据Select*fromempbakwheredeptno10unionallSelect*fromempbakwherede

1 / 23
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功