java查詢mysql數據(java獲取mysql裡面的數據)

本文目錄一覽:

如何在Java程序中訪問mysql數據庫中的數據並進行簡單的操作

一、使用工具:java語言、Myeclipse。

二、操作步驟:

1、第一步:加載MySQL的JDBC的驅動

2、第二步:創建與MySQL數據庫的連接類的實例

3、第三步:獲取連接類實例con,用con創建Statement對象類實例 sql_statement

4、第四步:執行查詢,用ResultSet類的對象,返回查詢的結果

5、得出數據

三、注意事項:有幾處是需要根據自身情況修改的

1、如下圖中的url和賬號,密碼需要與你自己的相一致。

2、這些需要訪問的數據必須要與數據庫中的類型相互匹配,才能打印出正確的結果。

java中怎樣對mysql數據庫查詢

import java.sql.Connection;  

import java.sql.DriverManager;  

import java.sql.ResultSet;  

import java.sql.ResultSetMetaData;  

import java.sql.Statement;  

import java.util.Hashtable;  

  

  

public class GetDBFiled {  

    public static void conn() {  

        String driver = “com.mysql.jdbc.Driver”;  

        String url = “jdbc:mysql://localhost:3306/databaseName”;  

        String user = “root”;  

        String password = “密碼”;  

        try {  

            Class.forName(driver);  

            Connection conn = DriverManager.getConnection(url, user, password);  

            if (!conn.isClosed()) {  

                String sql = “select * from pic”;  

                System.out.println(“Succeeded connecting to the Database!”);  

                Statement statement =conn.createStatement();  

                ResultSet rs = statement.executeQuery(sql);  

                if (rs.next()) {  

                    // 得到ResultSetMetaData  

                    ResultSetMetaData rsmd = rs.getMetaData();  

                    System.out.println(rsmd.getColumnCount());  

                    for (int i = 1; i = rsmd.getColumnCount(); i++) {  

                        Hashtable hst = new Hashtable();  

                        // 把字段名放入Name  

                        String name = String.valueOf(rsmd.getColumnLabel(i));  

                        hst.put(“Name”, name);  

                        // 把字段類型放入Type  

                        String type = String.valueOf(rsmd.getColumnType(i));  

                        hst.put(“Type”, type);  

                        System.out.println(hst.get(“Name”)+”  “+hst.get(“Type”));  

                    }  

                }  

            }  

        } catch (Exception e) {  

  

            System.out.println(“出現異常”);  

        }  

  

    }  

}

java中的MySQL查詢語句

1:使用SHOW語句找出在服務器上當前存在什麼數據庫:

mysql SHOW DATABASES;

2:2、創建一個數據庫MYSQLDATA

mysql CREATE DATABASE MYSQLDATA;

3:選擇你所創建的數據庫

mysql USE MYSQLDATA; (按回車鍵出現Database changed 時說明操作成功!)

4:查看現在的數據庫中存在什麼表

mysql SHOW TABLES;

5:創建一個數據庫表

mysql CREATE TABLE MYTABLE (name VARCHAR(20), sex CHAR(1));

6:顯示錶的結構:

mysql DESCRIBE MYTABLE;

7:往表中加入記錄

mysql insert into MYTABLE values (”hyq”,”M”);

8:用文本方式將數據裝入數據庫表中(例如D:/mysql.txt)

mysql LOAD DATA LOCAL INFILE “D:/mysql.txt” INTO TABLE MYTABLE;

9:導入.sql文件命令(例如D:/mysql.sql)

mysqluse database;

mysqlsource d:/mysql.sql;

10:刪除表

mysqldrop TABLE MYTABLE;

11:清空表

mysqldelete from MYTABLE;

12:更新表中數據

mysqlupdate MYTABLE set sex=”f” where name=’hyq’;

以下是無意中在網絡看到的使用MySql的管理心得,

在windows中MySql以服務形式存在,在使用前應確保此服務已經啟動,未啟動可用net start mysql命令啟動。而Linux中啟動時可用“/etc/rc.d/init.d/mysqld start”命令,注意啟動者應具有管理員權限。

剛安裝好的MySql包含一個含空密碼的root帳戶和一個匿名帳戶,這是很大的安全隱患,對於一些重要的應用我們應將安全性儘可能提高,在這裡應把匿名帳戶刪除、 root帳戶設置密碼,可用如下命令進行:

use mysql;

delete from User where User=””;

update User set Password=PASSWORD(’newpassword’) where User=’root’;

如果要對用戶所用的登錄終端進行限制,可以更新User表中相應用戶的Host字段,在進行了以上更改後應重新啟動數據庫服務,此時登錄時可用如下類似命令:

mysql -uroot -p;

mysql -uroot -pnewpassword;

mysql mydb -uroot -p;

mysql mydb -uroot -pnewpassword;

上面命令參數是常用參數的一部分,詳細情況可參考文檔。此處的mydb是要登錄的數據庫的名稱。

在 進行開發和實際應用中,用戶不應該只用root用戶進行連接數據庫,雖然使用root用戶進行測試時很方便,但會給系統帶來重大安全隱患,也不利於管理技 術的提高。我們給一個應用中使用的用戶賦予最恰當的數據庫權限。如一個只進行數據插入的用戶不應賦予其刪除數據的權限。MySql的用戶管理是通過 User表來實現的,添加新用戶常用的方法有兩個,一是在User表插入相應的數據行,同時設置相應的權限;二是通過GRANT命令創建具有某種權限的用戶。其中GRANT的常用用法如下:

grant all on mydb.* to NewUserName@HostName identified by “password” ;

grant usage on *.* to NewUserName@HostName identified by “password”;

grant select,insert,update on mydb.* to NewUserName@HostName identified by “password”;

grant update,delete on mydb.TestTable to NewUserName@HostName identified by “password”;

若 要給此用戶賦予他在相應對象上的權限的管理能力,可在GRANT後面添加WITH GRANT OPTION選項。而對於用插入User表添加的用戶,Password字段應用PASSWORD 函數進行更新加密,以防不軌之人竊看密碼。對於那些已經不用的用戶應給予清除,權限過界的用戶應及時回收權限,回收權限可以通過更新User表相應字段, 也可以使用REVOKE操作。

下面給出本人從其它資料()獲得的對常用權限的解釋:

全局管理權限:

FILE: 在MySQL服務器上讀寫文件。

PROCESS: 顯示或殺死屬於其它用戶的服務線程。

RELOAD: 重載訪問控制表,刷新日誌等。

SHUTDOWN: 關閉MySQL服務。

數據庫/數據表/數據列權限:

ALTER: 修改已存在的數據表(例如增加/刪除列)和索引。

CREATE: 建立新的數據庫或數據表。

DELETE: 刪除表的記錄。

DROP: 刪除數據表或數據庫。

INDEX: 建立或刪除索引。

INSERT: 增加表的記錄。

SELECT: 顯示/搜索表的記錄。

UPDATE: 修改表中已存在的記錄。

特別的權限:

ALL: 允許做任何事(和root一樣)。

USAGE: 只允許登錄–其它什麼也不允許做。

一、 簡單查詢

簡單的Transact-SQL查詢只包括選擇列表、FROM子句和WHERE子句。它們分別說明所查詢列、查詢的

表或視圖、以及搜索條件等。

例如,下面的語句查詢testtable表中姓名為“張三”的nickname字段和email字段。

複製內容到剪貼板

代碼:SELECT `nickname`,`email`FROM `testtable`WHERE `name`=’張三’

(一) 選擇列表

選擇列表(select_list)指出所查詢列,它可以是一組列名列表、星號、表達式、變量(包括局部變量和全局變量)等構成。

1、選擇所有列

例如,下面語句顯示testtable表中所有列的數據:

複製內容到剪貼板

代碼:SELECT * FROM testtable

2、選擇部分列並指定它們的顯示次序

查詢結果集合中數據的排列順序與選擇列表中所指定的列名排列順序相同。

例如:

複製內容到剪貼板

代碼:SELECT nickname,email FROM testtable

3、更改列標題

在選擇列表中,可重新指定列標題。定義格式為:

列標題=列名

列名 列標題

如果指定的列標題不是標準的標識符格式時,應使用引號定界符,例如,下列語句使用漢字顯示列

標題:

複製內容到剪貼板

代碼:SELECT 昵稱=nickname,電子郵件=email FROM testtable

4、刪除重複行

SELECT語句中使用ALL或DISTINCT選項來顯示錶中符合條件的所有行或刪除其中重複的數據行,默認

為ALL。使用DISTINCT選項時,對於所有重複的數據行在SELECT返回的結果集合中只保留一行。

5、限制返回的行數

使用TOP n [PERCENT]選項限制返回的數據行數,TOP n說明返回n行,而TOP n PERCENT時,說明n是

表示一百分數,指定返回的行數等於總行數的百分之幾。

例如:

複製內容到剪貼板

代碼:SELECT TOP 2 * FROM `testtable`

複製內容到剪貼板

代碼:SELECT TOP 20 PERCENT * FROM `testtable`

(二) FROM子句

FROM子句指定SELECT語句查詢及與查詢相關的表或視圖。在FROM子句中最多可指定256個表或視圖,

它們之間用逗號分隔。

在FROM子句同時指定多個表或視圖時,如果選擇列表中存在同名列,這時應使用對象名限定這些列

所屬的表或視圖。例如在usertable和citytable表中同時存在cityid列,在查詢兩個表中的cityid時應

使用下面語句格式加以限定:

複製內容到剪貼板

代碼:SELECT `username`,citytable.cityid

FROM `usertable`,`citytable`

WHERE usertable.cityid=citytable.cityid在FROM子句中可用以下兩種格式為表或視圖指定別名:

複製內容到剪貼板

代碼:表名 as 別名

表名 別名例如上面語句可用表的別名格式表示為:

複製內容到剪貼板

代碼:SELECT `username`,b.cityid

FROM usertable a,citytable b

WHERE a.cityid=b.cityidSELECT不僅能從表或視圖中檢索數據,它還能夠從其它查詢語句所返回的結果集合中查詢數據。

例如:

複製內容到剪貼板

代碼:SELECT a.au_fname+a.au_lname

FROM authors a,titleauthor ta

(SELECT `title_id`,`title`

FROM `titles`

WHERE ` ytd_sales`10000

) AS t

WHERE a.au_id=ta.au_id

AND ta.title_id=t.title_id此例中,將SELECT返回的結果集合給予一別名t,然後再從中檢索數據。

(三) 使用WHERE子句設置查詢條件

WHERE子句設置查詢條件,過濾掉不需要的數據行。例如下面語句查詢年齡大於20的數據:

複製內容到剪貼板

代碼:SELECT * FROM usertable WHERE age20 WHERE子句可包括各種條件運算符:

比較運算符(大小比較):、=、=、、!、!=10 AND age複製內容到剪貼板

代碼:SELECT * FROM `usertable` ORDER BY `age` DESC,`userid` ASC另外,可以根據表達式進行排序。

二、 聯合查詢

UNION運算符可以將兩個或兩個以上上SELECT語句的查詢結果集合合併成一個結果集合顯示,即執行聯

合查詢。

UNION的語法格式為:

複製內容到剪貼板

代碼:select_statement

UNION [ALL] selectstatement

[UNION [ALL] selectstatement][…n]其中selectstatement為待聯合的SELECT查詢語句。

ALL選項表示將所有行合併到結果集合中。不指定該項時,被聯合查詢結果集合中的重複行將只保留一行。

聯合查詢時,查詢結果的列標題為第一個查詢語句的列標題。因此,要定義列標題必須在第一個查詢語

句中定義。要對聯合查詢結果排序時,也必須使用第一查詢語句中的列名、列標題或者列序號。

在使用UNION 運算符時,應保證每個聯合查詢語句的選擇列表中有相同數量的表達式,並且每個查詢選

擇表達式應具有相同的數據類型,或是可以自動將它們轉換為相同的數據類型。在自動轉換時,對於數值類

型,系統將低精度的數據類型轉換為高精度的數據類型。

在包括多個查詢的UNION語句中,其執行順序是自左至右,使用括號可以改變這一執行順序。例如:

查詢1 UNION (查詢2 UNION 查詢3)

三、連接查詢

通過連接運算符可以實現多個表查詢。連接是關係數據庫模型的主要特點,也是它區別於其它類型數據庫管理系統的一個標誌。

在關係數據庫管理系統中,表建立時各數據之間的關係不必確定,常把一個實體的所有信息存放在

一個表中。當檢索數據時,通過連接操作查詢出存放在多個表中的不同實體的信息。連接操作給用戶帶

來很大的靈活性,他們可以在任何時候增加新的數據類型。為不同實體創建新的表,爾後通過連接進行

查詢。

連接可以在SELECT 語句的FROM子句或WHERE子句中建立,似是而非在FROM子句中指出連接時有助於

將連接操作與WHERE子句中的搜索條件區分開來。所以,在Transact-SQL中推薦使用這種方法。

SQL-92標準所定義的FROM子句的連接語法格式為:

代碼:FROM join_table join_type join_table [ON (join_condition)]其中join_table指出參與連接操作的表名,連接可以對同一個表操作,也可以對多表操作,對同一個表操作的連接又稱做自連接。

join_type 指出連接類型,可分為三種:內連接、外連接和交叉連接。

內連接(INNER JOIN)使用比較運算符進行表間某(些)列數據的比較操作,並列出這些表中與連接條件相匹配的數據行。根據所使用的比較方式不同,內連接又分為等值連接、自然連接和不等連接三種。

外連接分為左外連接(LEFT OUTER JOIN或LEFT JOIN)、右外連接(RIGHT OUTER JOIN或RIGHT JOIN)

和全外連接(FULL OUTER JOIN或FULL JOIN)三種。與內連接不同的是,外連接不只列出與連接條件相匹配的行,而是列出左表(左外連接時)、右表(右外連接時)或兩個表(全外連接時)中所有符合搜索條件的數據行。

交叉連接(CROSS JOIN)沒有WHERE 子句,它返回連接表中所有數據行的笛卡爾積,其結果集合中的數據行數等於第一個表中符合查詢條件的數據行數乘以第二個表中符合查詢條件的數據行數。

連接操作中的ON (join_condition) 子句指出連接條件,它由被連接表中的列和比較運算符、邏輯運算符等構成。

無論哪種連接都不能對text、ntext和image數據類型列進行直接連接,但可以對這三種列進行間接連接。例如:

代碼:SELECT p1.pub_id,p2.pub_id,p1.pr_info

FROM pub_info AS p1 INNER JOIN pub_info AS p2

ON DATALENGTH(p1.pr_info)=DATALENGTH(p2.pr_info)(一)內連接

內連接查詢操作列出與連接條件匹配的數據行,它使用比較運算符比較被連接列的列值。

內連接分三種:

1、等值連接:在連接條件中使用等於號(=)運算符比較被連接列的列值,其查詢結果中列出被連接表中的所有列,包括其中的重複列。

2、不等連接: 在連接條件使用除等於運算符以外的其它比較運算符比較被連接的列的列值。這些運算符包括、=、、!。

3、自然連接:在連接條件中使用等於(=)運算符比較被連接列的列值,但它使用選擇列表指出查詢結果集合中所包括的列,並刪除連接表中的重複列。

例,下面使用等值連接列出authors和publishers表中位於同一城市的作者和出版社:

代碼:SELECT *

FROM authors AS a INNER JOIN publishers AS p

ON a.city=p.city又如使用自然連接,在選擇列表中刪除authors 和publishers 表中重複列(city和state):

複製內容到剪貼板

代碼:SELECT a.*,p.pub_id,p.pub_name,p.country

FROM authors AS a INNER JOIN publishers AS p

ON a.city=p.city

(二)外連接內連接時,返回查詢結果集合中的僅是符合查詢條件( WHERE 搜索條件或 HAVING 條件)和連接條件

的行。而採用外連接時,它返回到查詢結果集合中的不僅包含符合連接條件的行,而且還包括左表(左外連接時)、右表(右外連接時)或兩個邊接表(全外連接)中的所有數據行。

如下面使用左外連接將論壇內容和作者信息連接起來:

代碼:SELECT a.*,b.* FROM `luntan` LEFT JOIN usertable as b

ON a.username=b.username下面使用全外連接將city表中的所有作者以及user表中的所有作者,以及他們所在的城市:

代碼:SELECT a.*,b.*

FROM city as a FULL OUTER JOIN user as b

ON a.username=b.username

(三)交叉連接

交叉連接不帶WHERE 子句,它返回被連接的兩個表所有數據行的笛卡爾積,返回到結果集合中的數

據行數等於第一個表中符合查詢條件的數據行數乘以第二個表中符合查詢條件的數據行數。

例,titles表中有6類圖書,而publishers表中有8家出版社,則下列交叉連接檢索到的記錄數將等

於6*8=48行。

代碼:SELECT `type`,`pub_name`

FROM `titles` CROSS JOIN `publishers`

ORDER BY `type`

如何使用Java訪問MySQL數據庫

第1步 獲取Java與MySQL的連接器

第2步 將下載的包存放在自己機器上jdk安裝目錄下面的jre目錄下面的lib目錄下面的ext目錄中,在程序中導入與數據庫操作相關的對象

import java.sql.Connection; //導入數據庫連接對象

import java.sql.DriverManager; //導入數據庫驅動管理對象

import java.sql.ResultSet; //導入數據記錄集對象

import java.sql.SQLException; //導入數據SQL操作異常對象

import java.sql.Statement; //導入SQL操作接口對象

第3步:在程序中寫入如下內容

String url; //連接數據庫的字符串

String sql; //執行數據sql查詢操作的字符串

Connection conn; //數據庫連接變量

Statement st; //數據庫操作對象

ResultSet rs; //數據記錄集對象

url = “jdbc:mysql://localhost:3306/test?user=rootpassword=”; //在程序中只要修改這句,就可以實現數據庫連接

try {

conn = DriverManager.getConnection(url);

st = conn.createStatement();

sql = “select * from test”; //只要修改這句,就可以實現各種查詢操作

rs=st.executeQuery(sql); //執行數據查詢

while(rs.next())

{

System.out.println(rs.getString(1)); //獲得數據表test中第1個字段的數據,該字段為字符串類型

System.out.println(rs.getString(2)); //獲得數據表test中第2個字段的數據,該字段為字符串類型

}

rs.close(); //關閉數據記錄集

conn.close(); //關閉數據庫連接

} catch (SQLException e) {

System.out.println(“Error:”+e.toString()+e.getMessage());

}

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/272364.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-17 13:55
下一篇 2024-12-17 13:55

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • 如何修改mysql的端口號

    本文將介紹如何修改mysql的端口號,方便開發者根據實際需求配置對應端口號。 一、為什麼需要修改mysql端口號 默認情況下,mysql使用的端口號是3306。在某些情況下,我們需…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Bean加載過程

    Java Bean加載過程涉及到類加載器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean加載的過程。 一、類加載器 類加載器是Java虛擬機…

    編程 2025-04-29
  • Python讀取CSV數據畫散點圖

    本文將從以下方面詳細闡述Python讀取CSV文件並畫出散點圖的方法: 一、CSV文件介紹 CSV(Comma-Separated Values)即逗號分隔值,是一種存儲表格數據的…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Python中讀入csv文件數據的方法用法介紹

    csv是一種常見的數據格式,通常用於存儲小型數據集。Python作為一種廣泛流行的編程語言,內置了許多操作csv文件的庫。本文將從多個方面詳細介紹Python讀入csv文件的方法。…

    編程 2025-04-29
  • Java判斷字符串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字符串中是否存在多個指定字符: 一、字符串遍歷 字符串是Java編程中非常重要的一種數據類型。要判斷字符串中是否存在多個指定字符…

    編程 2025-04-29

發表回復

登錄後才能評論