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
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 本章將和大家分享ES的數據同步方案和ES集群相關知識。廢話不多說,下麵我們直接進入主題。 一、ES數據同步 1、數據同步問題 Elasticsearch中的酒店數據來自於mysql資料庫,因此mysql數據發生改變時,Elasticsearch也必須跟著改變,這個就是Elasticsearch與my ...
  • 引言 在我們之前的文章中介紹過使用Bogus生成模擬測試數據,今天來講解一下功能更加強大自動生成測試數據的工具的庫"AutoFixture"。 什麼是AutoFixture? AutoFixture 是一個針對 .NET 的開源庫,旨在最大程度地減少單元測試中的“安排(Arrange)”階段,以提高 ...
  • 經過前面幾個部分學習,相信學過的同學已經能夠掌握 .NET Emit 這種中間語言,並能使得它來編寫一些應用,以提高程式的性能。隨著 IL 指令篇的結束,本系列也已經接近尾聲,在這接近結束的最後,會提供幾個可供直接使用的示例,以供大伙分析或使用在項目中。 ...
  • 當從不同來源導入Excel數據時,可能存在重覆的記錄。為了確保數據的準確性,通常需要刪除這些重覆的行。手動查找並刪除可能會非常耗費時間,而通過編程腳本則可以實現在短時間內處理大量數據。本文將提供一個使用C# 快速查找並刪除Excel重覆項的免費解決方案。 以下是實現步驟: 1. 首先安裝免費.NET ...
  • C++ 異常處理 C++ 異常處理機制允許程式在運行時處理錯誤或意外情況。它提供了捕獲和處理錯誤的一種結構化方式,使程式更加健壯和可靠。 異常處理的基本概念: 異常: 程式在運行時發生的錯誤或意外情況。 拋出異常: 使用 throw 關鍵字將異常傳遞給調用堆棧。 捕獲異常: 使用 try-catch ...
  • 優秀且經驗豐富的Java開發人員的特征之一是對API的廣泛瞭解,包括JDK和第三方庫。 我花了很多時間來學習API,尤其是在閱讀了Effective Java 3rd Edition之後 ,Joshua Bloch建議在Java 3rd Edition中使用現有的API進行開發,而不是為常見的東西編 ...
  • 框架 · 使用laravel框架,原因:tp的框架路由和orm沒有laravel好用 · 使用強制路由,方便介面多時,分多版本,分文件夾等操作 介面 · 介面開發註意欄位類型,欄位是int,查詢成功失敗都要返回int(對接java等強類型語言方便) · 查詢介面用GET、其他用POST 代碼 · 所 ...
  • 正文 下午找企業的人去鎮上做貸後。 車上聽同事跟那個司機對罵,火星子都快出來了。司機跟那同事更熟一些,連我在內一共就三個人,同事那一手指桑罵槐給我都聽愣了。司機也是老社會人了,馬上聽出來了,為那個無辜的企業經辦人辯護,實際上是為自己辯護。 “這個事情你不能怪企業。”“但他們總不能讓銀行的人全權負責, ...
  • 1. JUnit 最佳實踐指南 原文: https://howtodoinjava.com/best-practices/unit-testing-best-practices-junit-reference-guide/ 我假設您瞭解 JUnit 的基礎知識。 如果您沒有基礎知識,請首先閱讀(已針 ...