目錄
- 資料庫簡介
- MySQL簡介
- MySQL的操作
- 庫操作
- 基本資料型別
- 字串型別
- 日期型別
- 基礎表操作
- 一些小結和建議
- 建表練習
- 參考代碼
- 寫在最后的話
資料庫簡介
我們都知道MySQL是資料庫的一種, 那么資料庫是什么呢? 資料庫其實就是通過各種資料結構來組織和管理資料的軟體, 和我們日常用的軟體沒啥區別, 學會使用規則就可以了,即SQL陳述句.
- SQL分類:DDL、DML、DCL.
- DDL資料定義語言,用來維護存盤資料的結構 代表指令: create, drop, alter
- DML資料操縱語言,用來對資料進行操作 代表指令: insert,delete,update
- DML中又單獨分了一個DQL,資料查詢語言,代表指令: select
- DCL資料控制語言,主要負責權限管理和事務 代表指令:
grant,revoke,commit
資料庫分為關系型資料庫(RDBMS)和非關系型資料庫兩種
- 關系型資料庫有: Oracle, MySQL, SQL Server , SQLite…
- 非關系型資料庫有: memcached, redis, mongodb, hbase, neo4j…
| 關系型資料庫 | 非關系型資料庫 | |
|---|---|---|
| 使用SQL | 是 | 不強制要求,一般不基于SQL實作 |
| 事務支持 | 支持 | 不支持 |
| 復雜操作 | 支持 | 不支持 |
| 海量讀寫操作 | 效率低 | 效率高 |
| 基本結構 | 基于表和列,結構固定 | 靈活性比較高 |
| 使用場景 | 業務方面的OLTP系統 | 用于資料的快取、或基于統計分析的OLAP系統 |
ps: OLTP(On-Line Transaction Processing)是指聯機事務處理,OLAP(On-Line AnalyticalProcessing)是指聯機分析處理.
ps: 百度百科對資料庫的說明鏈接
MySQL簡介
MySQL屬于關系型資料庫, 所謂的關系型資料庫就和excel差不多, 都是以表格的形式組織資料, 那么為什么使用MySQL, 主要是因為它是免費的, 所謂一時白嫖一時爽, 一直白嫖一直爽.
MySQL分為客戶端和服務器, 客戶端發送網路請求給服務器, 然后客戶端回傳網路回應給客戶端, 一臺服務器可以同時連接多個客戶端 , 并且是通過網路傳輸的, 所以服務器和客戶端可以不在同一臺主機上

MySQL目前主流使用5.7版本和8.0版本, 博主使用的是5.7版本 , 看博主文章跟著實操的,盡量保證大版本一致,使用5.7系列, 使用8.0系列難免會有所差異.
安裝軟體就不多贅述了, 百度一下有很多安裝方式, 官方下載連接附上
其他的下載+安裝很詳細,懶得找的小伙伴們可以使用這個
MySQL的操作
我們直接在控制臺進行SQL練習, 也就是這個黑框框, 我們先來見識一下庫操作, 下面所有的 [描述] 都是一個暫時代替的東西, 不是實際敲的SQL陳述句, 分號是要的.

庫操作
show databases; --顯示所有資料庫
create database [資料庫名]; --創建一個資料庫
use [資料庫名];--使用/打開 這個資料庫
drop database [資料庫名]; --洗掉資料庫
按照上面的陳述句套用,首先是顯示目前所有的資料庫, 顯示的不一定完全一樣, 能成功顯示就沒問題.

然后套用第二條陳述句, 建一個名字為abc 的資料庫, 然后顯示一下, 可以看到

然后use使用 abc 這個資料庫,可以看到提示

最后我們洗掉剛剛創建的資料庫abc, 再次顯示就已經不存在資料庫abc了

- 盡量不要使用刪庫操作,就算要刪庫,操作也一定要非常非常小心, 刪錯了就連夜跑路吧
基本資料型別
- 資料型別是用于建表時指定每一列的資料型別
- SQL中的關鍵字不區分大小寫 ,加粗的型別是常用或者建議使用的型別
- 字串可以使用單引號,也可以使用雙引號,但是所有字符都必須是英文的

| sql型別 | 說明 | 大小byte | 對應的Java型別 |
|---|---|---|---|
| bit(指定位數,默認為1位) | 二進制數, M范圍從1到64, 存盤數值范圍從0到2^M-1 | 1bit | 常用Boolean對應BIT,此時 默認是1位,即只能存0和1 |
| tinyint | 1 | Byte | |
| smallint | 2 | Short | |
| int | 4 | Integer | |
| bigint | 8 | Long | |
| float(總長度,小數位數) | 單精度,M指定長度,D指定 小數位數,會發生精度丟失 | 4 | Float |
| double(總長度,小數位數) | 8 | Double | |
| decimal(總長度,小數位數) | 雙精度,M指定長度,D表示 小數點位數,精確數值 | 長度和小數點位數較大者+2 | BigDecimal |
| numeric(總長度,小數位數) | 雙精度,M指定長度,D表示 小數點位數,精確數值 | 長度和小數點位數較大者+2 | BigDecimal |
字串型別
| sql型別 | 說明 | 大小byte | 對應的Java型別 |
|---|---|---|---|
| varchar(字串大小) | 可變長字串 | 0-65535 | String |
| text | 長文本資料 | 0-65535 | String |
| mediumtext | 中等長度文本資料 | 0-16777215 | String |
| blob | 二進制形式的長文本資料 | 0-65535 | byte[] |
日期型別
| sql型別 | 說明 | 大小byte | 對應的Java型別 |
|---|---|---|---|
| datetime | 1000-99999年,不會進行時區的檢索和轉換 | 8 | Java.util.Data、java.sql.Timestamp |
| timestamp | 1970-2038自動檢索當前時區,并進行轉換 | 4 | java.util.Date、java.sql.Timestamp |
基礎表操作
create table [表名]([列名,型別]);--創造一個表格
show tables;--顯示當前資料庫下的所有表格
desc [表名];--查看表的結構
drop table [表名];--洗掉表
在建表之前,需要選擇一個資料庫,如何將表結構放入其中.現在使用上面講過的庫操作建一個資料庫,建好之后使用它, 博主建了一個名為test的資料庫

是不可以建一個沒有結構的空表的, 就是說一個表最少是需要一列的,所以我們就需要給表一定的結構

創建表格的模板如下, 可以寫成一行,但是建議分行寫,更加清晰
- SQL中 -- 表示注釋
--創造一個表格
create table [表名] (
屬性名稱 型別,
屬性名稱 型別,
屬性名稱 型別,
...
屬性名稱 型別--最后面不加,
);--以分號結尾
如下我們創建了一個表名為student的表,表中有id ,name ,age ,score四個屬性

然后我們來查看表的結構,往表中插入資料時一定要明確表中的資料型別,不然會造成插入失敗,下篇博客介紹CRUD(增刪改查)

最后是洗掉操作,由于只有一個表,洗掉之后就沒有了,所以就回傳了empty set

一些小結和建議
- SQL中的關鍵字是不區分大小寫, 喜歡那種用那種
- 書寫的SQL陳述句可以不在一行也可以在一行,建議不要全部寫在一行
- 不建議在控制臺直接書寫SQL陳述句, 建議使用 vscode ,notepad++, sublime test 3等文本編輯器書寫, Java程式員也可以直接使用idea撰寫,最差也可以拿記事本寫,不熟練的情況下不要直接在控制臺輸入
- drop操作可以忘記, 因為刪庫刪表是非常危險的, 可能會丟失大量資料
- 資料型別要合理選取,一般能夠放下資料就行,盡量不要浪費空間
建表練習
- 商品goods(商品編號goods_id,商品名goods_name, 單價unitprice, 商品類別category, 供應商provider)
- 客戶customer(客戶號customer_id,姓名name,住址address,郵箱email,性別sex,身份證 card_id)
- 購買purchase(購買訂單號order_id,客戶號customer_id,商品號goods_id,購買數量nums)
參考代碼
--商品表
create table goods(
goods_id int,
goods_name varchar(20),
unitprice decimal(10,1),
category varchar(10),
provider varchar(20)
);
--客戶資訊表
create table customer(
customer_id int,
customer_name varchar(20),
address varchar(50),
email varchar(50),
sex varchar(5),
card_id varchar(18)
);
--購買清單
create table purchase(
order_id int,
customer_id int,
goods_id int,
nums int
);
寫在最后的話
SQL的代碼就是多敲多練, 一般就沒啥問題了, 由于博主水平有限,文中難免出現錯誤,或者表述不清的地方,或者有什么建議都歡迎各位小伙伴,在評論區或者私信博主提出,如果博客對大家有所幫助就請點個贊吧,謝謝大家,我們下篇博客見.
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/294200.html
標籤:java
上一篇:Java 陣列的使用
