您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > oracle基本语法
忘了密码后1.若名登录到oralce编缉环境:sqlplus/nolog2.集成登录到oracle数据库:conn/assysdba3.修改oracle用户的密码:alteruser用户名identifiedby密码;建表空间createtablespace表空间名datafile'E:\a.dbf'size1M(大小)autoextendon;新建用户createuser用户名identifiedby33defaulttablespace默认表空间名temporarytablespace临时表空间名(temp)用户授权给用户一个连接数据库授权grantconnectto用户名给用户一个使用数据库中的空间grantresourceto表户名给用户一个建序列的权限grantcreaterequenceto用户名给用户一个访问scott用户下的一个emp表的权限1.要先登录到scott用户模式下2.授权:grantselectonempto用户||grantallonempto用户修改用户的口令alteruser用户名identifiedby密码删除用户dropuser用户名cascade(其中的cascade表式用户模式对象)登录到远程服务器用户名/密码@网络服务名(其中的网络服务名自己配置所要连接的主机)得到表中数据行的行地址Rowid,行号rownumselectrowid,rownumfromempwhereempno='7902';创建数据表1.createtable表名(列名类型约束.)2.利用现有的表创建新表(新表名中的结构和表名的结构一样,且记录也一样,查询建表)例1.createtable新表名asselect*from表名;例2.createtable新表名asselect列名1,列名2from表名;例3.createtable新表名asselect*from表名1集合操作符(如union,unionall)select*from表名2;修改表结构添加列:altertable表名add(列名类型);删除列:altertable表名dropcolumn列名;修改列:altertable表名modify(列名要改的类型)!!!注意,在修改的列必须要根据该列中的数据修改(如:该中有一条记录为10个宽度,但你要修改为6个宽度,会报错)删除数据表droptable表名cascadeconstraints;(删除表,cascade表对象,constraints约束);插入来自其他表中的数据insertinto表名(列名1,列名2...)select列名1,列名2...from表名where条件查看表结构desc表名;查看表中某一列的数据select列名from表名如果这一个列的数据有重复,又想要无重复的行,用distinctselectdistinct列名form表名查询排序select*from表名where条件orderby列名1,列名2desc(降序)||asc(升,默认)分组查询select*from表名where条件groupby列名having条件(可以使用聚合函数)注:where,groupby,having,orderby顺序不能倒事务控制sqlsavepointmark1;sqldelete,insert,update数据操纵语言(DML);sqlsavepointmark2;sqlrollbacktosavepointmark1(回滚到mark1)sqlcommit;授予权限grant权限on表名to用户名;grant权限on表名to用户名withgrantoption;注:withgrantoption表示该用户可以把这种权限授予其他用户收回权限revoke权限on表名from用户名;算术操作符select列名1*100,列名2-列名3from表名比较操作符in的使用(用来列表中任何一个相匹配的,where条件都成立)select*from表名where列名1in('aaa','bbb');like的使用(%表示后接任意长度任何字符,_表示后接一个长度任何字符)select*from表名where列名1like'S%';between...and...使用select*From表名where列名1between5and100;notin,notlike,notbetween...and...同上反之即为集合操作符union(联合):两个查询所有而不重复的行(类型匹配)select列名1from表1unionselect列名1from表2;select列名1,列名2from表1unionselect列名2,列名1from表名2orderby2;两个列的列名不同,但要用第2列来排序,可以使用列的索引号来代替列名(是第2列,为2)unionall(联合所有):两个查询所有的行,两个列名不必相同,类型必须匹配select列名1from表1unionallselect列名2from表名2;intersect(两个查询的交集)select列名1from表1intersectselect列1from表2minus(减集)第一个查询有,但第二个查询的结果没有的数据select列1from表1minusselect列1from表2连接操作符'||'select('a'||'是一个字符')字符fromdual;输出:字符-----------------------------a是一个字符操作符的优先级算术连接比较not逻辑操作符and逻辑or逻辑单行函数据1日期函数(d,表示日期)add_months:在指定的格式上加上指定的月数后的日期值selectadd_months(sysdate,2)fromdual;months_between(d1,d2):返两个日期之间的月数,d1晚d2为正,否为负,相等为0,若d1,d2为某月中的同一于或最后一天,为正months_between('10-11月-06','1-11月-06')为正last_day(d)返回指定日期的当月的最后一天last_Day('10-11月-06')为'30-11月-06'round(d,'格式'):返回日期的四舍五入为格式模型指定的单位如:round('06-5月-06','year'),返回为:01-1月-06,因为5月小于一年的一半,四舍五入next_day(d,day):day表示星期几,返回下一个星期的这个星期几的日期如:next_day('10-11月-06','星期三'),得出下一星期三的日期,由于'10-11月-06'这一天是星期五,所以返回下一星期三的是日期:'15-11月-06'trunc(d,'格式'):以指定的格式模型截断日期如:trunc('10-11月-06','year')以年的格式截断后变成:'1-1月-06'extract(格式(fmt)from日期(d)):提取日期中特定的部分如:extract(yearfromto_date('10-11月-06'))反回2006(字符串需要格式化成日期);2字符函数initcap():首字母大写lower():转换成小写upper():转换成大写Ltrim('abzhb','ab'):左剪裁,在左边把ab剪裁rtrim('zhbab','ab'):右剪裁,在右边把ab剪裁translate('zhblq','ahdhzb','123450'):按字母翻译,输出为:520lq(其中z,表示5,以此类推)replace('zhbzhb','h','520'):字符串替换,输出为:z520bz520binstr('zhb','h'):查找字符串的位置,输出为:2(注意,不是从0开始)substr('zhblq',4,2):取字符串,输出:lq(注意:第4个字符为L,了取两个字符)concat('zhb','lq'):连接字符串:输出为:zhblq3数字函数abs(-15):取绝对值,输出:15ceil(44.778):向上取数,输出:45sin(1.571):正弦,输出:.9999999cos(0):余弦,输出:1sign(-32):取符号,输出:-1floor(100.2):向下取整,输出:100power(4,2):4的2次幂,输出:16mod(10,3):取余数,输出:1round(100.269,2(表示精度)):四舍五入,输出:100.27trunc(100.269,2(表示截断后小数点位数)):截断,输出:100.26sqrt(4):平方根,输出24转换函数to_char(d||n,[fmt(日期或数字的格式)]):可以d(日期)或n(数字)转化成指定的格式如:selectto_char(sysdate,'YYYY年fmMM月fmDD日HH24:MI:SS'):输出2006年11月10日16:23:56其中:YYYY表年,fmMM:月,fmDD:日,HH24表小时(24表示日24小时格式),mi:分,SS:秒selectto_char(56,'C99999||$999999'):输出CNY56||$56,后面的999999一定要大于前面的56to_date(char,[fmt('格式')]):将char/varchar类型转换为日期类型如:to_date('2005-12-06','YYYY-mm-dd'),输出:06-12月-05注:to_char转换函数中格式模型fmt的定义同样适用于to_date转换函数to_number('字符数据'):将包含数字的字符串转换为number数据类型(oracle可以对数字字符串进行隐式转换)如:to_number('100'):,输出:100;5其他函数转换null值:(注:null和0不同,null表示为空(未知),0表示为0(已知))1.NVL(expression1,expression2):将空值替换为指定的值如expression1为null,nvl返回expression2,如expression1不为空,nvl返回expression1selectnvl(aa,0)fromuu;在表uu中aa列为空就返回0,否则就返回aa列的值2.NVL2(expression1,expression2,expression3)如expression1为null,nvl返回expression3,如expression1不为空,nvl返回expression23.NULLif(expr1,expr2):两个表达式比较,如果相等,返回为nul;l空值,不相等:返回expr1分组函数(聚合函数)avg(列名):返回指定列的平均值min(列名):返回指定列所有值中最小的max(列名):返回指定列所有值中最大的sum(列名):返回指定列所有值的总和count(*):返回所有的行,包括重复的和空值的行count(列名):返回指定列的非空值的个数(不含空值)groupby子句:将信息划分为组,按组进行聚全运算having子句:用来指定groupby子句的检索条件,位于groupby的后面如:selectamax(b)fromabgroupbyahavinganotin('abccsfs');临时修改(本会话)的日期语言1.修改日期语言为识别英文格式的月份altersessionsetnls_date_language='AMERICAN';2.修改日期语言为识别简体中文的月份altersessionsetnls_date_language='SIMPLIFIEDCHINESE';行级锁用户自定义锁:select......forupdate语句(共享行级锁)自动应用锁:insert,delete,update语句在运行时自动应用锁(行级排他锁)当其他用户已以对此加锁,该用户加锁确认等待时间select....forupdatewait5;(要更新的行被锁定,等5秒后自动返回,否则一直等待)可以用不等待来查
本文标题:oracle基本语法
链接地址:https://www.777doc.com/doc-6042305 .html