您的位置:首页 > 数据库 > Oracle

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

2016-09-17 17:18 363 查看
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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oracle