Oracle知识点(2)简单查询 模糊查询 范围查询



1简单查询是将一张数据表中所有数据行的内容都显示出来;
2 在查询语句之中先执行FROM字句确定数据来源 (此时实际上是所有的行和列)以控制要显示的数据列
3如果出现数据的重复 可以使用distinct来消除掉重复的数据行显示
4select子句里面可以运行四则运算 ;
5select子句可以直接输出常量内容 但是对于字符串使用" '", 数字直接编写
6“||”负责进行输出的内容连接 但是需要注意的是 一般此类的操作很少直接在查询中出现(一般在查询中用的少 在存储过程中用的多)
   注意的地方: 在查询sql语句中使用别名时 可以不用加上 " '" 引号但其他常量需要加上


常见的运算符如下:
    关系运算符: >,<  >= ,<= ,<>(!=);
    逻辑运算符: AND,OR,NOT;
    范围运算符: BETWEEN..AND..
    谓词范围: IN,NOTIN;
    空判断:IS NULL,IS NOT NULL;
    模糊查询:LIKE


在Oracle数据库之中 所有的数据是需要区分大小写关系的。
"="可以在数字上使用 也可以在字符串使用  在Oracle数据库中  为了方便开发=无论什么数据类型 都可以直接使用


 在逻辑运算中除了与和或的逻辑之外还会存在一个非的逻辑 非得逻辑 如果原始条件的判断为真 那么结果就是假 反之
 如果原始条件的判断为假 那么结果就是真
    对于逻辑操作有一点说明 不要写过于复杂的逻辑操作
    select* from emp where sal<2000;
    select*from emp where not sal>=2000; 以上两个sql语句同个意思。


范围查询:
    Between and  一般在查询字符串时 意义不大  一般都是在涉及到数字方面的时候
空判断:
   空在数据库上解释为不确定的内容 但是需要注意的是 如果在数字列使用判断不能够使用关系运算符完成 空的操作只能够使用 is null 
   或者是is not null 或者是 not is null 
in:
   在指定查询的过程之中 In的操作是最简短的
  既然在指定的范围里面使用in 那么如果不在指定的范围之中使用 not in
   select* from emp where empno in(7369,7566,7788,9999,null)
   select* from emp where empno not in(7369,7566,7788,9999)
注意:关于not in 与 null的问题:
 在使用not in 进行范围判断的时候 如果范围里面含有null 那么不会有输出结果的
    可以从浅层次的方面解释就是 程序的运行依靠着内存  数据量很大的时候 你在not in 后面含有null (就是不确定的意思)
此时可能就要进行着全部查询  而此时数据量很大 会造成很大的风险 造成死机  
   
   模糊查询:Like 
总结:
   where子句一般都写在from子句之后 但是紧跟着from子句之后
   where子句控制显示的数据行的操作 而select子句控制显示数据列的操作
   由于select子句后于where子句执行 所以select定义的别名 不能在where子句里使用


下面是结合对比编程语言中的null值和实例进行分析:
    数据库中的NULL表示“没有对(列)变量输入数据”,即在数据库中的NULL可以区分“没有对(列)变量输入数据”和“有对(列)变量输入数据”这两类情况。而输入空字符串,
  则是这里的“有对(列)变量输入数据”这一类情况,即有输入数据,只是输入的数据为空字符串(含有终止符的还是)。从这个意义上讲,如int t;语句,
  也是属于这里的“有对(列)变量输入数据”这一类情况,只是不是有程序员自己输入值,而是由(编译)系统输入一个随机数而已。
             数据库中的NULL和C++等语言中的NULL的区别:
     数据库中的NULL是一个关键字,表示“没有对(列)变量输入数据”;
          C++等语言中的NULL是一个宏,表示为整数0一般。
   所以在源代码的绑定变量函数里不能使用Null(是一个宏)或是'Null'(是一个字符串),因为两者都不表示数据库中的关键字NULL。
当然,在源代码里,不含有绑定变量的SQL语句字符串(如,“insert into 表1 values(null,null)”)里出现Null是可以作为数据库的Null解释的,该SQL语句字符串用step函数执行可以成功达到目的即表字段里的值为Null。
     实例分析如下:
          使用NULL可以区分“没有输入数据”和“输入空数据”, 差异在于:
   NULL的长度就是NULL,空字符串的长度为0
   一串NULL数据比空字符串优先排序
   COUNT(message)会将空字符串计数进去,但是不会将NULL数据们计入
   可以使用绑定变量搜索某个空字符串,但是不可以这样搜索NULL,




    MySQL空字符串和NULL值问题 


MySQL空字符串和NULL值我们都经常会见到,但是这二者并不是一个概念,下面就为您介绍NULL与MySQL空字符串的区别,供您参考。
对于SQL的新手,NULL值的概念常常会造成混淆,他们常认为NULL与MySQL空字符串是相同的事。情况并非如此。例如,下述语句是完全不同的:


MySQL> INSERT INTO my_table (phone) VALUES (NULL);
MySQL> INSERT INTO my_table (phone) VALUES ('');


 
这两条语句均会将值插入phone(电话)列,但第1条语句插入的是NULL值,第2条语句插入的是空字符串。第1种情况的含义可被解释为“电话号码未知”,而第2种情况的含义可被解释为“该人员没有电话,因此没有电话号码”。
为了进行NULL处理,可使用IS NULL和IS NOT NULL操作符以及IFNULL()函数。
在SQL中,NULL值与任何其它值的比较(即使是NULL)永远不会为“真”。包含NULL的表达式总是会导出NULL值,除非在关于操作符的文档中以及表达式的函数中作了其他规定。下述示例中的所有列均返回NULL:


MySQL> SELECT NULL, 1+NULL, CONCAT('Invisible',NULL);
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值