1. 程式人生 > >java----day28(資料庫MySql)

java----day28(資料庫MySql)

資料庫

  • 什麼是資料庫

    資料庫就是儲存資料的倉庫,其本質是一個檔案系統,資料按照特定的格式將資料儲存起來,使用者可以對資料庫中的資料進行增加,修改,刪除及查詢操作。

  • 什麼是資料庫管理系統

    資料庫管理系統(DataBase Management System,DBMS):指一種操作和管理資料庫的大型軟體,用於建立、使用和維護資料庫,對資料庫進行統一管理和控制,以保證資料庫的安全性和完整性。使用者通過資料庫管理系統訪問資料庫中表內的資料

  • 常見的資料庫管理系統

MYSQL :開源免費的資料庫,小型的資料庫.已經被Oracle收購了.MySQL6.x版本也開始收費。

Oracle :收費的大型資料庫,Oracle公司的產品。Oracle收購SUN公司,收購MYSQL。

DB2 :IBM公司的資料庫產品,收費的。常應用在銀行系統中.

SQLServer:MicroSoft 公司收費的中型的資料庫。C#、.net等語言常使用。

SyBase :已經淡出歷史舞臺。提供了一個非常專業資料建模的工具PowerDesigner。

SQLite : 嵌入式的小型資料庫,應用在手機端。

Java相關的資料庫:MYSQL,Oracle.

這裡使用MySQL資料庫。MySQL中可以有多個數據庫,資料庫是真正儲存資料的地方。

  • 資料庫與資料庫管理系統的關係

  • 資料庫表

資料庫中以表為組織單位儲存資料。

表類似我們的Java類,每個欄位都有對應的資料型別。

那麼用我們熟悉的java程式來與關係型資料對比,就會發現以下對應關係。

類----------表

類中屬性----------表中欄位

物件----------記錄

SQL語句

資料庫是不認識JAVA語言的,但是我們同樣要與資料庫互動,這時需要使用到資料庫認識的語言SQL語句,它是資料庫的程式碼

結構化查詢語言(Structured Query Language)簡稱SQL,是一種資料庫查詢和程式設計語言,用於存取資料以及查詢、更新和管理

關係資料庫系統

建立資料庫、建立資料表、向資料表中新增一條條資料資訊均需要使用SQL語句。

  • SQL分類:
    1. 資料定義語言:簡稱DDL(Data Definition Language),用來定義資料庫物件:資料庫,表,列等。關鍵字:create,alter,drop(刪表)等
    2. 資料操作語言:簡稱DML(Data Manipulation Language),用來對資料庫中表的記錄進行更新。關鍵字:insert,delete,update等
    3. 資料控制語言:簡稱DCL(Data Control Language),用來定義資料庫的訪問許可權和安全級別,及建立使用者。
    4. 資料查詢語言:簡稱DQL(Data Query Language),用來查詢資料庫中表的記錄。關鍵字:select,from,where等
  1. SQL語句可以單行或多行書寫,以分號結尾
  2. 可使用空格和縮排來增強語句的可讀性
  3. MySQL資料庫的SQL語句不區分大小寫,建議使用大寫,例如:SELECT * FROM user。
  4. 同樣可以使用/**/的方式完成註釋
  5. MySQL中的我們常使用的資料型別如下

分類

型別名稱

說明

整數型別

tinyInt

很小的整數

 

smallint

小的整數

 

mediumint

中等大小的整數

 

int(integer)

普通大小的整數

小數型別

float

單精度浮點數

 

double

雙精度浮點數

 

decimal(m,d)

壓縮嚴格的定點數

日期型別

year

YYYY  1901~2155

 

time

HH:MM:SS  -838:59:59~838:59:59

 

date

YYYY-MM-DD 1000-01-01~9999-12-3

 

datetime

YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00~ 9999-12-31 23:59:59

 

timestamp

YYYY-MM-DD HH:MM:SS  1970~01~01 00:00:01 UTC~2038-01-19 03:14:07UTC

文字、二進位制型別

CHAR(M)

M為0~255之間的整數

 

VARCHAR(M)

M為0~65535之間的整數

 

TINYBLOB

允許長度0~255位元組

 

BLOB

允許長度0~65535位元組

 

MEDIUMBLOB

允許長度0~167772150位元組

 

LONGBLOB

允許長度0~4294967295位元組

 

TINYTEXT

允許長度0~255位元組

 

TEXT

允許長度0~65535位元組

 

MEDIUMTEXT

允許長度0~167772150位元組

 

LONGTEXT

允許長度0~4294967295位元組

 

VARBINARY(M)

允許長度0~M個位元組的變長位元組字串

 

BINARY(M)

允許長度0~M個位元組的定長位元組字串

  • 建立資料庫

* create database 資料庫名;

* create database 資料庫名 character set 字符集;

  • 檢視資料庫

show databases;

show create database 資料庫名;

  • 刪除資料庫

drop database 資料庫名稱;

  • 切換資料庫

use 資料庫名;

  • 檢視正在使用的資料庫

select database();

表結構相關語句

 

建立表

create table 表名(

   欄位名 型別(長度) 約束,

   欄位名 型別(長度) 約束

);

主鍵約束

主鍵是用於標識當前記錄的欄位。它的特點是非空,唯一。在開發中一般情況下主鍵是不具備任何含義,只是用於標識當前記錄

  • 在建立表時建立主鍵,在欄位後面加上  primary key.

create table tablename(

id int primary key,

.......

)

  • 在建立表時建立主鍵,在表建立的最後來指定主鍵

create table tablename(

id int

.......

primary key(id)

)

  • 刪除主鍵:alter table 表名 drop primary key;

alter table sort drop primary key;

  • 主鍵自動增長:一般主鍵是自增長的欄位,不需要指定。

實現新增自增長語句,主鍵欄位後加auto_increment(只適用MySQL)

查看錶

show tables;

刪除表

drop table 表名;

修改表結構格式

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

插入表記錄

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 表名;

  • 刪除表中所有記錄使用delete from 表名; 還是用truncate table 表名;

刪除方式:delete 一條一條刪除,不清空auto_increment記錄數。

truncate 直接將表刪除,重新建表,auto_increment將置為零,從新開始。

SQL查詢語句

查詢語句,在開發中使用的次數最多

建立賬務表

CREATE TABLE zhangwu (
  id INT PRIMARY KEY AUTO_INCREMENT, -- 賬務ID
  name VARCHAR(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);

查詢語法:

select 欄位1,欄位2,...from 表名;

條件查詢:

where語句表條件過濾。滿足條件操作,不滿足不操作,多用於資料的查詢與修改。

格式 :select 欄位  from 表名  where 條件;

比較運算子

>  <  <=   >=   =  <>

大於、小於、大於(小於)等於、不等於

 

BETWEEN  ...AND...

顯示在某一區間的值(含頭含尾)

 

IN(set)

顯示在in列表中的值,例:in(100,200)

 

LIKE 萬用字元

模糊查詢,Like語句中有兩個萬用字元

% 用來匹配多個字元;例first_name like ‘a%;

_ 用來匹配一個字元。例first_name like ‘a_;

 

IS NULL

判斷是否為空

is null; 判斷為空

is not null; 判斷不為空

邏輯運算子

and

多個條件同時成立

 

or

多個條件任一成立

 

not

不成立,例:where not(salary>100);