数据库基础知识:
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>
左表处理:第一个表中没有形成连接的所有元组也加入到中间表中,这些元组在第二个表上所对应的列值被自动置为空。