MySQL Day01 概述及數據庫、表操作

MySQL概述及數據庫、表操作

前言:

JavaEE:企業級Java開發 Web

前端(頁面:展示,數據!)

後臺(連接點:連接數據庫JDBC,鏈接前端(控制,控制視圖跳轉,給前端傳遞數據))

數據庫是所有軟件體系中最核心的存在 DBA

1 什麼是數據庫?

數據庫(DB DataBase)

概念:數據倉庫~軟件,安裝在操作系統(window, linux, mac…)之上!

作用:存儲數據,管理數據,可以存儲大量的數據,500萬以下還是可以的!

2 數據庫分類

關係型數據庫: (SQL)

  • MySQL,Oracle,Sql Server, DB2,SQLlite
  • 通過表和表之間,行和列之間的關係進行數據的存儲,比如學院信息表,考勤表…

非關係型數據庫:(NoSQL~Not Only SQL)

  • Redis,MongDB
  • 以對象存儲,通過對象自身的屬性來決定操作

DBMS(數據庫管理系統)

  • 數據庫的管理軟件,科學有效的管理我們的數據。維護和獲取數據

  • MySQL-數據庫管理系統!

在這裏插入圖片描述

3 MySQL簡介

MySQL是一個關係型數據庫管理系統

前世:瑞典MySQL AB公司

今生:屬於Oracle旗下產品

MySQL是最好的RDBMS(RElational Database Management System,關係數據庫管理系統)應用軟件之一。開源的數據庫軟件~

體積小、速度快、總體擁有成本低,招人成本比較低。

中小型網站、或某些大型網站都在使用!

此處省略MySQL的安裝與初始化,可自行查找博客。

我採用的是 MySQL 8.0.18 + Sequel Pro

4 連接數據庫

命令行連接!

mysql -u root -p123123 -- 連接數據庫

在這裏插入圖片描述

查看數據庫、表基本操作:

-- 單行註釋(SQL的的單行註釋)
/* (SQL的多行註釋)
hello
world
*/
mysql> show databases; -- 查看所有數據庫

mysql> use test; -- 使用數據庫test

mysql> show tables; -- 查看該數據庫中所有的表

mysql> describe teacher; -- 顯示數據庫中某個表的信息

mysql> create database jeverdata; -- 創建一個新的數據庫

mysql> show databases; -- 查看此時的數據庫

mysql> exit -- 退出連接數據庫 
Bye

數據庫xxx語言:

  • DDL 定義 (Database Define Language)
  • DML 操作 (Database Manager Language)
  • DQL 查詢 (Database Query Language)
  • DCL 控制 (Database Control Language)

5 操作數據庫

操作數據庫 --> 操作數據庫中的表 --> 操作數據庫中表的數據

mysql關鍵字不區分大小寫

5.1 創建數據庫

mysql> create database jeverdata;
Query OK, 1 row affected (0.00 sec)

也可直接在Navicat中創建,右鍵單機我的連接,選擇創建數據庫,之後按照下圖勾選,即可創建成功!

在這裏插入圖片描述

2、刪除數據庫

mysql> drop database jeverdata;
Query OK, 0 rows affected (0.00 sec)

3、使用數據庫

mysql> use test;
Database changed

4、查看數據庫

show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| medicine           |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+
6 rows in set (0.00 sec)

5.2 數據庫的列類型

數值

  • tinyint 十分小的數據 1個字節

  • smallint 較小的數據 2個字節

  • int 標準的整數 4個字節

  • bigint 較大的數據 8個字節

  • float 浮點數 4個字節

  • double 浮點數 8個字節

  • decimal 字符串形式的浮點數 金融計算的時候,一般使用decimal

字符串

  • char 字符串固定大小的 0~255
  • **varchar 可變字符串 0~65535 ** 常用的變量 String
  • tinytext 微型文本 2^8-1
  • text 文本串 2^16-1 存放大文本

時間日期

java.util.Data

  • data YYYY-MM-DD 日期格式
  • time HH:mm:ss 時間格式
  • datatime YYYY-MM-DD HH: mm: ss 最常用的時間格式
  • timestamp 時間戳 --> 1970.1.1到現在的毫秒數! 也較爲常用!
  • year 年份表示

null

  • 沒有值,未知
  • 注意,不要使用NULL進行運算,結果爲NULL

5.3 數據庫的字段屬性(重點)

Unsigned:

  • 無符號的整數
  • 聲明瞭該列不能聲明爲負數

zerofill:

  • 0填充
  • 不足的位數,使用0來填充,int(3) --> 5~005

自增:

  • 通常理解爲自增,自動在上一條記錄的基礎上+1(默認)
  • 通常用來設計唯一的主鍵~index,必須是整數類型
  • 可以自定義設計主鍵自增的起始值和步長

非空 not null

  • 假設設置爲not null,如果不給它賦值,就會報錯!
  • NULL,如果不填寫值,默認就是null!

默認:

  • 設置默認的值!
  • gender,默認值爲男,如果不指定該列的值,則會有默認的值

擴展:

/*項目中根據規範每一個表必須要存在以下五個字段:
id		主鍵
`version`		樂觀鎖
is_delete		僞刪除
gmt_create	創建時間
gmt_update	修改時間
*/

6 操作數據表

6.1 創建表案例

-- 目標:創建一個school數據庫
-- 創建學生表(列,字段)    使用SQL創建
-- 學號int、登陸密碼varchar(20)、姓名、性別varchar(2)、出生日期(datatime)、家庭住址、email

-- 注意點,使用英文(),表的名稱和字段 儘量使用``擴起來
-- AUTO_INCREMENT 自增
-- 字符串使用單引號擴起來
-- 所有的語句後面加,(英文的),最後一個不加
-- PRIMARY KEY 主鍵,一個表只能有一個唯一的主鍵
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 '密碼',
	`gender` 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

說明:其中數據庫的引擎INNODB在 ‘數據表的類型’ 中說明。

格式:

CREATE TABLE [IF NOT EXISTS] `表名`(
	`字段名` 列類型 [屬性][索引][註釋],
  `字段名` 列類型 [屬性][索引][註釋],
	...
  `字段名` 列類型 [屬性][索引][註釋]
)[表類型][字符集設置][註釋]

常用查看語句:

SHOW CREATE DATABASE school -- 查看創建數據庫的語句
SHOW CREATE TABLE student -- 查看student數據表的定義語句
DESC student; -- 查看錶的結構

數據表的類型

-- 關於數據庫的引擎
/*
InnoDB 默認使用~
MYISAM 早些年使用
*/
MYISAM INNODB
事務支持 不支持 支持
數據行鎖定 不支持(表鎖定) 支持
外鍵約束 不支持 支持
全文索引 支持 不支持
表空間的大小 較小 較大,約爲MYISAM兩倍

常規使用操作:

  • MYSIAM: 節約空間,速度較快
  • INNODB: 安全性高,支持事務的處理,多表多用戶操作

設置數據庫表的字符集編碼:

CHARSET=utf8

如果不設置,會是mysql默認的字符集編碼~(不支持中文!)

MySQL的默認編碼是Latin1,不支持中文。

6.2 修改和刪除數據表字段

-- 修改表名: ALTER TABLE 舊錶名 RENAME AS 新表名
ALTER TABLE students RENAME AS student;

-- 增加表的字段: ALTER TABLE 表名 ADD 字段名 列屬性
ALTER TABLE student ADD age INT(11);

-- 修改表的字段:
-- ALTER TABLE 表名 MODIFY 字段名 列屬性[]
ALTER TABLE student MODIFY age VARCHAR(11) -- 修改約束
-- ALTER TABLE 表名 CHANGE 舊名字 新名字 列屬性[]
ALTER TABLE student CHANGE age Age INT(11) -- 字段重命名

-- 刪除表的字段
ALTER TABLE student DROP Age;

-- 刪除表(如果表存在再刪除)
DROP TABLE IF EXISTS student;

注意:

  • change 用來字段重命名,不能修改字段類型和約束;
  • modify 不能用來字段重命名,只能修改字段類型和約束;

所有的創建和刪除操作儘量加上判斷,以免報錯!

寫在最後

Making the most of every opportunity, because the days are evil.

——Ephesians 5: 16

To Demut and Dottie~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章