1. 程式人生 > >資料庫的一些常用操作總結

資料庫的一些常用操作總結

建立表

格式:

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開發步驟

  1. 註冊驅動.

    通常開發我們使用Class.forName() 載入一個使用字串描述的驅動類。

    如果使用Class.forName()將類載入到記憶體,該類的靜態程式碼將自動執行。

    Class.forName("com.mysql.jdbc.Driver");
    
  2. 獲得連線

    獲取連線需要方法 DriverManager.getConnection(url,username,password),三個引數分別表示

    Connection con = DriverManager.getConnection
    (“jdbc:mysql://localhost:3306/mydb”,”username”,”password”);
    
  3. 獲得語句執行平臺

    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.
    
  4. 執行sql語句

  5. 處理結果

    ResultSet實際上就是一張二維的表格,我們可以呼叫其boolean next()方法指向某行記錄,當第一次呼叫next()方法時,便指向第一行記錄的位置,這時就可以使用ResultSet提供的getXXX(int col)方法(與索引從0開始不同個,列從1開始)來獲取指定列的資料。

    re.next();		//指向第一行
    rs.getInt(1);	//獲取第一行第一列的資料
    
  6. 釋放資源

    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檔案,此檔案我們將做如下要求:

  1. 檔案位置:任意,建議src下
  2. 檔名稱:任意,副檔名為properties
  3. 檔案內容:一行一組資料,格式是“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