设为首页 收藏本站
查看: 2541|回复: 0

[经验分享] 针对Oracle数据库表中的数据的常见操作(1)

[复制链接]

尚未签到

发表于 2017-12-11 14:30:38 | 显示全部楼层 |阅读模式
  1、查询表中所有数据
  select * from 表名;  例:select * from stu;
  2、查询的同时修改表中数据
  select * from 表名  for update;  例:select * from stu for update;
  3、往表中添加数据
  insert into 表名(列1,列2...) values(值1,值2...);
  例:insert into stu(id,name,age) values(1,'zhangsan',23);
  注意:字符串类型要用单引号括起
  对于列中要求非空的属性,添加时必须添加,可以为空的数据可以不写上.
  列名和值要一一对应。
  4、删除表中数据(删除某行数据)
  delete from 表名 where 列名=值;    例:delete from stu where>
  注意:删除时尽量使用唯一键进行删除,或者使用主键进行删除。
  5、更改表中某行数据
  update 表名 set 列名=值,列名=值...where 列名=值;  例:update stu set>
  6、查询(重点,最常用的对数据库进行的操作就是查询)
  在sql中,可以使用简单的运算符(+-%/);
  (1)、查询表中所有数据
  select * from 表名;  例:select * from stu;
  (2)、查询表中指定列的数据
  select 列名 from 表名;  例:select name,age from stu;
  (3)、查询表中指定行列的数据
  select 列名 from 表名 where 列名=值;  例:select name,age from stu where>
  (4)、查询十年后张三的年龄
  select name,age+10 from stu where name='zhangsan';
  (5)、给age字段起别名
  给字段起别名是为了更好的对字段进行描述,也就是说起一个别名并不能随意起,要适用于这个字段的意思
  select name age+10 as ages from stu where name='zhangsan';(使用关键字as,通常情况下,这里的as可以省略)
  select name age+10 ages from stu where name='zhangsan';
  也可以给表起别名:select name from stu s;(给表stu起别名s,这里不能加as);
  注意:如果别名中间有空格,需要给别名加个双引号
  例:select age+10 "zhangsan age" from stu where>
  (6)、表格自定义的格式表现
  例:select '姓名:'||name,'年龄:'||age from stu;(使用了单引号)
  (7)、对数据进行排序
  这里需要使用关键字order by,默认是升序的---->asc升序,如果以升序进行排列通常情况下asc省略。desc降序,不能省略
  例:select * from stu order by age asc;(对学生表按照年龄升序排列)
  select * from stu order by age desc;(对学生表按照年龄降序排列)
  select * from stu order by age desc,name desc;(对学生表按照年龄降序排列,年龄相同时按名字降序排列)
  (8)、去除重复项(关键字:distinct)
  例:select distinct age from stu;(去除stu表中年龄相同的项,只保留一项)
  注意:这里的去除只能按照某一属性去除,不能同时按照两个或以上属性去除。
  (9)、计算1+1等于几?
  select 1+1 from dual;(1+1信息会显示在dual表中)
  dual其实也是一张表,这一表是虚拟的,没有列和数据,当查询的时候会进行赋予列和数据,用于方便用户测试使用.
  (10)、查询当前Oracle登录用户
  select user from dual;(用户信息会显示在dual表中)
  7、利用where关键字进行查询(这里都以teacher表为例,该表有id,name,age,description hire_date等列,其中id列是主键)
  (1)、= 关键符号
  select * from teacher where>
  (2)、大于>、小于<、大于等于>=、小于等于<=和!=不等于;
  select * from teacher where>
  select * from teacher where>
  select * from teacher where>
  select * from teacher where>
  select * from teacher where>
  (3)、between and是包含两边的极限数据(闭区间)
  select * from teacher where>
  (4)、or关键字(或者)
  select * from teacher where>
  (5)、and关键字(和)
  select * from teacher where name='zhangsan' and age=32;  //查找名字等于张三并且年龄32的数据(人);
  (6)、in、not in关键字(主要的作用:批量操作)
  select * from teacher where>
  select * from teacher where>
  (7)、is null(过滤出来所有为null的数据)
  select * from teacher where description is null;  //查找所有description属性是null的数据
  (8)、 is not null (过滤出来所有不为null的数据)
  select * from teacher where description is not null;  //查找所有description属性不是null的数据
    (9)、模糊查询(使用关键字like和not like)not like 和like刚好相反
  like一般情况下要和%结合起来用,%其实一个占位符(代表多位),如果把%写在前面,匹配以a结尾的所有名字,反之匹配以a开头的所有名字
  如果所需要查询的字段前后都加上%,只要包含该查询字段就全部查找出来
  例:select * from teacher where name like '%a';  //匹配所有以a字符结尾的name属性。
  select * from teacher where name like 'a%';  //匹配所有以a字符开头的name属性。
  select * from teacher where name like '%a%';  //匹配所有包含a字符的name属性。
  _下划线也是占位符,不过它只代表1位,就是代表了任意一个字符
  以_a%进行模糊查询的时候,会匹配以第二位为'a'的字符串
  select * from teacher where like name '_a%';
  另一个关键字escape, 
  匹配规则:使用escape的时候会,如果_写在需要查询字段的前面,oracle会自动把_转移为任意一个字符
  只有把下划线写在需要查询字段的后面,才能使用escape关键字去掉多余字段,只保留下划线。
  如果'%_x%',使用escape关键字时,会连同下划线一起去除。
  例:select * from teacher where name like '%x_d%' escape 'x';  //查询以_开头的数据
          select * from teacher where name like '%/_d% escape '/';  //查询以_开头的数据
  例:搜索以“QA_”开头的数据 :
  select * from teacher where name like 'QA_%'
  结果为:QA_OFFICER_1,QA_OFFICER_2,QA112
  不符合,必须把下划线转义
  select * from teacher where name like 'QA/_%' escape '/';
  结果为:QA_OFFICER_1,QA_OFFICER_2    
  补充:
  SQL中escape的用法
  使用 ESCAPE 关键字定义转义符。 在模式中,当转义符置于通配符之前时,该通配符就解释为普通字符。
  例如,要搜索在任意位置包含字符串 5% 的字符串: WHERE ColumnA LIKE '%5/%%' ESCAPE '/'
  前后两个%作为通配符使用,中间的%经过ESCAPE 转义,作为普通字符使用
  8、Oracle中的函数
  (1)、lower(转换为小写)
  select lower(name) from teacher;  //把name数据转换成小写
  (2)、upper(转换为大写)
  select upper(name) from teacher;  //把name数据转换成大写
  (3)、initcap(首字母开头大写)
  select initcap(name) from teacher;  //把name属性数据首字母转换成大写
  select initcap('oracle') from dual;  //把字符串oracle首字母转换成大写
  (4)、length:获取字符串的长度
  select length(name) from teacher where>
  (5)、replace:有三个参数第一个参数:列名(字段);第二个参数:需要替换字段中的某一个字符;第三参数:替换的字符
  select replace(name,'z','Q') from teacher where>
  (6)、substr:和Java的subString差不多
  substr有两个参数:第一个参数:列名,第二个参数:从哪一位开始截取(包含最后一位截取的数):name,要截取:subtr('name',2);--->得到的是ame
  select substr(name,3) from teacher where>
  如果第二个参数为负数的话,就倒着从最后一位开始往前截取
  select substr('zhangsan',-3) from dual;  //运行结果为san;    
  subtr:有三个参数:第一个参数:列名,第二个参数:从哪一位开始截取(闭区间),第三个参数:截取到多少位,截多少长度(会从第二个参数的截取位置往后开始进行截取)
  oracle中,截取的位置会从0或者1起始(0和1的位置是一样的;   
  select substr('zhangsan',0,5) from teacher where>
  select substr('zhangsan',1,5) from teacher where>
  (7)、ceil(向上取整)
  select ceil(12345.1) from dual;
  (8)、floor(向下取整)
  select floor(12345.1) from dual;
  (9)、round(四舍五入)   
  select round('12345.1') from dual;
  select round('12345.7') from dual;
  select round('12845.6', -3) from dual;
  select round('12845.6', 3) from dual;
  (10)、trunc:截断:会取整数,第二个参数:保留的小数位
  如果没有小数,并且第二个参数为正数:就原样显示,不会加上.00
  select trunc(123456.235243) from dual;
  select trunc(123456.235243,2) from dual;
  如果没有小数,并且第二个参数为负数:会把整数位从后往前写为0
  select trunc('123456', -3) from dual;
  (11)、concat:拼接字符串----->可代替||
  select concat('zhang','san') from dual;
  select concat('姓名是:',name) from teacher;
  9、Oracle中的时间函数
  (1)、获取当前的时间:sysdate
  select sysdate from dual;
  (2)、时间-时间,查询的是指定日期距离某个日期的天数
  select sysdate-hire_date from teacher;  //查询某天距离当前日期的天数
  (3)、add_months:对指定日期月份进行加减计算
  select add_months(sysdate,3) from dual;
  select add_months(sysdate,-3) from dual;
     (4)、months_between:指定日期距离当前日期的月份    
  select hire_date, sysdate, months_between(sysdate, hire_date) from teacher;
  (5)、next_day:查询出指定日期和指定星期几的日期:只能往后不能往前
  select next_day(sysdate, '星期一') from dual;
     (6)、last_day:查询出当月的最后一天,查询当月有多少天
  select last_day(sysdate) from dual;
  select t.hire_date,  last_day(hire_date) from teacher t;
     (7)、日期字符串转换函数,可在在日期型,字符串型和number型之间互转
  to_date('2017-12-4 16:12:34','yyyy-MM-dd hh24:mi:ss');  可以把日期字符串转换成日期型 
  to_date()函数可以将字符串转换为日期类型
  to_date(char) //按缺省格式进行解析
  to_date(char,‘format_model’) //按模式串指定的格式进行解析
  to_char()函数可以将日期型数值转换为字符串形式
  to_char(date) //缺省转换为'dd-mon-yy'格式
  to_char(date,‘format_model’) //转换为模式串指定的格式
  to_char(date,'yyyy');  //取到某个日期的年份
  to_char(date,'MM');  //取到某个日期的月份
  to_number(日期字符串);  //可以把日期字符串转换成number型。
  注意:缺省的日期格式是DD-MON-YY
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-422987-1-1.html 上篇帖子: [Oracle]Oracle表权限小结 下篇帖子: Oracle Union Union All 对查询结果集操作
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表