最近在上一門課 java語言高級開發, 其實主要在講java服務器的,也有jsp的相關內容。然後服務器肯定要經常的和數據庫打交道,這時就會不可避免的用上SQL語句。目前纔剛開始接觸數據庫,暫且只用了選擇、插入、修改、刪除這樣幾條語句。
常用的SQL語句
SQL語句是大小寫不敏感的,所以SELECT等同於select或是SElect。
選擇語句
SELECT 列名稱 FROM 表名稱
SELECT * FROM 表名稱
這個插入語句可以獲得表中的部分需要的數據。通過藉助WHERE語句來實現
SELECT 列名稱 FROM 表名稱 WHERE 列 運算符 值
其中操作符有如下幾種
操作符 | 描述 |
---|---|
= | 等於(和編程語言不一樣的是不需要雙等於號) |
<> | 不等於(這裏也和常用的編程語言不一樣)有的版本的SQL中也可以寫爲!= |
> | 大於 |
< | 小於 |
>= | 大於等於 |
<= | 小於等於 |
BETWEEN | 在某個範圍內 |
LIKE | 搜索某種模式 |
插入語句
使用INSERT INTO語句表示向表格中插入新的行。
INSERT INTO 表名稱 VALUES (值1, 值2,....)
INSERT INTO 表名稱 (列1, 列2,...) VALUES (值1, 值2,....)
如果你不寫 (列1, 列2, ...)
的話,VALUES內的值默認是從第一列開始向後排序。
修改語句
UPDATE 語句用於修改表中的數據。
UPDATE 表名稱 SET 列名稱 = 新值 WHERE 列名稱 = 某值
這裏也是要藉助WHERE來判斷修改哪條數據的,如果幾條數據的列名稱內容都相同的話,會全部被修改。
刪除語句
DELETE 語句用於刪除表中的行。
DELETE FROM 表名稱 WHERE 列名稱 = 值
藉助WHERE判斷刪除那一條數據,同上,如果幾條數據的列名稱內容相同,全部會被刪除,使用時需要注意。
“與” 和 “或”語句
使用 AND
和OR
表示“與”和“或”的邏輯運算符。
這個運算符通常用在WHERE語句中,用來連接多個條件。
AND運算符自然是,多個條件從頭到尾都滿足的記錄。
OR運算符是多個條件中,至少滿足一個的記錄
排序語句
ORDER BY 語句用於對結果集進行排序。
ORDER BY 語句用於根據指定的列對結果集進行排序。
ORDER BY 語句默認按照升序對記錄進行排序。
如果您希望按照降序對記錄進行排序,可以使用 DESC 關鍵字。
這個通常用在選擇語句,選擇時,返回的結果按照要求進行排序。
例:
SELECT Company, OrderNumber FROM Orders ORDER BY Company
可以使用DESC表示逆序排序,用ASC表示順序排序。
例:
SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC
JAVA中使用SQL語句
java中通常使用JDBC API來訪問數據庫。
在執行語句時,使用Statement對象
Connection conn = DbUtils.getConnection(); // 獲得與自己的數據庫的連接
Statement st = null; // Statement 用來執行語句
ResultSet rs = null; // ReslutSet 查詢返回的結果
String sql="select * from BookInfo where bookId="+book.getBookId();
rs = st.executeQuery(sql); // 執行SQL語句
while(rs.next()){
// 代碼操作
}
上述方式,是通過拼出一條完整的SQL語句來實現的,不是很安全,也可以通過使用預編譯方式來使用SQL語句。
Connection conn = DbUtils.getConnection(); // 獲得與自己的數據庫的連接
PreparedStatement ps = null; // PreparedStatement 用來執行語句
ResultSet rs = null; // ReslutSet 查詢返回的結果
conn=DbUtils.getConnection();
String sql="insert into UserInfo(userName,userSex,birthday ) " + " values( ? , ? , ? )";
ps=conn.prepareStatement(sql); // 獲得預編譯語句
ps.setString(1, "user01"); // 將第一個 '?' 替換爲 "user01"
ps.setString(2, "男"); // 將第二個 '?' 替換爲 "男"
ps.setDate (3, new java.sql.Date() ); // 將第三個 '?' 替換爲 Date數據
int ret=ps.executeUpdate(); // 執行預編譯語句
預編譯語句通過使用 ‘?’作爲一個佔位符,不是去硬拼一條SQL語句,因而更容易理解,也更安全,關於預編譯語言的更細節的教程,請移步更全的博客。