SQL知识积累

1.如果存在更新数据库,如果不存在就插入数据库(merg into)语法

  merg into table_name alias1 using (table|view|sub_query alias2 on (join condition)

  when matched then update table_name set col1=col1value,col2=col2value

  when not matched then insert into (col1,col2,...,coln) values(col1value,col2value,....colnvalue);

2.java程序里面插入数据库拼接sql语句的方法:

  1.定义StringBuffer接收拼接的字段

      StringBuffer sql = new StringBuffer("select col1,col2,col3,col3 from table_name  where coln='").append(colnvalue).append("'")append("' and coln='").append(colnvalue).append("'");;

 sql.toString();

2.定义StringBuilder接收拼接字段

   StringBuilder sql = new StringBuilder("insert into table_name (col1,col2,col3) values('");
            sql.append(info[0]).append("','").append(info[1]).append("','").append(info[2]).append("')");

sql.toString();


3.循环数组拼接


         String sql= "insert into  table_name values( ";
          for(int i =0;i<list.size();i++)
            {
               String[] str = (String[])list.get(i);
               for(int k=0;k<str.length;k++)
                {
                  if(k==(str.length-1))
                   {
                     sql+="'"+str[k]+"'";
                   }
                  else
                  {
                       sql+="'"+str[k]+"',";
                  }
                }
           }
       sql+=");";


4.Statement stmt = conn.createStatement();
 int[] rows;
 for(int i=0; i<employees.length;i++)
 {
  stmt.addBatch("UPDATE EMPLOYEES SET SALARY=" +
  employees[i].salary  +
  "WHERE ID=" +
  employee[i].id);
 }
 rows = stmt.executeBatch();


5.触发器:

      触发器是一种特殊的存储过程。它在插入、删除或修改特定表中的数据时触发执行,它比数据库本身标准的功能有更精细和更复杂的数据控制能力。

      与存储过程相同,触发器也存储在数据库中,使用SQLPL/SQL语句编写。存储过程和触发器最主要的区别在于它们运行的方式不同。存储过程由用户、应用程序或触发器显式调用,而触发器则是当触发事件发生时由系统触发执行。

      触发器按照所触发动作的间隔尺寸可以分为语句级触发器和行级触发器,CREATE TRIGGER语句的FOR EACH子句定义了触发动作的间隔尺寸,它既可以是FOR EACH STATEMENT,也可以是FOR EACH ROW。


 




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值