mysql數據庫基礎

事務:是做爲一個單元的一組有序的數據庫操做,若是組當中全部操做都成功,則事務執行成功,若是有一個操做執行失敗,則事務執行失敗,回滾操做。mysql

 

事務的特性:sql

原子性:事務包含的全部操做所有成功,要麼所有失敗回滾;成功必須徹底應 用到數據庫,失敗則不能不能對數據庫產生影響。mongodb

一致性:事務執行前和執行後必須處於一致狀態。數據庫

隔離性:當多用戶併發訪問數據庫時候,數據庫爲每個用戶開啓一個事務, 這個事務不被其餘事務操做干擾,多個併發事務直接互相隔離。併發

持久性:一旦事務被提交了,那麼數據庫當中的數據改變是永久性的,即使數 據庫系統發生故障,也不會丟失事務操做。nosql

 

 

事務的回滾:sqlserver

事務是用戶定義的一組數據庫操做。這些操做要麼全作,要麼全不作,回滾會自動是將該事務完成的操做撤銷。spa

//(相似於打遊戲死了,從新讀檔?)rest

數據庫提供的四種隔離等級:server

若是咱們不考慮隔離性,會致使髒讀

髒讀

在一個事務處理的過程中讀取另外一個沒有提交的事務當中的數據,而後使用了數據。

AB轉帳100元,A通知B查看帳戶,B發現已經到帳,轉帳操做過程中,事務發生問題,進行回滾,B再查帳發現沒有成功。

不可重複讀

在一個事務以內,屢次讀取一條數據,這個事務沒有結束,另外一個事務也訪問這個數據,第二個事務訪問數據要對數據進行修改,那麼一個數據兩次事務讀到的結果可能不同。

//(事務A首先讀取了一條數據,而後執行邏輯的時候,事務B將這條數據改變了,而後事務A再次讀取的時候,發現數據不匹配了,就是所謂的不可重複讀了。)

幻讀

有兩個事務,第一個操做全部的數據,第二個操做一條數據,第二個事務沒有提交,第一個事務查看到的數據是以前的。

 

 

以上的問題都處於數據庫沒有隔離性。

 

隔離性的四個等級

Read uncommited(讀未提交),最低級別,任何狀況均可以發生。

Read commited(讀已提交),能夠避免髒讀

Repeatable read(可重複讀),能夠避免髒讀,不可重複讀的發生

Serializable(串行化),能夠避免髒讀,不可重複讀,幻讀的發生

數據庫分類

關係型數據庫:是創建在在關係模型的基礎上的數據庫,藉助集合,代數等數學概念和方法來處理數據。

Oracle,db2,sqlserver,access,Mysql,sqlite

//(然而只認識mysql

非關係型數據庫(nosql not only sql):key-value形式存儲的文檔數據庫

Redismongodb

 

 

 

 

 

使用mysql數據庫須要鏈接數據庫

 

Mysql  -u  -p  -h

 

-u 用戶,默認有root用戶,root用戶是mysql數據庫的管理員用戶,擁有最高的權限。因此默認不容許遠程登陸root用戶。

 

-p 密碼,用戶對應的密碼

 

-h 主機,默認是localhost(127.0.0.1)表明本機,

 

Mysql結構

 

Mysql是數據庫類型

 

mysql當中,存放的

 

Database 數據庫

 

Table

 

Fieldcolumn) 字段

 

Value

 

對比officeExcel來看

 

Mysql   --->     Excel

 

Database    --->     file

 

Table   --->     Sheet

 

Field   --->     表頭

 

Value   --->     數據

 

Sql語法規則

 

一、分號結尾

 

二、全部sql文檔,系統變量大寫//(感受大寫後都不認識了...)

 

三、Mysql自己大小寫不敏感

 

 

 

查詢數據庫命令

 

SHOW DATABASES;

 

建立數據庫

CREATE DATABASE  ?  CHARSET=UTF8;

//(CHARSET+UTF8 這個能夠不加,不過最好加上)

//?處寫你給數據庫起的名字,下面也同樣,還有就是必定要記得有分號啊啊!!!

//全部代碼一概英文輸入,

 

使用數據庫

USE ?;

//?=你的庫名

 

查看錶

SHOW TABLES;

建立表格式

CREATE TABLE ?(a b,.....) CHARSET=UTF8;

//a表示字節名,b表示這個字節的類型

//若是a是字符串類型必須給定長度

示例

CREATE TABLE student(id INT,name CHAR(32),age INT,major CHAR(32),class CHAR(32), phone CHAR(32)) CHARSET=UTF8;

//有沒有發現,我給的長度都是偶數?一個漢字佔兩個字節,若是是奇數的話,若是存滿了,最後一個漢字怎麼放進去?拿刀劈一半放進去?

 

 

字段類型:

  Int:

    TINYINT 微整數   1個字節  能表示的數-128-127

    SMALLINT 小整數  2個字節  本身算去

    MEDIUMINT 中等整數 3個字節  本身算去

    INT  整數  4個字節       能表示的數-2147483648-2147483647

    BIGINT 大整數 8個字節  本身算。。。

 

Float  4個字節

//浮點數啦

Char 字符

//字符串

Varchar 字符

 

Charvarchar 都須要指定長度,若是字符的長度不夠char的長度,以空格填充

Varchar 按照字符的長度設定長度

 

Char類型的字符串不能夠用空格結尾

 

Date  3字節  1998-12-21

 

TIME 3字節 23:24:24

 

 

 

 

查看錶結構

 

DESC ?;

//?=你的表名

 

插♂入數據:

INSERT INTO ?(a,b...) VALUE(c,d...);

//a=你的字段名 c=打算添加的內容,若是是字符串類型要加引號,數字不用加

案例

INSERT INTO student(id,name,age,major,class,phone) VALUE(1,"比利海靈頓",18,"wrestling","0506","110");

 

查詢數據庫數據

SELECT a FROM b;

//a=*     

//b=你的表名

全部字段能夠用*代替,在工做當中通常不容許用*

懶得寫了

相關文章
相關標籤/搜索