操作資料庫和資料表 | MySQL(一)基礎
theme: scrolls-light
「這是我參與11月更文挑戰的第11天,活動詳情檢視:2021最後一次更文挑戰」
相關文章
MySQL:MySQL系列
前言:
MySQL是一個關係型資料庫管理系統,是目前最好的 RDBMS (Relational Database Management System,關係資料庫管理系統) 應用軟體之一。 - 優點: - ①開源的資料庫軟體,關鍵是免費的! - ②體積小,速度快,總體擁有成本低,招人成本比較低。 - ③一般中小型網站的開發都選擇 MySQL 作為網站資料庫。
1、資料庫
1.1 基本的操作
1.建立資料庫
sql
CREATE DATABASE IF NOT EXISTS testDataBase;
2.刪除資料庫
sql
DROP DATABASE IF EXISTS testDataBase;
3.使用資料庫
sql
USE school;
4.檢視資料庫
sql
SHOW DATABASE;
1.2 資料庫的列型別
①數值:
bash
tinyint 十分小的資料 1個位元組
smallint 較小的資料 2個位元組
mediumint 中等大小 3個位元組
int 標準的整數 4個位元組(常用)
bigint 較大的資料 8個位元組
float 浮點數 4個位元組
double 浮點數 8個位元組 (精度問題)
decimal 字串形式的浮點數,一般用於金融計算的時候
②字串:
bash
char 字串固定大小 0-255
varchar 可變字串 0-65535(常用)
tinytext 微型文字 2^8-1
text 文字串 2^16-1 (儲存大文字)
③時間日期:
bash
date YYYY-MM-DD,日期
time HH:mm:ss 時間格式
datetime YYYY-MM-DD HH:mm:ss 最常用的時間格式
timestamp 時間戳 1970.1.1到現在的毫秒數
year 年份表示
④null:
bash
沒有值,未知
注意,不要使用null進行運算,結果為null
1.3 資料庫的欄位型別
①unsigened:
bash
無符號的整數
宣告該列不能宣告負數
②zerofill:
bash
0填充的
10的長度 1 – 0000000001 不足位數用0 填充
③自增:
bash
通常理解為自增,自動在上一條記錄的基礎上+1
通常用來設計唯一的主鍵 index,必須是整數類似
可以自定義設定主鍵自增的起始值和步長
④非空 NULL not Null
bash
假設設定為 not null,如何不給他賦值,就會報錯
NULL 如果不填寫,預設為NULL
⑤預設:
bash
設定預設的值!
1.4建立表
①建立: ```sql --目標:建立一個schoo1資料庫 --建立學生表(列,欄位)使用SQL 建立 --學號int 登入密碼varchar(20)姓名,性別varchar(2),出生日期(datatime),家庭住址,emai1--注意點,使用英文(),表的名稱和欄位儘量使用括起來 -- AUTO_ INCREMENT 自增 --字串使用單引號括起來! --所有的語句後面加,(英文的),最後一個不用加 -- PRIMARY KEY 主鍵,一般- 一個表只有一個唯一 -的主鍵!
CREATE DATABASE school
CREATE TABLE IF NOT EXISTS student
(
id
INT(4) NOT NULL AUTO_INCREMENT COMMENT '學號',
name
VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
pwd
VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密碼',
sex
VARCHAR(2) NOT NULL DEFAULT '男' COMMENT '性別',
birthday
DATETIME DEFAULT NULL COMMENT '出生日期',
address
VARCHAR(100) DEFAULT NULL COMMENT '家庭住址',
email
VARCHAR(50) DEFAULT NULL COMMENT '郵箱',
PRIMARY KEY (id
)
)ENGINE=INNODB DEFAULT CHARSET=utf8
```
②格式:
sql
CREATE TABLE [IF NOT EXISTS] `表名`(
`欄位名` 列型別[屬性][索引][註釋],
`欄位名` 列型別[屬性][索引][註釋],
...
`欄位名` 列型別[屬性][索引][註釋]
)[表型別][表的字符集設定][註釋]
1.5 資料表的型別
①INNODB和MYISAM: | | MYISAM | INNODB | | ------------ | ------ | ---------------------- | | 事務支援 | 不支援 | 支援 | | 資料行鎖定 | 不支援 | 支援 | | 外來鍵約束 | 不支援 | 支援 | | 全文索引 | 支援 | 不支援 | | 表空間的大小 | 較小 | 較大,約為MYISAM的兩倍 |
注意的是: - 在MySQL5.6版本以後INNODB也支援了 全文檢索,但是隻支援英文的檢索。有興趣的小夥伴可以自己去了解下兩種表的型別底層儲存方式的區別,在此我不多講。 常規使用操作:
- MYISAM 節約空間,速度較快,
- INNODB 安全性高,事務處理,多表多使用者操作
②在物理空間存在的位置:
所有的資料庫檔案都存在data目錄下,一個資料夾就對應一個數據庫
本質還是檔案的儲存
MySQL 引擎在物理檔案上的區別
- innoDB 在資料庫表中,只有一個*.frm檔案,以及上級目錄下的ibdata1檔案
- MYISAM 對應的檔案
- *.frm - 表結構的定義檔案
- *. MYD -資料檔案
- *.MYI 索引檔案
③ 設定資料庫字符集編碼:
```sql CHARTSET=UTF8
12 ```
不設定的話,會是mysql預設的字符集編碼-(不支援中文)
可以在my.ini中配置預設的編碼
sql
character-set-server=utf8
1.5修改刪除表
①修改:
```sql -- 修改表名 ALTER TABLE 舊錶面 AS 新表名 ALTER TABLE student RENAME AS student1 -- 增加表的欄位 ALTER TABLE 表名 ADD 欄位名 列屬性 ALTER TABLE student1 ADD age INT(11) -- 修改表的欄位(重新命名,修改約束) ALTER TABLE student1 MODIFY age VARCHAR(11) -- 修改約束 ALTER TABLE student1 CHANGE age age1 INT(1) -- 欄位重新命名
-- 刪除表的欄位 ALTER TABLE student1 DROP age1 ```
② 刪除:
sql
-- 刪除表
DROP TABLE IF EXISTS student1
所有的建立和刪除操作儘量加上判斷,以免報錯
③注意點:
- `` 欄位名,使用這個包裹
- 註釋 – /**/
- sql 關鍵字大小寫不敏感,建議寫小寫
- 所有的符號全部用英文
路漫漫其修遠兮,吾必將上下求索~
如果你認為i博主寫的不錯!寫作不易,請點贊、關注、評論給博主一個鼓勵吧~hahah
- 2021已逝,2022我來了 | 2021年終總結
- SpringBoot整合Swagger(十一)常用註解介紹 | Java隨筆記
- SpringBoot整合Swagger(十)常用註解介紹 | Java隨筆記
- 將數字變成 0 的操作次數 | LeetCode刷題筆記
- SpringBoot整合Swagger(九)給你的Swagger換個面板吧 | Java隨筆記
- SpringBoot整合Swagger(八)@ApiModelProperty()註解一擼到底 | Java隨筆記
- SpringBoot整合Swagger(七)@ApiModel()註解一通百通 | Java隨筆記
- SpringBoot整合Swagger(六)玩轉groupName()分組 | Java隨筆記
- SpringBoot整合Swagger(五)動態配製Swagger的開關 | Java隨筆記
- SpringBoot整合Swagger(三)paths()介面過濾 | Java隨筆記
- 隨機數實現撲克牌洗牌 | Java隨筆記
- 線上出問題?遠端DeBug會嗎?| Java隨筆記
- Widows和Linux下如何安裝MySQL | MySQL(前傳)
- Ubuntu新增root使用者和開啟遠端登陸 | Java隨筆記
- Ubuntu16.04上安裝jdk1.8 | Java隨筆記
- Java函式和陣列 | Java隨筆記
- 程式設計師最喜歡的一句話?當然是New物件啦~ | Java隨筆記
- MyBatis中使用foreach批量插入並且返回自增id | MyBatis系列(小技巧一)
- 操作資料庫和資料表 | MySQL(一)基礎
- @Value註解讀取配置檔案中的內容 | Java隨筆記