2013.03.12

来源:互联网 发布:hsk网络考试 编辑:程序博客网 时间:2024/04/29 03:02

    数据库基础知识:

1.drop针对的是数据库或是数据库的字段定义层次

2.delete针对的是数据库记录层次上

3.修改表结构

   alter table<表名>

    [ADD<新列名><数据类型>[完整性约束]]
    [DROP<完整性约束名>]
    [MODIFY<列名><数据类型>];

4.sql语句中的数值,不需要引号

5.一次插入多条记录 insert into table1 values('','','') ,('','','');

6.rownum,为oracle的行数

7.oracle中的不等于表示:<>,!=

8.all,any|some

9.查询语句的select,group by,having子句是聚组函数唯一出现的三个地方,在where子句中不能够使用聚组函数

    在使用group by时,出现在select列表中的字段,如果没有出现在聚组函数中,那么必须出现在group by子句中。

10.select  from table where ...group by ....having .....

   表示先查找到where的记录集合,再在记录集合中分组,合并为一条记录,having表示在合并后的记录集合中再次筛选出符合条件的记录

注意:此步骤过后,剩下的那些不存在于Group By语句后面作为分组依据的字段就有可能出现多个值,但是目前一种分组情况只有一条记录,一个数据格是无法放入多个数值的,所以这里就需要通过一定的处理将这些多值的列转化成单值,然后将其放在对应的数据格中,那么完成这个步骤的就是聚合函数

11.group by all [分组字段]:

  表示:如果使用ALL关键字,那么查询结果将包含由Group By子句产生的所有组...没有ALL关键字,那么不显示不符合条件的行组

12.Group By 和 Having, Where ,Order by语句的执行顺序:《转自http://it.114study.com/ncre/article418152.html》

      按照如下顺序进行执行的:Where, Group By, Having, Order by。首先where将最原始记录中不满足条件的记录删除(所以应该在where语句中尽量的将不符合条件的记录筛选掉,这样可以减少分组的次数),然后通过Group By关键字后面指定的分组条件将筛选得到的视图进行分组,接着系统根据Having关键字后面指定的筛选条件,将分组视图后不满足条件的记录筛选掉,然后按照Order By语句对视图进行排序,这样最终的结果就产生了。在这四个关键字中,只有在Order By语句中才可以使用最终视图的列名.

         如:
  SELECT FruitName, ProductPlace, Price, ID AS IDE, Discount
  FROM T_TEST_FRUITINFO
  WHERE (ProductPlace = N’china’)
  ORDER BY IDE
  这里只有在ORDER BY语句中才可以使用IDE,其他条件语句中如果需要引用列名则只能使用ID,而不能使用IDE。

13.select 1 from table问题:

    1、select 1 from mytable;与select anycol(目的表集合中的任意一行) from mytable;与select * from mytable 作用上来说是没有差别的,都是查看是否有记录,一般是作条件用的。select 1 from 中的1是一常量,查到的所有行的值都是它,但从效率上来说,1>anycol>*,因为不用查字典表。

    2、查看记录条数可以用select sum(1) from mytable;等价于select sum(*) from mytable,不可用sum(其他数字);、

    3.

         1):select  1 from table      增加临时列,每行的列值是写在select后的数,这条sql语句中是1

         2):select count(1)  from table   不管count(a)的a值如何变化,得出的值总是table表的行数 

         3):select sum(1) from table   计算临时列的和

14.创建外键:
    create table tbname(    id number ,    cd number,    name varchar2(20),    primary key(id,cd),    foreign key(cd) references 你的外表(cd)(此处无标点));
15.字符数据和日期数据在书写时用单引号括起来

16.     单行插入 INSERT [INTO] <表名>(<列名>,…)VALUES(<列值>,…)
           多行插入 INSERT [INTO] <表名>(<列名>,…) <SELECT子句>(其中没有values关键字


17.创建视图:CREATE VIEW <视图名>(<列名>,…)AS <select子句>

18.查询语句的基本格式:

   SELECT …     规定结果中的列等
   INTO…            将查询结果写入到一个基表中
   FROM…          指定要查询的基本表或视图
   WHERE…          指定查询的条件或源表的连接条件
   GROUP BY…  指定将查询结果分组的依据
   HAVING…       筛选出符合条件的分组统计信息
   ORDER BY…   将查询结果进行排序
19.数据查询连接:

   内连接:select * from table1 inner join table2 on <表名1>.<连接列名1><比较符><表名2>.<连接列名2>

       双重循环:外循环依次扫描第一个表中的每个元组,内循环依次扫描每二个表中的每个元组,当满足连接条件时就连接起来形成中间表中的一个新元组

    SELECT column_name(s)    FROM table_name1    INNER JOIN table_name2     ON table_name1.column_name=table_name2.column_name  左连接:select * from table1 left join table2 on <表名1>.<连接列名1><比较符><表名2>.<连接列名2>    左表处理:第一个表中没有形成连接的所有元组也加入到中间表中,这些元组在第二个表上所对应的列值被自动置为空。