MySQL資料庫從小白到小菜01
- 資料庫
- 相關知識(了解)
- 庫的相關操作
- 資料型別
- 表的相關操作
- 相關練習(待添加)
資料庫
相關知識(了解)
資料庫是一類軟體(程式),這與我們之前所學的資料結構不同,資料結構是一門學科,但是資料庫這個軟體內部也運用到了很多的資料結構,學習資料結構的目的是為了組織資料
資料庫的功能就是用來組織資料,這些資料通常是存盤在磁盤上的,資料庫這類軟體提供的功能就是對資料的管理(增刪改查),
馮諾依曼是計算機行業的祖師爺,
記憶體:訪問速度快,空間小,成本較高,如果掉電了,記憶體中資料丟失,俗稱運存
外存:訪問速度滿,空間大,成本較低,,俗稱記憶體,如果掉電了,外存資料保留,磁盤,硬碟,包括U盤,光碟等都是外存
記憶體與外存的訪問速度差距在3-4個數量級,也就是幾千上萬倍
在實際開發中,資料庫往往需要存盤很多的資料,同時很容易達到系統性能的瓶頸
對于任何一個公司,資料都是命脈,而公司的資料主要都是通過資料庫來存盤與管理的,
SQL是一種編程語言,而MySQL這是一個具體的資料庫,一般通過SQL語言來操作資料庫,
MySQL是資料庫這類軟體的一個典型代表,而Oracle是資料庫一哥,SQL Server 是微軟開發的資料庫軟體,而SQLite是使用最廣泛的資料庫,每一個手機上都內置了SQLite,還有Redis、HBase、MongoDB、MariaDB等這些都是資料庫的軟體,
而資料庫分為關系型資料庫和非關系型資料庫,關系型資料庫對于資料的約束比較嚴格,都是使用表這樣的結構來存盤資料的,而非關系型資料庫對于資料的約束沒那么嚴格,通常都是通過檔案這樣的結構來存盤資料的,MySQL就是關系型資料庫,而Redis、Hbase、MongoDB都是非關系型資料庫,
服務器:被動接收請求的一端就叫服務器,回應Response
客戶端:主動發送請求的一端就叫客戶端,請求Request
文本:檔案/資料中只包含字符
二進制:可能包含其它內容
區分二進制與文本的方法就是用記事本打開檔案,如果是能看懂(沒有亂碼)則是文本檔案,
SQL語言時寫在MySQL客戶端的,先把sql從客戶端發送到服務器,服務器收到sql進行決議執行,完成資料插入,告知結果,操作成功與否,影響多少行,
庫的相關操作
創建一個名為lit的資料庫:(創建成功時會提示OK,1 row affected;失敗時提示error)資料庫的庫名不能重復
--SQL里使用兩個減號來備注,lit為資料庫庫名
create database lit;
--這樣也可以創建,如果已有該名資料庫,則發出警告,但不會報錯,如果有改名資料庫,則不創建,
create database if not exists lit;
--如果系統沒有lit的資料庫,則創建一個使用utf8mb4字符集庫名為lit的資料庫,如果有則不創建
create database if not exists lit character set utf8mb4;
呼叫此資料庫;也就是使用此資料庫:
--使用名為lit的資料庫
use lit;
洗掉資料庫:慎用
--洗掉名為qqq的資料庫
drop database qqq;
--洗掉名為qqq的資料庫,如果沒有qqq的資料庫則不洗掉
drop database if exists qqq;
查看當前所有資料庫:
--查看當前所有資料庫
show databases;
資料型別
數值類:
數值型別可以指定為無符號 unsigned,表示不取負數,1位元組 bytes =8 bit 但是一般不會使用無符號,
常用數值型別為:BIT[(M)]、INT 、DECIMAL(M,D)
| 資料型別 | 大小 | 備注 |
|---|---|---|
| BIT[ (M) ] | M指定位數,默認為1 | 二進制數,M范圍為1~64,存盤值范圍為0到2M-1 |
| TINYINT | 1位元組 | 對應java中的byte |
| SMALLINT | 2位元組 | 對應java中的short |
| INT | 4位元組 | 對應java中的integer |
| BIGINT | 8位元組 | 對應java中的long |
| FLOAT(M, D) | 4位元組 | 單精度,M指定長度,D指定小數位數,會發生精度丟失,對應java中的float |
| DOUBLE(M,D) | 8位元組 | 對應java中的double |
| DECIMAL(M,D) | M/D最大值+2 | 雙精度,M指定長度,D表示小數點位數,精確數值 |
| NUMERIC(M,D) | M/D最大值+2 | 同上 |
字串型別:
常用VARCHAR(255)、TEXT;
| 資料型別 | 大小 | 備注 |
|---|---|---|
| VARCHAR (SIZE) | 0-65,535位元組 | 可變長度字串 |
| TEXT | 0-65,535位元組 | 長文本資料 |
| MEDIUMTEXT | 0-16 777 215位元組 | 中等長度文本資料 |
| BLOB | 0-65,535位元組 | 二進制形式長文本資料 |
日期型別:
| 資料型別 | 大小 | 備注 | 表示 |
|---|---|---|---|
| DATETIME | 8位元組 | 范圍從1000~9999年,不會進行時區的檢索及轉換 | 年月日時分秒 |
| TIMESTAMP | 4位元組 | 范圍從1970到2038年,自動檢索當前時區并進行轉換, | 時間戳,是計算機里存盤和表示時間的方式,計算與1970:1:1:00:00:00的時間差, |
使用時間戳的原因:占用的空間小,方便計算,在記錄日志的時候經常會用到時間戳,
日志:log println 通過日志來反應出程式的作業狀態,如果日志比較多,就需要記錄當前這個日志對應的時間,這樣就可以通過這個時間很好的知道整個程式在各個時間段中的運行情況了,
表的相關操作
需要操作資料庫中的資料表時,需要先使用該資料庫:
-- 使用庫名為lit的資料庫
use lit;
查看當前庫中所有的表:
show tables;
創建一個表:
如 創建一個員工表 表中有員工的id 名稱 年齡 備注
--先寫表中屬性名,再寫型別
--comment寫在屬性型別之后為備注 comment后加單引號表示備注的內容;
create table staff(
id int comment 'id',
name varchar(20),
age int,
comment varchar(20)
);
ps: 在資料庫中,MySQL中的關鍵字是不能作為表名/列名的,如果非要做表明名列名,則用反引號(TAB上面這個鍵)引起來,
查看表的結構,表中現有的屬性會以表的形式展現其中會有每個屬性的型別、屬性名等資訊:
其中field為欄位,也就是屬性的屬性名(如 student表中name就是student表中name屬性的屬性名)
Type為型別,也就是屬性的屬性型別(如 name就是字串varchar型別)
Null為空,表示此屬性是否可以為空(如 name不為空,但是類似備注之類的屬性就可以為空)
Key為鍵,若為主鍵、外鍵,此列才會顯示,否則不顯示,
Default為默認值,表示在插入時,如果沒有內容,則代表插入的為默認值,
Extra為擴充,
--查看 名為staff的表的結構
--desc: description
desc staff;
洗掉一個表:
--在當前資料庫中洗掉表名為staff的表
drop table staff;
--如果當前資料庫存在名為staff的表,則洗掉,
drop table if exists staff;
相關練習(待添加)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/286531.html
標籤:其他
上一篇:MYSQL DDL和DML
下一篇:SQL常用命令(Mysql)
