1、建表
create table "test"."test"(
field1 varchar(20) primary key,
field2 varchar(20) not null,
field3 varchar(20) not null
);
2、创建约束
constraint primary_key_name primary key(id);
删除约束
alter table test.test drop constraint constraint_name
3、添加字段
查表
3、删除表
drop table table_name;
4、删除表中的数据,一次性清空表
truncate table table_name;
5、一行一行地删除数据,不释放表空间
delete table table_name:
这个只是将数据标记为删除。
6、主键
1)主键的数据类型可以是任何类型
2)自动生成主键
(1)sequence 序列
(2)trigger 触发器
7、修改字段类型
8、plsql默认不提交事务
可以在执行SQL语句之后,使用commit来提交SQL的执行
9、实例:
(1)、批量插入数据
Dao接口:int insertSvgs(List<svg> svgs);
<insert id="insertSvgs" parameterType="List" useGeneratedKeys="false">
insert into svg(type,name,width,height,types)
<foreach item="svg" index="index" collection="list" separator="union all">
(select #{svg.type},#{svg.name},#{svg.width},#{svg.heigth},#{svg.types})
</foreach>
</insert>
(2)、in查询
Dao接口:List<String> querySvgByNames(List<Svg> svgList);
<select id="querySvgByNames" parameterType="List" resultType="String"?
select t.name from svg t where name in
<foreach item="svg" index="index" collection="list" separator="," open="(" close=")">
#{svg.name}
</foreach>
</select>
(3)、插入数据并返回自增主键
Dao接口:int insertNameplate(Nameplate nameplate);
<insert id="insertNameplate" parameterType="Nameplate">
<selectKey keyProperty="nameplateId" order="BEFORE" resultType="String1">
select cast(nameplate_sequece.nextval al varchar(7) as nameplateId from sys.dual)
</selectKey>
insert into nameplate(nameplate_id,nameplate_value) values(#{nameplateId},#{nameplateValue})
</insert>
在postgresql中,需要将以上sql中的“from sys.dual”删掉。
(4)、声明主键约束
constraint primary_key_name primary key(id);
(5)、创建序列
create sequence nameplate_sequence
start with 1000000
increment by 1
cache 20
maxvalue 99999999 #以1000000开始,每次自增1,缓存20个值,最大值为:99999999
(6)、创建触发器
create or replace trigger svg_trigger
before insert on svg for each row
declare
begin
select svg_sequence.nextval into:new.id from sys.dual;
end svg_trigger;
在postgresql中需要删除“from sys.dual”