MySQL數(shù)據(jù)庫基礎與庫的操作大全
一、MySQL數(shù)據(jù)庫基礎
當MySQL安裝完成之后,bin?錄下有?個mysqld(Linux)或mysqld.exe(windoows)的可執(zhí)?程序,mysqld可執(zhí)?程序運?后,MySQL服務也就啟動了。當把MySQL服務配置為?啟動,操作系統(tǒng)啟動時會?動運?mysqld可執(zhí)?程序,從?啟動MySQL服務。
1.1 數(shù)據(jù)庫服務器與數(shù)據(jù)庫與表
數(shù)據(jù)庫服務器是指在計算機上安裝了一個數(shù)據(jù)庫管理系統(tǒng)程序,這個程序可以管理多個數(shù)據(jù)庫,一般開發(fā)人員會針對每一個應用創(chuàng)建一個數(shù)據(jù)庫
那為了保存應用中的實體,一般會在書庫中創(chuàng)建多個表,已保存程序中實體的數(shù)據(jù)
所以他們的關系就是:數(shù)據(jù)庫服務器——管理——>數(shù)據(jù)庫——管理——>表
1.2 客戶端工具
MySQL安裝成功后有自帶的命令行客戶端工具,可以輸入命令并且執(zhí)行SQL語句,所以MySQL的使用還是非常簡單的,打開終端輸入命令即可

我們輸入安裝時就設置的密碼,連接成功了,我們使用select version( )的SQL語句查看了當前MySQL的版本
1.3 可視化工具
MySQL官方提供了可視化工具MySQL Workbench,但是博主在這里使用的是Navicat可視化客戶端工具,在業(yè)內廣泛使用




二、SQL語言
2.1 SQL是什么
SQL(Structured Query Language)是結構化查詢語?的簡稱,是?種數(shù)據(jù)庫查詢和程序設計語?,?于存取數(shù)據(jù)以及查詢、更新和管理關系數(shù)據(jù)庫。
2.2 SQL分類
• DDL【Data Definition Language】 數(shù)據(jù)定義語?,?來維護存儲數(shù)據(jù)的結構
代表指令: create, drop, alter
• DML【Data Manipulation Language】 數(shù)據(jù)操縱語?,?來對數(shù)據(jù)進?操作
代表指令: insert,delete,update,select
• DCL【Data Control Language】 數(shù)據(jù)控制語?,主要負責權限管理和事務
代表指令: grant,revoke,commit
注意:SQL語言對大小寫不敏感
三、庫的操作
3.1 查看數(shù)據(jù)庫
show databases;

3.2 創(chuàng)建數(shù)據(jù)庫
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [create_option] ...
create_option: [DEFAULT] {
CHARACTER SET [=] charset_name
| COLLATE [=] collation_name
| ENCRYPTION [=] { 'Y' | 'N' }
}
- db_name:表示自定義的數(shù)據(jù)庫名稱
- {}:表示必須選
- |:表示任選其中一個
- []:表示括號中內是可選項
- CHARACTER SET:指定數(shù)據(jù)庫采?的字符集編碼
- COLLATE:指定數(shù)據(jù)庫字符集的校驗規(guī)則
- ENCRYPTION:數(shù)據(jù)庫是否加密,MySQL 8.0.16中引?的新選項、
3.2.1創(chuàng)建一個名字為test的數(shù)據(jù)庫
create database test;

3.2.2自定義一個數(shù)據(jù)庫名,如果該數(shù)據(jù)庫不存在則創(chuàng)建
create database if not exists test;
如果不加 if not exists,觀察發(fā)現(xiàn)報錯顯示test已經存在無法創(chuàng)建

我們加上 if not exists,觀察發(fā)現(xiàn)數(shù)據(jù)庫里面已經存在test,所以沒有創(chuàng)建,出現(xiàn)了一個警告

我們顯示警告,提示test已經存在不能創(chuàng)建

所以建議創(chuàng)建數(shù)據(jù)庫的時候加上 if not exists,可以有效防止報錯,而導致程序中斷
在設置字符集編碼之前,我們先來了解一下字符集編碼和校驗排序規(guī)則
show charset;

我們看到當前數(shù)據(jù)庫支持的所以字符集編碼,MySQL8.0默認的字符集編碼是utf8mb4,而MySQL5.7默認的字符集是latin1
show collation;

這里我們只顯示部分排序排序規(guī)則,MySQL8.0默認的排序規(guī)則是 utf8mb4_0900_ai_ci,MySQL5.7默認排序規(guī)則是utf8mb4_general_ci
我們可以分析一下當前字符集和排序規(guī)則對數(shù)據(jù)庫的影響
utf8mb4_0900_ai_ci 是MySQL8.0引?的新規(guī)則,在?版本中不能識別;
utf8mb4 編碼是對 Unicode 字符集的?種實現(xiàn),?1到4個字節(jié)表??個字符,可以表?世界上?乎所有的字符,?且更節(jié)少空間
0900 是基于UCA9.0.0算法,UCA是Unicode Collation Algorithm的縮寫
- ai是Accent-insensitive的縮寫,表??聲不敏感
- ci是Case-insensitive的縮寫表???寫不敏感
- as是Accent-sensitive的縮寫,表??聲敏感
- cs是Case-sensitive的縮寫,表???寫敏感
show variables like '%character%' 查看當前系統(tǒng)默認字符集
show variables like '%collation%' 查看當前系統(tǒng)默認排序規(guī)則

3.2.3 創(chuàng)建一個制定字符集和排序規(guī)則的數(shù)據(jù)庫
create database if not exists java character set utf8mb4 collate utf8mb4_0900_ai_ci;

3.3 查看創(chuàng)建庫的語句
show create database db_name;
我們查詢一下java數(shù)據(jù)庫的創(chuàng)建語句

3.4 修改數(shù)據(jù)庫
ALTER {DATABASE | SCHEMA} [db_name] alter_option ...
alter_option: {
[DEFAULT] CHARACTER SET [=] charset_name
| [DEFAULT] COLLATE [=] collation_name
| [DEFAULT] ENCRYPTION [=] {'Y' | 'N'}
| READ ONLY [=] {DEFAULT | 0 | 1}
}
修改數(shù)據(jù)庫主要是針對數(shù)據(jù)庫的字符集和排序規(guī)則進行修改
我們修改之前的test數(shù)據(jù)庫的字符集編碼為gbk
可以觀察到修改之前默認字符集為utf8mb4,修改后則為gbk

3.5 刪除數(shù)據(jù)庫
DROP {DATABASE | SCHEMA} [IF EXISTS] db_name
我們刪除test數(shù)據(jù)庫,可以觀察到刪除后test數(shù)據(jù)庫不存在了

??刪除數(shù)據(jù)庫是非常危險的操作,不要隨意刪除數(shù)據(jù)庫
到此這篇關于MySQL數(shù)據(jù)庫基礎與庫的操作大全的文章就介紹到這了,更多相關mysql數(shù)據(jù)庫基礎與庫內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
IDEA 程序包不存在,找不到符號但是明明存在對應的jar包(問題分析及解決方案)
這篇文章主要介紹了IDEA 程序包不存在,找不到符號但是明明存在對應的jar包 的解決方案,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08
SpringBoot?AOP?Redis實現(xiàn)延時雙刪功能實戰(zhàn)
本文主要介紹了SpringBoot?AOP?Redis實現(xiàn)延時雙刪功能實戰(zhàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-08-08
Maven配置文件修改及導入第三方jar包的實現(xiàn)
本文主要介紹了Maven配置文件修改及導入第三方jar包的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-08-08
Spring cloud alibaba之Gateway網關功能特征詳解
spring cloud gateway是spring cloud推出的第二代網關,是由WebFlux+Netty+Reactor實現(xiàn)的響應式的API網關,它不能在傳統(tǒng)的servlet容器中工作,也不能構建成war包,接下來通過本文給大家分享Spring cloud alibaba--Gateway網關,需要的朋友可以參考下2021-08-08
java 定時器線程池(ScheduledThreadPoolExecutor)的實現(xiàn)
這篇文章主要介紹了java 定時器線程池(ScheduledThreadPoolExecutor),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-06-06

