? 2001-08 余枫编
一.数据控制语句 (dml) 部分
1.insert (往数据表里插入记录的语句)
insert into 表名(字段名1, 字段名2, ……) values ( 值1, 值2, ……);
insert into 表名(字段名1, 字段名2, ……) select (字段名1, 字段名2, ……) from 另外的表名;
字符串类型的字段值必须用单引号括起来, 例如: ’good day’
如果字段值里包含单引号’ 需要进行字符串转换, 我们把它替换成两个单引号´´.
字符串类型的字段值超过定义的长度会出错, 最好在插入前进行长度校验.
日期字段的字段值可以用当前数据库的系统时间sysdate, 精确到秒
或者用字符串转换成日期型函数to_date(‘2001-08-01’,’yyyy-mm-dd’)
to_date()还有很多种日期格式, 可以参看oracle doc.
年-月-日 小时:分钟:秒 的格式yyyy-mm-dd hh24:mi:ss
insert时最大可操作的字符串长度小于等于4000个单字节, 如果要插入更长的字符串, 请考虑字段用clob类型,
方法借用oracle里自带的dbms_lob程序包.
insert时如果要用到从1开始自动增长的序列号, 应该先建立一个序列号
create sequence 序列号的名称 (最好是表名+序列号标记) increment by 1 start with 1
maxvalue 99999 cycle nocache;
其中最大的值按字段的长度来定, 如果定义的自动增长的序列号 number(6) , 最大值为999999
insert 语句插入这个字段值为: 序列号的名称.nextval
2.delete (删除数据表里记录的语句)
delete from表名 where 条件;
注意:删除记录并不能释放oracle里被占用的数据块表空间. 它只把那些被删除的数据块标成unused.
如果确实要删除一个大表里的全部记录, 可以用 truncate 命令, 它可以释放占用的数据块表空间
truncate table 表名;
此操作不可回退.
3.update (修改数据表里记录的语句)
update表名 set 字段名1=值1, 字段名2=值2, …… where 条件;
如果修改的值n没有赋值或定义时, 将把原来的记录内容清为null, 最好在修改前进行非空校验;
值n超过定义的长度会出错, 最好在插入前进行长度校验..
注意事项:
a. 以上sql语句对表都加上了行级锁,
确认完成后, 必须加上事物处理结束的命令 commit 才能正式生效,
... 下一页