數據庫系統概論-第五章

動態SQL 編程語言使用函數鏈接數據庫服務器,在運行時以字符串的形式構建交互查詢 如JDBC和ODBC
嵌入式SQL 嵌入式SQL必須在編譯時所有肯定,提交給預處理器,預處理器提交SQL到數據庫系統進行預編譯和優化html

JDBC java database connectivityjava

預編譯語句能夠解決SQL注入的問題mysql

public static void connectExample(String userId,String password){sql

try {
        Class.forName("Oracle.jdbc.driver.OracleDriver");

        Connection conn = DriverManager.getConnection("", userId, password);

        Statement stmt = conn.createStatement();
        
        stmt.executeUpdate("update student set name ='Harry' where id =1");

        ResultSet rset = stmt.executeQuery("select id,name from student where id =1");
        
        while(rset.next()){
            System.out.println("id: "+rset.getString("id")+",name: "+rset.getString("name"));
        }
        
    }catch(Exception e){
        e.printStackTrace();
    }
}

函數和過程數據庫

存儲過程能夠將業務邏輯持久化,提供給其餘的業務進行調用。編程

函數
http://www.javashuo.com/article/p-qwuhelrz-k.html服務器

CREATE FUNCTION func_name ( [func_parameter] ) //括號是必須的,參數是可選的
RETURNS type
[ characteristic ...] routine_bodyless

CREATE FUNCTION 用來建立函數的關鍵字;
func_name 表示函數的名稱;
func_parameters爲函數的參數列表,參數列表的形式爲:[IN|OUT|INOUT] param_name type編程語言

IN:表示輸入參數;
OUT:表示輸出參數;
INOUT:表示既能夠輸入也能夠輸出;
param_name:表示參數的名稱;
type:表示參數的類型,該類型能夠是MySQL數據庫中的任意類型;函數

RETURNS type:語句表示函數返回數據的類型;

characteristic: 指定存儲函數的特性,取值與存儲過程時相同

MYSQL

Expressions 能夠使用列值,NULL,MYSQL內置函數,用戶自定義函數來寫,其能夠在SELECT,UPDATE,DELETE,ORDER BY,HAVING語句中使用。

建立函數時mysql提示:
Error Code: 1418. This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you might want to use the less safe log_bin_trust_function_creators variable)

解決方法:
SET GLOBAL log_bin_trust_function_creators = 1;

Error Code: 1054. Unknown column 'employee_id' in 'where clause'

觸發器

觸發器是一條語句,當對數據庫作響應的修改時,其被系統自動執行。

觸發器能夠實現未被SQL約束機制指定的某些完整性約束(好比未使用外鍵時保證字段值的一致性)

相關文章
相關標籤/搜索