MySQL基礎總結

来源:https://www.cnblogs.com/noneplus/archive/2019/09/21/11562357.html
-Advertisement-
Play Games

MySQL是Oracle公司開發、發佈和支持的最流行的開源SQL資料庫管理系統。 ...


關於MySQL

官方文檔:https://dev.mysql.com/doc/refman/8.0/en/

MySQL是Oracle公司開發、發佈和支持的最流行的開源SQL資料庫管理系統。

【主要特點】

  • 開源
  • 使用BTree索引
  • 支持多線程,對多核CPU性能可以達到更好的發揮
  • 用C和C++編寫

CentOS7.6 安裝MySQL8.0

環境準備

  • 卸載mariadb
rpm -qa | grep mariadb

rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64

centos7 內部集成了mariadb,而安裝mysql的話會和mariadb的文件衝突,所以需要先卸載掉mariadb。

【如果之前安裝了mysql需要先卸載】

yum remove mysql*

刪除安裝目錄

whereis  mysql

rm -rf /usr/share/mysql
  • 安裝MySQL

    • 獲取yum源(MySQL官網)

      1567919447819

    • 安裝yum源

      rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
    • 查看各版本啟動狀況

      yum repolist all | grep mysql

      預設開啟最新版8.0

      1567919595117

    • [調整命令】禁用8.0,開啟5.7

      yum-config-manager --disable mysql80-community
      yum-config-manager --enable mysql57-community

      命令在yum-utils 包里,安裝既可以解決無法找到yum-config-manager命令:

      yum -y install yum-utils
    • 安裝mysqll

      yum -y install mysql-community-server

配置MySQL遠程連接

  • 查看mysql版本

    mysql -V
    
  • 啟動mysql&&設置開機自啟

    systemctl start mysqld
    systemctl enable mysqld
    
  • 查看預設生成密碼

    grep 'temporary password' /var/log/mysqld.log
    
  • 登錄修改密碼

    mysql -uroot -p
    
  • 修改密碼

    ALTER USER 'root'@'localhost' IDENTIFIED BY 'NoPassword564925080!';
    
    mysql5.7之後預設安裝了密碼安全檢查插件(validate_password),預設密碼檢查策略要求密碼必須包含:大小寫字母、數字和特殊符號,並且長度不能少於8位。否則會提示ERROR 1819 (HY000): Your password does not satisfy the current policy requirements錯誤.
    
  • 授權遠程登錄用戶

    預設的密碼加密方式是:caching_sha2_password,而現在很多客戶端工具還不支持這種加密認證方式,連接測試的時候就會報錯:client does not support authentication protocol requested by server; consider upgrading MySQL client

    CREATE USER 'noneplus'@'%' IDENTIFIED BY 'Noneplus564925080!';
    
    GRANT ALL ON *.* TO 'noneplus'@'%';
    
    //修改認證方式為mysql_native_password
    ALTER USER 'noneplus'@'%' IDENTIFIED WITH mysql_native_password BY 'Noneplus564925080!';
    
    flush privileges;
    
    
  • 開放伺服器3306埠

  • 遠程連接

    1567920997553

MySQL常用命令

登錄

mysql -u root -p

資料庫相關命令

show databases;

create database database_name;

use database_name;

drop database_name;

資料庫表相關命令

【資料庫和資料庫表相關命令都屬於DDL數據定義語言】

show tables;     [先切換到指定資料庫]

//創建表
CREATE TABLE `user_info` (
  `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '用戶id',
  `username` varchar(10) DEFAULT NULL COMMENT '用戶姓名',
  `password` varchar(20) DEFAULT NULL COMMENT '用戶密碼',
  `age` int(5) DEFAULT NULL COMMENT '年齡',
  `email` varchar(20) DEFAULT NULL COMMENT '郵箱',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=100 DEFAULT CHARSET=utf8 COMMENT='用戶信息表'


//查看表定義
show create table user_info \G;


drop table user_info;

//刪除表欄位
alter table user_info column age;

//修改表
Alter table user_info modify username varchar(15);

//增加表的欄位
alter  table user_info add column gender int(1);

//欄位改名
alter table user_info change age age1 int(3);

//modify,add,change都可以進行排序

Alter table user_info modify username varchar(15) first;  //放在最前面

alter  table user_info add column gender int(1) after age;//欄位至於age之後


//修改表名

alter table user_info rename person_info;

增刪改查命令

【增刪改查屬於DML數據操作語言】

插入

INSERT INTO user_info(username,password,age,email) VALUES('hq','123456789',22,'[email protected]')

更新

UPDATE user_info SET username='hq',age=23,email='[email protected]' WHERE id=5

刪除

DELETE FROM user_info WHERE id=6

查詢

SELECT * FROM user_info WHERE id = 6
SELECT * FROM user_info WHERE id = 6 and age<30

排序【預設升序】

SELECT * FROM user_info ORDER BY ID DESC LIMIT 10   //查詢最後十條數據
SELECT * FROM user_info ORDER BY ID DESC LIMIT 10,20   //查詢最後20條數據的前10條

統計數據總條數

SELECT COUNT(1) FROM user_info;

統計最大值,最小值,求和

SELECT MAX(age),MIN(age) ,SUM(age) FROM user_info;

表連接查詢

select ename,deptname from emp,dept where emp.deptno=dept.deptno;

MySQL常用數據類型

數值類型

整數類型 位元組 最小值 最大值
tinyint 1 有符號-128 無符號0 有符號127 無符號255
smallint 2 有符號-32768 無符號0 有符號32767 無符號65535
mediumint 3 有符號-800w 無符號0 有符號800w 無符號167w
int,integer 4 有符號-21億 無符號0 有符號21億 無符號42億
bigint 8 有符號-92w兆 無符號0 有符號92w兆 無符號184w兆

int(5)指定顯式寬度【不顯式指定預設int(11)】,當數值寬度小於五位的時候,預設填滿。zerofill指用0填充。

unsigned表示是否帶符號

浮點數類型 位元組 最小值 最大值
float 4
double 8
定點數類型 位元組 最小值 最大值
decimal(M,D) M+2 有符號-128 無符號0 有符號127 無符號255

表示一共顯示M位數字,包括整數位和小數位,其中D位代表小數點有幾位

decimal不指定精度預設整數位為10,小數位為0.

日期時間類型

類型 位元組 最小值 最大值
date 4 1000-01-01 9999-12-31
datetime 8 1000-01-01 00:00:00 9999-12-31 23:59:59
timestamp 4 1970010108001 2038年的某個時刻

記錄系統當前時間可用timestamp,支持不同地方的時區差異

TIMESTAMP 存儲的時間範圍 1970-01-01 00:00:01 ~ 2038-01-19-03:14:07

字元串類型

類型 描述
char 0-255位元組
varchar 0-65535位元組
tinyblob 0-255位元組
blob 0-65535位元組
mediumblob 0-16772150位元組
longblob 0-4294967295位元組
tinytext 0-255位元組
text 0-65535位元組
mediumtext 0-16772150位元組
longtext 0-4294967295位元組
varbinary(M) 0-M位元組
binary(M) 0-M位元組

MySQL支持的運算符

算術運算符

算術運算符 說明
+ 加法運算
- 減法運算
* 乘法運算
/ 除法運算,返回商
% 求餘運算,返回餘數

比較運算符

比較運算符 說明
= 等於
< 小於
<= 小於等於
> 大於
>= 大於等於
<=> 安全的等於,不會返回 UNKNOWN
<> 或!= 不等於
IS NULL 或 ISNULL 判斷一個值是否為 NULL
IS NOT NULL 判斷一個值是否不為 NULL
LEAST 當有兩個或多個參數時,返回最小值
GREATEST 當有兩個或多個參數時,返回最大值
BETWEEN AND 判斷一個值是否落在兩個值之間
IN 判斷一個值是IN列表中的任意一個值
NOT IN 判斷一個值不是IN列表中的任意一個值
LIKE 通配符匹配
REGEXP 正則表達式匹配

邏輯運算符

邏輯運算符 說明
NOT 或者 ! 邏輯非
AND 或者 && 邏輯與
OR 或者 || 邏輯或
XOR 邏輯異或【相同為0,不同為1】

位運算符

位運算符 說明
| 按位或
& 按位與
^ 按位異或
<< 按位左移
>> 按位右移
~ 按位取反,反轉所有比特

運算符優先順序

優先順序由低到高排列 運算符
1 =(賦值運算)、:=
2 II、OR
3 XOR
4 &&、AND
5 NOT
6 BETWEEN、CASE、WHEN、THEN、ELSE
7 =(比較運算)、<=>、>=、>、<=、<、<>、!=、 IS、LIKE、REGEXP、IN
8 |
9 &
10 <<、>>
11 -(減號)、+
12 *、/、%
13 ^
14 -(負號)、〜(位反轉)
15 !

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 參考地址: 如何看MS SQLSERVER資料庫的執行計劃https://blog.csdn.net/luoyanqing119/article/details/17022649 SQLserver索引的原理和應用https://www.cnblogs.com/knowledgesea/p/3672 ...
  • redis持久化存儲 是一種記憶體型資料庫,一旦伺服器進程退出,資料庫的數據就會丟失,為瞭解決這個問題, 提供了兩種持久化的方案,將記憶體中的數據保存到磁碟中,避免數據的丟失。 1.RDB持久化 redis提供了RDB持久化的功能,這個功能可以將redis在記憶體中的狀態數據保存到磁碟 觸發機制: 手動執 ...
  • 在SQL Server資料庫中,有時候會建立一些Windows認證的賬號(域賬號),例如,我們公司習慣給開發人員和Support同事開通NT賬號許可權,如果有離職或負責事宜變更的話,那麼要如何正確的刪除這些Windows認證賬號呢?這篇文章就是來探討一下如何正確的刪除Windows認證賬號。如下所示:... ...
  • 1.redis學習 數據預設寫入到記憶體,如果斷電,伺服器宕機,redis進程掛掉,數據會丟失。 selenium操作瀏覽器時,要註意瀏覽器資源釋放,方式記憶體泄露,崩潰 mysql是文件型資料庫,預設持久化到硬碟上 redis 是記憶體型資料庫 2.redis安裝學習 yum安裝,最簡單,配置yum源, ...
  • 2. 資料庫操作 資料庫在創建以後最常見的操作便是 2.1 查詢 為了便於學習和理解,我們預先準備了兩個表分別是 表和 表兩個表的內容和結構如下所示 表的內容: | id | class\_id | name | gender | score | | | | | | | | 1 | 1 | 小明 | ...
  • 背景 Mysql是一個關係型資料庫,由瑞典Mysql AB開發,目前屬於Oracle旗下的產品。Mysql是目前最流行的關係型資料庫管理系統之一,在WEB方面,Mysql是最好的RDBMS(Relational Database Management System)。Mysql是一種關係資料庫管理系 ...
  • 大數據 概述 大數據是新處理模式才能具備更多的決策力,洞察力,流程優化能力,來適應海量高增長率,多樣化的數據資產。 大數據面臨的問題 怎麼存儲海量數據(kb,mb,gb,tb,pb,eb,zb) 怎麼對數據進行降噪處理(對數據進行清洗,使得數據變廢為寶,提取有用的數據,減少不必要的數據資源空間的釋放 ...
  • 規範總結 所有資料庫對象名稱必須使用小寫字母並用下劃線分割 所有資料庫對象名稱禁止使用 MySQL 保留關鍵字【設計表後逐一排查】 所有表必須使用 Innodb 存儲引擎,資料庫和表的字元集統一使用 UTF8 所有表和欄位都需要添加註釋 禁止在資料庫中存儲圖片,文件等大的二進位數據 【 通常存儲於文 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...