针对Oracle数据库表中的数据的常见操作
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 id=1;//删除id是1的那行数据
注意:删除时尽量使用唯一键进行删除,或者使用主键进行删除。
5、更改表中某行数据
update 表名 set 列名=值,列名=值...where 列名=值; 例:update stu set id=2,name='lisi';age=4 where id=1; //把id为1的那行数据进行更改,可只更改部分数据
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 id=2;(查询id为2的数据的姓名和年龄)
(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 id=1;
(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 id=2; //查找id等于2的那行
(2)、大于>、小于<、大于等于>=、小于等于<=和!=不等于;
select * from teacher where id>2; //查找id大于2的数据;
select * from teacher where id<5; //查找id小于5的数据;
select * from teacher where id>=2; //查找id大于等于2的数据;
select * from teacher where id<=2; //查找id小于等于2的数据;
select * from teacher where id!=2; //查找id不等于2的数据;
(3)、between and是包含两边的极限数据(闭区间)
select * from teacher where id between 2 and 10; //查找id在2和10之间的数据(包括2和10);
(4)、or关键字(或者)
select * from teacher where id=2 or id=5; //查找id等于2或者id等于5的。
(5)、and关键字(和)
select * from teacher where name='zhangsan' and age=32; //查找名字等于张三并且年龄32的数据(人);
(6)、in、not in关键字(主要的作用:批量操作)
select * from teacher where id in(1,5,10); //查找id是1、5、10的数据
select * from teacher where id not in(1,5,10); //查找除了id是1、5、10的数据
(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 like name like '%a'; //匹配所有以a字符结尾的name属性。
select * from teacher where like name like 'a%'; //匹配所有以a字符开头的name属性。
select * from teacher where like 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 id =1;
(5)、replace:有三个参数第一个参数:列名(字段);第二个参数:需要替换字段中的某一个字符;第三参数:替换的字符
select replace(name,'z','Q') from teacher where id =1;
(6)、substr:和Java的subString差不多
substr有两个参数:第一个参数:列名,第二个参数:从哪一位开始截取(包含最后一位截取的数):name,要截取:subtr('name',2);--->得到的是ame
select substr(name,3) from teacher where id=2;
如果第二个参数为负数的话,就倒着从最后一位开始往前截取
select substr('zhangsan',-3) from dual; //运行结果为san;
subtr:有三个参数:第一个参数:列名,第二个参数:从哪一位开始截取(闭区间),第三个参数:截取到多少位,截多少长度(会从第二个参数的截取位置往后开始进行截取)
oracle中,截取的位置会从0或者1起始(0和1的位置是一样的;
select substr('zhangsan',0,5) from teacher where id = 1;
select substr('zhangsan',1,5) from teacher where id = 1;
(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
针对Oracle数据库表中的数据的常见操作的更多相关文章
- oracle数据库表中,插入数据的时候如何产生一个 字母+数字 编号?
Oracle 语句中“||”代表什么啊? oracle数据库表中,插入数据的时候如何产生一个 字母+数字 编号? 排序的话,用order by来处理即可.比如:cola123a234b999b335s ...
- Oracle 数据库表中已有重复数据添加唯一键(唯一约束)
Oracle 数据库表中已有重复数据添加唯一键(唯一约束) 问题描述 以 demo 举例,模拟真实场景. 表 TEST_TABLE 有如下字段和数据:id 是主键,code 没有设置键和索引 ID C ...
- 在oracle数据库表中没有添加rowid字段为什么会出现?
rowid 是 oracle 数据库表中的伪列, rowid 首先是一种数据类型,它唯一标识一条记录物理位置, 基于64位编码的18个字符显示.因为 rowid 是伪列, 所以并未真的存储在表中,但可 ...
- EF Core中,通过实体类向SQL Server数据库表中插入数据后,实体对象是如何得到数据库表中的默认值的
我们使用EF Core的实体类向SQL Server数据库表中插入数据后,如果数据库表中有自增列或默认值列,那么EF Core的实体对象也会返回插入到数据库表中的默认值. 下面我们通过例子来展示,EF ...
- MySQL 两个数据库表中合并数据
两个数据库表中合并数据 如果有 t1 和 t2 两个数据库表格,它们两个对应的字段是相同的.如何将 t2 的数据插入到t1中去呢? insert into t1 select * from t2 ...
- Oracle数据库表空间与数据文件的关系描述正确的是( )
Oracle数据库表空间与数据文件的关系描述正确的是( ) A.一个表空间只能对应一个数据文件 B.一个表空间可以对应多个数据文件 C.一个数据文件可以对应多个表空间 D.表空间与数据文件没任何对应关 ...
- SQL语句的使用,SELECT - 从数据库表中获取数据 UPDATE - 更新数据库表中的数据 DELETE - 从数据库表中删除数据 INSERT INTO - 向数据库表中插入数据
SQL DML 和 DDL 可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL). SQL (结构化查询语言)是用于执行查询的语法. 但是 SQL 语言也包含用于更新. ...
- 使用sqlldr命令导入资料到Oracle数据库表中的示例说明
CSV: Comma-Separated Values(逗号分隔值)的缩写,是以逗号分隔字段的多行文本文件 sqlldr 是sql*loader的缩写,此工具在安装完整版的Oracle客户端后就有 ...
- 在向"带有自增字段的数据库表"中插入数据时,自定义"该自增字段"的数据
在设计数据库表的时候,经常会使用自增主键或其他自增字段.比如: DB_UserGroups表中GroupID为该表主键,并为自增字段. 但在将某字段设置自增后,想在插入数据时,人为指定自增字段的数据内 ...
随机推荐
- mysql5.6源码自动安装脚本
将脚本与源码安装包放在同一目录下,执行脚本即可(执行脚本会使用yum安装依赖包) 安装完成之后,既可以使用mysql -uroot -p登录 脚本内容如下: [root@mysql src]# c ...
- js快速去除数组重复项
function unique1(arr) { var tmp = new Array(); tmp.push(arr[0]); for(var i=0;i<arr.length;i++) { ...
- Reverse Integer 2015年6月23日
题目: Reverse digits of an integer. Example1: x = , return Example2: x = -, return - 思路:递归 解答: / test ...
- MSICE界面和功能分析
一.首页 ICE实现的这种界面样式,有可能使用WCF实现的,但是MFC来模仿也是可行的. 包括配置界面,和右下角的细节. 首页的主要功能只有3个,分别为图片拼接.视频拼接和打开拼接文件. 二.输入拼接 ...
- JS Event事件流(冒泡机制、捕获机制、事件绑定)
1.事件流 事件流:从页面中接收事件的顺序.也就是说当一个事件产生时,这个事件的传播过程,就是事件流. IE的事件流 IE中的事件流叫事件冒泡:事件冒泡:事件开始时由最具体的元素接收,然后逐级向上传播 ...
- 跟着刚哥深入学maven
前言:目前所有的项目都在使用maven,可是一直没有时间去整理学习,这两天正好有时间,好好的整理一下. 一.为什么使用Maven这样的构建工具[why] ① 一个项目就是一个工程 如果项目非常庞大,就 ...
- js背景自适应,学到了
最近在做一个项目,要求实现背景自适应,何为背景自适应呢? 1.如果背景图高度不够,背景height是100%,background-size就应该是 100% auto 2.如果背景图宽度不够,背景w ...
- 【WPF】用三角形网格构建三维图形
虽然WPF只能支持部分三维模型,不过从应用功能开发的角度看,也已经够用了(非游戏开发).WPF 的三维图形,说得简单一点,也就两种而已. 1.把二维对象放到三维空间中,这个应该较为好办,像 Image ...
- JAVAEE学习——struts2_01:简介、搭建、架构、配置、action类详解和练习:客户列表
一.struts2是什么 1.概念 2.struts2使用优势以及历史 二.搭建struts2框架 1.导包 (解压缩)struts2-blank.war就会看到 2.书写Action类 public ...
- [github项目]基于百度地图二次开发实现的车辆监管(包含车辆定位、车辆图片和方向控制,电子围栏,图形绘制等功能)前端实现(不包含后端实现)
前言:基于百度地图javascript版本开发,百度地图中所用的key已承诺仅用于测试,不用于商业用途 注:本文所有代码可以到github上进行下载,github地址:http://map.eguid ...