1. 程式人生 > >mysql學習之路--從安裝開始

mysql學習之路--從安裝開始

我是直接裝的安裝版,這個比較容易上手,官方下載地址:點我點我點我呀

 

安裝教程:在這裡,系統是win10,雖然不好用,但也沒辦法,好了,不瞎bb了,下面直接開始。

第一部分:基本概念

資料庫分關係型資料庫非關係型資料庫,最常用的關係資料庫就是mysql,其次還有MariaDB,sqlServer,sqLite等,非關係資料有mongoDB,redis,HBASE等等,下面瞭解一下二者的優缺點:

關係型資料庫最典型的資料結構是表,由二維表及其之間的聯絡所組成的一個數據組織

優點:

1、易於維護:都是使用表結構,格式一致;

2、使用方便:SQL語言通用,可用於複雜查詢;

3、複雜操作:支援SQL,可用於一個表以及多個表之間非常複雜的查詢。

缺點:

1、讀寫效能比較差,尤其是海量資料的高效率讀寫;

2、固定的表結構,靈活度稍欠;

3、高併發讀寫需求,傳統關係型資料庫來說,硬碟I/O是一個很大的瓶頸。

非關係型資料庫嚴格上不是一種資料庫,應該是一種資料結構化儲存方法的集合,可以是文件或者鍵值對等。

優點:

1、格式靈活:儲存資料的格式可以是key,value形式、文件形式、圖片形式等等,文件形式、圖片形式等等,使用靈活,應用場景廣泛,而關係型資料庫則只支援基礎型別

2、速度快:nosql可以使用硬碟或者隨機儲存器作為載體,而關係型資料庫只能使用硬碟;

3、高擴充套件性;

4、成本低:nosql資料庫部署簡單,基本都是開源軟體。

缺點:

1、不提供sql支援,學習和使用成本較高;

2、無事務處理;

3、資料結構相對複雜,複雜查詢方面稍欠

下面我們詳細介紹一下MYSQL

 

1.什麼是資料庫?

資料庫是按照資料結構來組織,儲存和管理資料的倉庫

 

每個資料庫都有一個或多個不同的API用於建立,訪問,管理,搜尋和複製所儲存的資料。

 

我們也可以將資料儲存在檔案中,但是在檔案中讀寫資料速度相對較慢。

 

所以,現在我們使用關係型資料庫管理系統(RDBMS)來儲存和管理的大資料量。所謂的關係型資料庫,是建立在關係模型基礎上的資料庫,藉助於集合代數等數學概念和方法來處理資料庫中的資料。

 

RDBMS即關係資料庫管理系統(Relational Database Management System)的特點:

 

  • 1.資料以表格的形式出現
  • 2.每行為各種記錄名稱
  • 3.每列為記錄名稱所對應的資料域
  • 4.許多的行和列組成一張表單
  • 5.若干的表單組成database

 

2.瞭解一下RDBMS術語 

 

  • 資料庫: 資料庫是一些關聯表的集合。
  • 資料表: 表是資料的矩陣。在一個數據庫中的表看起來像一個簡單的電子表格。
  • 列: 一列(資料元素) 包含了相同的資料, 例如郵政編碼的資料。
  • 行:一行(=元組,或記錄)是一組相關的資料,例如一條使用者訂閱的資料。
  • 冗餘:儲存兩倍資料,冗餘降低了效能,但提高了資料的安全性。
  • 主鍵:主鍵是唯一的。一個數據表中只能包含一個主鍵。你可以使用主鍵來查詢資料。
  • 外來鍵:外來鍵用於關聯兩個表。
  • 複合鍵:複合鍵(組合鍵)將多個列作為一個索引鍵,一般用於複合索引。
  • 索引:使用索引可快速訪問資料庫表中的特定資訊。索引是對資料庫表中一列或多列的值進行排序的一種結構。類似於書籍的目錄。
  • 參照完整性: 參照的完整性要求關係中不允許引用不存在的實體。與實體完整性是關係模型必須滿足的完整性約束條件,目的是保證資料的一致性。

 

 

3.關於mysql

MySQL 是一個關係型資料庫管理系統,由瑞典 MySQL AB 公司開發,目前屬於 Oracle 公司。MySQL 是一種關聯資料庫管理系統,關聯資料庫將資料儲存在不同的表中,而不是將所有資料放在一個大倉庫內,這樣就增加了速度並提高了靈活性。

  • MySQL 是開源的,所以你不需要支付額外的費用。
  • MySQL 支援大型的資料庫。可以處理擁有上千萬條記錄的大型資料庫。
  • MySQL 使用標準的SQL資料語言形式。
  • MySQL 可以運行於多個系統上,並且支援多種語言。這些程式語言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。
  • MySQL 對PHP有很好的支援,PHP是目前最流行的Web開發語言。
  • MySQL 支援大型資料庫,支援5000萬條記錄的資料倉庫,32位系統表文件最大可支援4GB,64位系統支援最大的表文件為8TB。
  • MySQL 是可以定製的,採用了GPL協議,你可以修改原始碼來開發自己的 MySQL 系統。   

二.命令

1.建立資料庫

進入cmd輸入以下命令

 

mysql -u root -p

 

預設沒有密碼直接回車進入,或者開啟mysql終端直接回車,當你看到以下畫面,說明你已經登陸成功了:

Enter password: ****
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 31
Server version: 8.0.13 MySQL Community Server - GPL

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

你也可以使用一下命令建立root使用者的密碼:

mysqladmin -u root password "需要設定的密碼";

登入成功後,我們來建立第一個資料庫,命令如下

create database 資料庫名;

切記一定要在sql語句後邊家上分號,表示當前語句結束。

刪除資料庫用以下命令:

drop database 資料庫名;

選擇資料庫命令:

use 資料庫名

檢視資料庫命令:

show databases;

下面我建立一個叫running的資料庫並選擇使用它:

 

接下來,我們來學習建立資料表,在此之前我們先來了解一下資料型別都有哪些,這對資料庫的優化非常重要

 

2.資料型別

 這個哥們總結的比較全,我這裡就不抄襲了,傳送門點我鴨

3.建立資料表

在建立資料表時,我們需要有以下資訊:1:表名,2:欄位名,3:每個欄位的資料型別和長度,我們來看一下語法:

 

create table 資料表名 (欄位名 資料型別(長度));

 

下面,我們來建立一個數據表:

create table if not exists test (user_id int unsigned auto_increment,name varchar(20) not null,age int,primary key (user_id))engine = innodb default charset=utf8;

這條語句的意思是如果不存在test資料表的時候建立該表,下面來介紹以下幾個概念:

1,not null: 如果你不想該欄位為空,可以設定該屬性not null,如果在資料庫插入資料是沒有該資料,就會報錯

2,unsigined:該屬性表示無符號化,只表示大小,只針對整型,設定該屬性會將改數值的取值範圍增加一倍

3,auto_increment: 自增屬性,一般用於主鍵,數值會自動+1

4,primary key;定義列為主鍵,可以設定多列

5,engine 設定儲存引擎,charset設定字元編碼

 

下面我們來學習如何刪除資料表,用以下命令:

drop table 資料表名;

向資料表插入資料:

insert into 資料表名 (欄位1,欄位2....) values (值1,值2...);

如果值為字元型,必須用單引號或者雙引號,如“張三”

如果建表的時候你沒有設定字元編碼,插入資料如果有漢子查詢會有亂碼現象,我們可以用以下命令設定編碼:

set names utf8;

那麼,如果我想插入多條資料怎麼辦?很簡單,只需要將每行資料之間用逗號隔開就行了,格式如下:

insert into 資料表名 (欄位1,欄位2....) values (值1,值2...), (值1,值2...), (值1,值2...);

在程式中,插入批量資料時,最好使用這種通過一條INSERT語句來一次性插入的方式。這樣可以避免程式和資料庫建立多次連線,從而增加伺服器負荷

下面我們來建立一個名叫test的資料表,分別有user_id,name,age三個欄位:

 

4.資料表查詢