Derby数据库使用手册(2)-----------DML

14.删除Delete
有两种删除:
1)查询删除,就是常用的普通删除;
2)定位删除,删除当前游标指向的行。

15.丢弃Drop
用来移除函数,索引,存储过程,角色,模式,同义词,表格,触发器和视图。
1)移除函数
在下面几种情况会报错
i.函数名不存在;ii.如果有多个同名的在应用的模式下;
iii.如果删除一个列上的生成器函数,即这个函数被一个列所使用;iv.删除视图引用的函数。

16.插入Insert
常用的values表达式的插入比较容易记住,另外一种是插入查询,具体例子如下:
insert into airports(airport,city,country) select airport,city_name,country from cites order by airport
这种插入可以把查询排序,在某些场合很有用。

17.锁表lock table
有两种:排他锁,共享锁
作用:
1)避免过多的行级别锁
2)防止死锁

17.重命名rename
这个在不同的数据库基本不一致,让人头疼
作用于索引,列,表格
1)列  :rename column tablename.columnName to newColumnName
2)索引:rename index index-name to new-index-name
3)表格:rename table table-name to new-table-name

18.权限回收(取消)Revoke
以下类型的权限可以取消
1)从特定表删除数据;revoke privilege-type on [table] {table|view} from grantee
2)插入数据到特定表;
3)从表查询数据,或者某些限定的列(可以限制查询一些列)
4)创建触发器;
5)修改表或某些列;
6)运行存储过程;revoke execute on {function | procedure} routine-designator from grantee restrict;
restrict不能少,以检查是否被用到,在被用到的情况下不能被取消
7)使用序列生存器或用户自定义类型。revoke usage on sequence [schemaName.]identifier from grantee restrict;
8)取消角色revoke roleName from grantee

关键字PUBLIC表示所有的权利者


19.查询select
查询有两个重点,一是分页,二是for update(在查询后是否可以修改游标,不是非常清楚内存含义)
整个的语法是:Query[order by clause][result offset clause][fetch first clause][for update clause][with{rr|rs|cs|ur}]
with条件也不知道是怎么用的。


20.设置Set
这个功能不知道其他数据库是否有,暂不理它。

21.Truncate
快速的把一张表的内容清空,并且回到初始空状态。这个是不是与Oracle的一样?


22.Update

23.约束Constraint
种类:Primary key,Unique,Foreign key,Check
1)Primary key在修改某一列为主键时,所有列值不能有空值;
2)Unique一个表可以有几个,值不为空时要保证唯一性;
3)Foreign key是某一列关连另一个表格的主键,而且类型与长度要与另一个表格的主键完全匹配。一个外键只能关联一个表。这一点可能
平时认识不同,值得注意。外键的约束作用:在删除列时,插入,更新列时都受到关连表影响。
Backing indexs(背影索引)主,外,唯一性背后都是有索引的,不需要再创建,也不能删除掉这个索引。
4)Check


24.分组Group by
分组的列,在查询出的结果中是不会相同的列值,即所有的行,分组的列是唯一的。
语法中有一个Rollup,这个在其它数据库没有用过,它能一起组合的运算。
比如:
select region,state,product,sum(sales) total_sales from sale_history group by rollup(region,state,product)

create table sale_history(
    id int primary key,
    region varchar(20),
    state varchar(20),
    product varchar(20),
    sales int
)
select * from sale_history
insert into sale_history values(    1    ,'xingfeng'    ,'gangzhou'    ,'pencil'    ,30    );
insert into sale_history values(    2    ,'xingfeng'    ,'gangzhou'    ,'apple'    ,10    );
insert into sale_history values(    3    ,'xingfeng'    ,'gangzhou'    ,'pencil'    ,40    );
insert into sale_history values(    4    ,'nankang'    ,'gangzhou'    ,'apple'    ,40    );
insert into sale_history values(    5    ,'nankang'    ,'gangzhou'    ,'apple'    ,20    );
insert into sale_history values(    6    ,'nankang'    ,'gangzhou'    ,'apple'    ,40    );
insert into sale_history values(    7    ,'longnan'    ,'nanchang'    ,'pencil'    ,10    );
insert into sale_history values(    8    ,'longnan'    ,'nanchang'    ,'pencil'    ,30    );
insert into sale_history values(    9    ,'longnan'    ,'nanchang'    ,'pencil'    ,40    );

结果:
regin    state   product total_sales
longnan                   80
longnan  nanchang         80
longnan  nanchang pencil  80
nankang                   100
nankang  gangzhou         100
nankang  gangzhou apple   100
xingfeng gangzhou apple   10
                          260
xingfeng                  80
xingfeng gangzhou         80
xingfeng gangzhou pencil  70


25.Having
针对group by的行进行过滤

26.Offset & fetch
分页,语法:
offset {integer-literal | ?} {ros | rows}
fetch {first|next} {integer-literal | ?} {row | rows} only
row & rows是同义词,first & next也是,经简单测试使用上没有什么区别?可能有一些差别,但目前不清楚。


27.Using
在连接查询时,用来连接两个表。在两个表有相同字段时,可以替代on
using(age) -> on a.age = b.age

28.Values
这个是用来在没有from条件时,比如构造值。比如oracle:select 6*5 from dual;
values 5*6;


29.Next value for
语法:Next value for sequenceName,从一个序列获得一个值,可以用于insert,update,select,values;
不能在有如下的情况下使用:
1)case expression2)where clause3)order by4)aggregate expression5)distinct select list6)row number function


30.Order by
一个特殊的是可以按列的序号来排序。


31.连接Join
分为五种:INNER JOIN,LEFT JOIN,RIGHT JOIN,CROSS JOIN,NATURAL JOIN
其中后两种没有on条件,通过两表相同的列来作判断。INNER JOIN是取两边相同的,LEFT JOIN保留左边,RIGHT JOIN保留右边。
CROSS JOIN笛卡尔乘积,下面三个查询是等效的:
1.select * from city cross join flight;
2.select * from city,flight;
3.select * from city innner join flight on 1 = 1.
当两个表没有相同列名时,natural join 也是笛卡尔乘积。

natural join有三种,默认是inner join。语法是:natural [{left|right}|inner] join

32.Except all,intersect
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值