資料庫的一些常用操作總結
建立表
格式:
create table 表名(
欄位名 型別(長度) 約束,
欄位名 型別(長度) 約束
);
主鍵約束
主鍵是用於標識當前記錄的欄位。它的特點是非空,唯一。在開發中一般情況下主鍵是不具備任何含義,只是用於標識當前記錄。
格式:
1、在建立表時建立主鍵,在欄位後面加上 primary key.
create table tablename(
id int primary key,
.......
)
2、在建立表時建立主鍵,在表建立的最後來指定主鍵
create table tablename(
id int ,
.......,
primary key(id)
)
3.刪除主鍵:alter table 表名 drop primary key;
alter table sort drop primary key;
4.主鍵自動增長:一般主鍵是自增長的欄位,不需要指定。
實現新增自增長語句,主鍵欄位後加auto_increment(只適用MySQL)
插入表記錄:
insert into 表 (列名1,列名2,列名3..) values (值1,值2,值3..); -- 向表中插入某些列
insert into 表 values (值1,值2,值3..); --向表中插入所有列
更新表記錄:
update 表名 set 欄位名=值,欄位名=值;
update 表名 set 欄位名=值,欄位名=值 where 條件;
刪除記錄:delete
delete from 表名 [where 條件];
或者
truncate table 表名;
查詢的語法:
查詢指定欄位資訊
select 欄位1,欄位2,...from 表名;
例如:
select id,name from zhangwu;
查詢表中所有欄位
select * from 表名;
例如:
select * from zhangwu;
distinct用於去除重複記錄
select distinct 欄位 from 表名;
where語句表條件過濾。滿足條件操作,不滿足不操作,多用於資料的查詢與修改。
select 欄位 from 表名 where 條件;
JDBC概述
JDBC(Java Data Base Connectivity,java資料庫連線)是一種用於執行SQL語句的Java API,可以為多種關係資料庫提供統一訪問,它由一組用Java語言編寫的類和介面組成。
mysql的驅動mysql-connector-java-5.1.39-bin.jar
JDBC是介面,驅動是介面的實現,沒有驅動將無法完成資料庫連線,從而不能操作資料庫!
JDBC開發步驟
-
註冊驅動.
通常開發我們使用Class.forName() 載入一個使用字串描述的驅動類。
如果使用Class.forName()將類載入到記憶體,該類的靜態程式碼將自動執行。
Class.forName("com.mysql.jdbc.Driver");
-
獲得連線
獲取連線需要方法 DriverManager.getConnection(url,username,password),三個引數分別表示
Connection con = DriverManager.getConnection (“jdbc:mysql://localhost:3306/mydb”,”username”,”password”);
-
獲得語句執行平臺
String sql = "某SQL語句"; 獲取Statement語句執行平臺:Statement stmt = con.createStatement(); int executeUpdate(String sql); //--執行insert update delete語句. ResultSet executeQuery(String sql); //--執行select語句. boolean execute(String sql); //--執行select返回true 執行其他的語句返回false.
-
執行sql語句
-
處理結果
ResultSet實際上就是一張二維的表格,我們可以呼叫其boolean next()方法指向某行記錄,當第一次呼叫next()方法時,便指向第一行記錄的位置,這時就可以使用ResultSet提供的getXXX(int col)方法(與索引從0開始不同個,列從1開始)來獲取指定列的資料。
re.next(); //指向第一行 rs.getInt(1); //獲取第一行第一列的資料
-
釋放資源
rs.close(); //使用後的東西都要關閉!!!先得到的後關閉。 stmt.close(); con.close();
預處理物件
使用PreparedStatement預處理物件時,每條sql語句所有的實際引數,都使用逗號分隔。
String sql = "insert into sort(sid,sname) values(?,?)"; //?是佔位符
PreparedStatement psmt = conn.prepareStatement(sql);
執行SQL語句的方法:
int executeUpdate(); //--執行insert update delete語句.
ResultSet executeQuery(); //--執行select語句.
boolean execute(); //--執行select返回true 執行其他的語句返回false.
設定實際引數
void setXxx(int index, Xxx xx) //將指定引數設定為給定Java的xx值。 index 是?的位置
封裝JDBC工具類
“獲得資料庫連線”操作,將在以後的增刪改查所有功能中都存在,可以封裝工具類JDBCUtils。提供獲取連線物件的方法,從而達到程式碼的重複利用。
public class JDBCUtils {
public static final String DRIVERNAME = "com.mysql.jdbc.Driver";
public static final String URL = "jdbc:mysql://192.168.6.127:3306/mydb";
public static final String USER = "root";
public static final String PASSWORD = "123456";
static {
try {
Class.forName(DRIVERNAME);
} catch (ClassNotFoundException e) {
System.out.println("資料庫驅動註冊失敗!");
}
}
//提供獲取連線的方法
public static Connection getConn() throws Exception {
// 2. 獲得連線
Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);
// 返回連線
return conn;
}
}
properties配置檔案
使用properties配置檔案
開發中獲得連線的4個引數(驅動、URL、使用者名稱、密碼)通常都存在配置檔案中,方便後期維護,程式如果需要更換資料庫,只需要修改配置檔案即可。
通常情況下,我們習慣使用properties檔案,此檔案我們將做如下要求:
- 檔案位置:任意,建議src下
- 檔名稱:任意,副檔名為properties
- 檔案內容:一行一組資料,格式是“key=value”.
1、輸入“db.properties”檔名
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://192.168.6.129:3306/mydb
user=root
password=123456
2、載入配置檔案:Properties物件
對應properties檔案處理,採用載入properties檔案獲得流,然後使用Properties物件進行處理。
這裡就可以優化上面的JDBCUtil檔案~~~
public class JDBCUtils {
private static String driver;
private static String url;
private static String user;
private static String password;
// 靜態程式碼塊
static {
try {
// 1 使用Properties處理流
// 使用load()方法載入指定的流
Properties props = new Properties();
Reader is = new FileReader("db.properties");
props.load(is);
// 2 使用getProperty(key),通過key獲得需要的值,
driver = props.getProperty("driver");
url = props.getProperty("url");
user = props.getProperty("user");
password = props.getProperty("password");
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* 獲得連線
*/
public static Connection getConnection() {
try {
// 1 註冊驅動
Class.forName(driver);
// 2 獲得連線
Connection conn = DriverManager.getConnection(url, user, password);
return conn;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
DBUtils
DBUtils就是JDBC的簡化開發工具包。需要專案匯入commons-dbutils-1.6.jar才能夠正常使用DBUtils工具。
Dbutils三個核心功能介紹
1、QueryRunner中提供對sql語句操作的API.
2、ResultSetHandler介面,用於定義select操作後,怎樣封裝結果集.
3、DbUtils類,它就是一個工具類,定義了關閉資源與事務處理的方法
QueryRunner核心類
update(Connection conn, String sql, Object... params) //用來完成表資料的增加、刪除、更新操作
query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params) //用來完成表資料的查詢操作
程式碼如下:
值得注意的是,這裡params使用的是一個Object類的陣列,因為你不知到你傳遞的是什麼型別的資料。
//這裡就看看新增的程式碼
public void insert(){
try {
//獲取一個用來執行SQL語句的物件 QueryRunner
QueryRunner qr = new QueryRunner();
String sql = "INSERT INTO YYYY(XXX,XXX,XXX) VALUES(?,?,?)";
Object[] params = {"000", 000, "000"};
Connection conn = JDBCUtils.getConnection();
int line = qr.update(conn,sql,params);// 用來完成表資料的增加、刪除、更新操作
//結果集處理
System.out.println("line = " + line);
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
ResultSetHandler結果集處理類
這裡的額話呢,結果集的選擇就是值得考慮的問題,要看不同的需求。
這裡的JavaBean是一個封裝資料的類,提供了getter和setter方法,並且提供了private私有欄位。
ArrayHandler | 將結果集中的第一條記錄封裝到一個Object[]陣列中,陣列中的每一個元素就是這條記錄中的每一個欄位的值 |
---|---|
ArrayListHandler | 將結果集中的每一條記錄都封裝到一個Object[]陣列中,將這些陣列在封裝到List集合中。 |
BeanHandler | 將結果集中第一條記錄封裝到一個指定的javaBean中。 |
BeanListHandler | 將結果集中每一條記錄封裝到指定的javaBean中,將這些javaBean在封裝到List集合中 |
ColumnListHandler | 將結果集中指定的列的欄位值,封裝到一個List集合中 |
ScalarHandler | 它是用於單資料。例如select count(*) from 表操作。 |
MapHandler | 將結果集第一行封裝到Map集合中,Key 列名, Value 該列資料 |
MapListHandler | 將結果集第一行封裝到Map集合中,Key 列名, Value 該列資料,Map集合儲存到List集合 |
連線池
個人覺得他跟執行緒池差不多,也就是避免資源的浪費,提高複用性。
DBCP連線池
DataSource : 它是java中提供的連線池,作為 DriverManager 工具的替代項。
public class JDBCUtils {
public static final String DRIVER = "com.mysql.jdbc.Driver";
public static final String URL = "jdbc:mysql://192.168.6.129:3306/daydb";
public static final String USERNAME = "root";
public static final String PASSWORD = "123456";
/*
* 建立連線池BasicDataSource
*/
public static BasicDataSource dataSource = new BasicDataSource();
//靜態程式碼塊
static {
//對連線池物件 進行基本的配置
dataSource.setDriverClassName(DRIVER); // 這是要連線的資料庫的驅動
dataSource.setUrl(URL); //指定要連線的資料庫地址
dataSource.setUsername(USERNAME); //指定要連線資料的使用者名稱
dataSource.setPassword(PASSWORD); //指定要連線資料的密碼
}
/*
* 返回連線池物件
*/
public static DataSource getDataSource(){
return dataSource;
}
}
相關推薦
資料庫的一些常用操作總結
建立表 格式: create table 表名( 欄位名 型別(長度) 約束, 欄位名 型別(長度) 約束 ); 主鍵約束 主鍵是用於標識當前記錄的欄位。它的特點是非空,唯一。在開發中一般情況下主鍵是不具備任何含義,只是用於標識當前記錄。 格式
JavaScript:對Object物件的一些常用操作總結
JavaScript對Object物件的一些常用操作總結。 一、Object.assign() 1.可以用作物件的複製 var obj = { a: 1 }; var copy = Object.assign({}, obj); console.log(copy); // { a: 1 } 2.可以用
JavaScript:對Object對象的一些常用操作總結
property ons num rop 枚舉 keys 2.3 segment pro JavaScript對Object對象的一些常用操作總結。 一、Object.assign() 1.可以用作對象的復制 var obj = { a: 1 }; var copy = O
golang關於陣列的一些常用操作總結
陣列初始化 一維陣列 var a [4]int //元素自動初始化為零[0 0 0 0] b := [4]int{2, 5} //未提供初始化值得元素自動初始化為0 [2 5 0 0] c := [...]int{1, 2, 3} //編譯器按初始化值數量確定陣列長度 [1 2 3
Oracle資料庫常用操作總結(一)
--oracle cs架構軟體 --客戶端 --tns --協議 --ip --埠 --資料庫名字 --監聽如果出了問題,先刪除所有監聽,再重建。netca。tns檔案中名字不能重複, --oracle預設自帶兩個管理員使用者 sys system 這兩個使用者在登入時
linux 下面oracle資料庫的一些常用操作,包含啟動arcgissde
1、啟動或者關閉oralce資料庫(12C版本) 以oracle身份登入資料庫,命令:su - oracle (2) 進入Sqlplus控制檯,命令:sqlplus /nolog (3) 以系統管理員登入,命令:connect /as sysdba (4) 啟動
java 基礎學習總結(附帶eclipse一些常用操作)
一、this關鍵字 1、使用this呼叫本類成員變數和成員函式 2、使用this呼叫建構函式 二、靜態變數static關鍵字 1、含有static成員變數,成員函式。可以直接使用類名來呼叫。 2、靜態
Mysql資料庫常用操作總結(一)
一、windows下mysql資料庫備份1.1 說明 mysql資料庫備份的方法有很多,接下來要說的是用navicat進行備份,過程超簡單。1.2 過程 1)資料庫的備份找到要備份的資料庫(xqdb),單擊右鍵,選擇“轉儲SQL檔案”,儲存到電腦桌面,如下:此時,桌面上會
linux下一些常用操作命令
linux 防火墻 端口 1、兩個服務器ssh免授權:ssh-keygen -t rsa 一直回車至結束ssh-copy-id -i /root/.ssh/id_rsa.pub 遠程ip 然後回車 輸入遠程ip密碼搞定,以後訪問就不用驗證密碼了2、壓縮和解壓縮命令: .tar
Centos版Linux 一些常用操作命令
chmod passwd perm sea 發生 搜索命令 ted profile more Linux命令收集 1、文件處理命令:ls 功能描述:顯示目錄文件 命令英文原意:list 命令所在路徑:/bin/ls 執行權限:所有用戶 語法: ls 選項
文件系統的一些常用操作方法
取代 tel 指定位置 and out with 截斷 換行符 wrapper 2 #date: 17/10/5 3 import time ,sys 4 #練習文件的操作 5 #實現三級菜單 6 #今天任務 7 8 #能調用方法的一定是對
String類的一些常用操作方法
pri lis list split exc 數組 value commons build 1 package com.liveyc.framework.util; 2 3 import java.io.UnsupportedEncodingExceptio
MongoDB使用小結:一些常用操作分享
hist b數 文件 存儲信息 無法拷貝 分享 rand case accep 本文整理了一年多以來我常用的MongoDB操作,涉及mongo-shell、pymongo,既有運維層面也有應用層面,內容有淺有深,這也就是我從零到熟練的歷程。 Mong
Mac下如何用SSH連接遠程Linux服務器及Linux一些常用操作命令,更新中.....
oot .... 地址 密碼 res ini 更新 目錄 讀寫 1、 終端命令 a).打開Mac的命令終端 b).輸入ssh -p 22 [email protected] 它會提示你輸入密碼,輸入正確的密碼之後,你就發現已經登陸成功了.(22: 端口號 roo
MySQL資料庫的常用操作一
1.開啟、關閉MySQL服務:service mysql start/stop 2.檢視MySQL資料庫的狀態:service mysql status 3.登陸MySQL資料庫:mysql &n
rails 日期Date、時間Time的一些常用方法總結
獲取當前時間、今天的當前日期 Time.now 國際時間就是Time.now.utc Date.today 日相關的獲取方法 一天的開始也就是0點00分 2.4.1 :001 > Time.now.beginning_of_day
js一些常用方法總結
這兩天開始在牛客網上做一些js線上程式設計,發現很多程式設計題其實呼叫的js方法都差不多一樣,所以覺得可以彙總一下,方便記憶也可以多多熟悉。 1.slice()方法 這個方法就是可以從已有的陣列中返回選定的元素。 必須得有start,但是可以沒有end。 2
Yii2 常用操作總結
時區配置 #common\config\main.php return [ 'timeZone' => 'Asia/Shanghai', ] a標籤 <?= Html::a('Delete', ['delete', 'id' =>$model->id]
python日期模組datetime常用操作總結(字串與datetime物件互轉、日期差值計算、時間戳獲取、時間陣列生成等)
在python中,自帶的datetime和time兩個時間模組在平時的使用中可以滿足我們絕大多數的需求,但是由於缺乏對這些模組深度的瞭解和使用,導致平時能夠使用到的時間功能十分有限,例如:對於time模組,我的使用幾乎就是停留在程式執行時間的統計和時間戳生成這
Linux一些常用操作命令
1.建立一個等同於root管理員的使用者 useradd -u 0 -o -g root -G root -d /home/username username usermod -u 0 -o -g root -G root user