java後端的學習之路(一) ------ mysql和jdbc&DBUtils

1.1數據庫與數據庫管理系統的關係java

clipboard.png

1.2數據庫表mysql

數據庫中以表爲組織單位存儲數據。
表相似咱們的Java類,每一個字段都有對應的數據類型。
那麼用咱們熟悉的java程序來與關係型數據對比,就會發現如下對應關係。

類----------表
類中屬性----------表中字段
對象----------記錄

根據表字段所規定的數據類型,咱們能夠向其中填入一條條的數據,而表中的每條數據相似類的實例對象。表中的一行一行的信息咱們稱之爲記錄。sql

clipboard.png

2.1 sql語句
數據定義語言:簡稱DDL(Data Definition Language),用來定義數據庫對象:數據庫,表,列等。數據庫

數據操做語言:簡稱DML(Data Manipulation Language),用來對數據庫中表的記錄進行更新。安全

數據控制語言:簡稱DCL(Data Control Language),用來定義數據庫的訪問權限和安全級別,及建立用戶。服務器

數據查詢語言:簡稱DQL(Data Query Language),用來查詢數據庫中表的記錄。工具

2.2sql的通用語法學習

  • SQL語句能夠單行或多行書寫,以分號結尾
  • 可以使用空格和縮進來加強語句的可讀性
  • MySQL數據庫的SQL語句不區分大小寫,建議使用大寫,例如:SELECT * FROM user。
  • 一樣可使用/**/的方式完成註釋

MySQL中的咱們常使用的數據類型以下:ui

clipboard.png

詳細的數據類型以下:編碼

clipboard.png

2.3 數據庫操做:database

  • 建立數據庫

格式:

* `create database 數據庫名;`
* `create database 數據庫名 character set 字符集;`(在裝mysql時候已經指定了默認的utf-8字符集)
例子:

建立數據庫 數據庫中數據的編碼採用的是安裝數據庫時指定的默認編碼 utf8

CREATE DATABASE day;

建立數據庫 並指定數據庫中數據的編碼

CREATE DATABASE day CHARACTER SET utf8;
  • 查看數據庫
    查看數據庫MySQL服務器中的全部的數據庫:

    show databases;

    查看某個數據庫的定義的信息:

    show create database 數據庫名;

例如:

show create database day;

刪除數據庫

drop database 數據庫名稱;

例如:

drop database day;

其餘的數據庫操做命令
切換數據庫:

use 數據庫名;

例如:

use day;

查看正在使用的數據庫:

select database();

3.1 表結構相關的語句

3.1.1建立表

  • 格式:

    create table 表名(

    字段名 類型(長度) 約束,
      字段名 類型(長度) 約束

    );

  • 例如:
    建立分類表:

    create table sort (
         sid INT,           #分類ID 
         sname VARCHAR(100) #分類名稱
       );

3.1.2 主鍵約束
主鍵是用於標識當前的記錄的字段。他的特色是非空,惟一。
在開發當中通常狀況下主鍵是不具有任何含義,只用於標識當前的記錄。

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)

例子:
建立一個分類表
create table sort(
sid int primary key auto_increment,
sname varchar(100)
);

3.1.3查看錶
查看數據庫中全部的表:

格式:show tables;

查看錶結構:

格式:desc 表名;

例如:desc sort;

3.1.4刪除表

格式:drop table 表名;

例如:drop table sort;

3.1.5修改表結構格式:
1.做用:修改表添加列。

alter table 表名 add 列名 類型(長度)約束;

例如
爲sort表添加一個新的字段爲sdesc varchar(20)

alter table sort add sdesc varchar(20);

2.做用:修改表修改列的類型長度以及約束。

alter table 表名 modify 列名 類型(長度) 約束;

例如:
爲sort表的sname字段進行修改,類型爲varchar(50)添加約束 not null

alter table sort modify  sanme varchar(50) not null

3.做用:修改表修改列名

alter table 表名 change 舊列名 新列名 類型(長度) 約束;

例如:
爲sort表的分類名稱字段進行更換 更換爲ssname varchar(30)

alter table sort change sname ssname varchar(30)

4.做用:修改表刪除列

alter table 表名 drop 列名;

例如:
刪除sort表中的ssname這一列

alter table sort drop ssname;

5.做用:修改表名
例如:
爲sort表更名爲category

rename table sort to category;

6.做用:修改表的字符集

alter table 表名 character set 字符集;

例如:
爲category表修改器編碼爲gbk

alter table category character set gbk;

3.1.6 插入表記錄
語法:

insert into 表 (列名1,列名2,列名3...)values (值1,值2,值3..);--向表中插入某些列
insert into 表 values (值1,值2,值3...);--向表中插入全部列

注意:
插入的數據應與字段的數據類型相同
數據的大小應該在列的長度範圍內
在values中列出的數據位置必須與被加入的排列位置相對應。
除了數值類型外,其餘的字段類型的值必須使用引號引發。
若是要插入空值,能夠不寫字段,或者插入null
對於自動增加的列在操做時,直接插入null值便可。

例如:

insert into sort (sid,sname) values('s001','電器');
insert into sort values('s002','化妝品');

3.1.7更新表記錄:
用來修改指定條件的數據,將知足條件的記錄指定列修改成指定值
語法:

update 表名 set 字段名=值,字段名=值;
update 表名 set 字段名=值,字段名=值 where 條件;

注意:
列名的類型與修改的值要一致.
修改值得時候不能超過最大長度.
值若是是字符串或者日期須要加’’.

例如:
1,將指定的sname字段中的值 修改爲 日用品

UPDATE sort SET sname='日用品';

2, 將sid爲s002的記錄中的sname改爲 日用品

UPDATE sort SET sname='日用品' WHERE sid='s002';

UPDATE sort SET sname='日用品' WHERE sid='s003';

3.1.8刪除記錄:
語法:

delete from 表名 [where 條件];

或者

truncate table 表名;

例如:

DELETE FROM sort WHERE sname='日用品';

表數據清空

DELETE FROM sort;

概念區分:
刪除表中全部記錄使用delete from 表名; 仍是用truncate table 表名;

  • 刪除方式:delete 一條一條刪除,不清空auto_increment記錄數。
  • truncate 直接將表刪除,從新建表,auto_increment將置爲零,重新開始。

4.1sql查詢語句
建立帳務表:

create table zhangwu(
id int primary key auto_increment,-- 帳務ID
name vachar(200),-- 帳務名稱
money double ,-- 金額
);

插入記錄:

INSERT  INTO zhangwu(id,name,money) VALUES (1,'飲食支出',247);
INSERT  INTO zhangwu(id,name,money) VALUES (2,'工資收入',12345);
INSERT  INTO zhangwu(id,name,money) VALUES (3,'服裝支出',1000);
INSERT  INTO zhangwu(id,name,money) VALUES (4,'飲食支出',325);
INSERT  INTO zhangwu(id,name,money) VALUES (5,'債券收入',8000);
INSERT  INTO zhangwu(id,name,money) VALUES (6,'學習支出',8000);
INSERT  INTO zhangwu(id,name,money) VALUES (7,null,5000);

4.1查詢語句:
查詢指定字段信息

select 字段1,字段2,...from 表名;

例如:

select id,name from zhangwu;

查詢表中全部字段

select * from 表名; 
例如:
select * from zhangwu;
**注意:使用"*"在練習、學習過程當中可使用,在實際開發中,不推薦使用。緣由,要查詢的字段信息不明確,若字段數量不少,會致使查詢速度很慢。**

distinct用於去除重複記錄

select distinct 字段 from 表名;

例如:

select distinct money from zhangwu;

別名查詢,使用的as關鍵字,as能夠省略的.
別名能夠給表中的字段,表設置別名。 當查詢語句複雜時,使用別名能夠極大的簡便操做。

表別名格式:

select * from 表名 as 別名;

select * from 表名 別名;

列別名格式:

select 字段名 as 別名 from 表名;

或

select 字段名 別名 from 表名;

例如
表別名:

select * from zhangwu as zw;

列別名:

select money as m from zhangwu;
    或
select money m from zhangwu;

咱們在sql語句的操做中,能夠直接對列進行運算。

例如:將全部帳務的金額+10000元進行顯示.

select pname,price+10000 from product;

4.2條件查詢

where語句表條件過濾。知足條件操做,不知足不操做,多用於數據的查詢與修改。
格式 :select 字段 from 表名 where 條件;
while條件的種類以下:

clipboard.png

例如:
查詢全部吃飯支出記錄

select *from zhangwu where name ='飲食支出';

查詢出金額大於1000的信息

select *from zhangwu where money >1000;

查詢出金額在2000-5000之間的帳務信息

select *from zhangwu where money >=2000 and money <=5000;

select * from zhanguw where money BETEWWN 2000 and 5000;

查詢金額是1000或5000或3500的商品信息

select * from zhangwu where money =1000 or money =5000 or money=3500;

select * from zhnagwu where money in (1000,5000,3500);

查詢出帳務名稱包含‘支出’的帳務信息。

select * from zhanguw where name like "%支出%";

查詢出帳務名稱中是沒有五個字的帳務信息
SELECT * FROM zhangwu WHERE name LIKE "_____";
-- 五個下劃線

查詢出帳務名稱不爲null帳務信息

SELECT * FROM zhangwu WHERE name IS NOT NULL;
SELECT * FROM zhangwu WHERE NOT (name IS NULL);

JDBC原理

Java提供訪問數據庫規範稱爲JDBC,而生產廠商提供規範的實現類稱爲驅動。

clipboard.png

JDBC是接口,驅動是接口的實現,沒有驅動將沒法完成數據庫鏈接,從而不能操做數據庫!每一個數據庫廠商都須要提供本身的驅動,用來鏈接本身公司的數據庫,也就是說驅動通常都由數據庫生成廠商提供

1.1JDBC開發步驟

1.註冊驅動.
2.得到鏈接.
3.得到語句執行平臺
4.執行sql語句
5.處理結果
6.釋放資源.

1.1.1導入驅動jar包
建立lib目錄,用於存放當前項目須要的全部jar包
選擇jar包,右鍵執行build path / Add to Build Path

clipboard.png

註冊驅動
JDBC規範定義驅動接口:java.sql.Driver
MySql驅動包提供了實現類:com.mysql.jdbc.Driver

驅動包源代碼:

clipboard.png

java.sql DriverManager工具類,提供註冊驅動的方法 registerDriver(),方法的參數是java.sql.Driver,因此咱們能夠經過以下語句進行註冊:

DriverManager.registerDriver(new com.mysql.jdbc.Driver());

以上代碼不推薦使用,存在兩方面不足
1.硬編碼,後期不易於程序擴展和維護
2.經過閱讀源代碼可知驅動被註冊兩次。

一般開發咱們使用Class.forName() 加載一個使用字符串描述的驅動類。
若是使用Class.forName()將類加載到內存,該類的靜態代碼將自動執行。
經過查詢com.mysql.jdbc.Driver源碼,咱們發現Driver類「主動」將本身進行註冊

相關文章
相關標籤/搜索