事務:是做爲一個單元的一組有序的數據庫操做,若是組當中全部操做都成功,則事務執行成功,若是有一個操做執行失敗,則事務執行失敗,回滾操做。mysql
事務的特性:sql
原子性:事務包含的全部操做所有成功,要麼所有失敗回滾;成功必須徹底應 用到數據庫,失敗則不能不能對數據庫產生影響。mongodb
一致性:事務執行前和執行後必須處於一致狀態。數據庫
隔離性:當多用戶併發訪問數據庫時候,數據庫爲每個用戶開啓一個事務, 這個事務不被其餘事務操做干擾,多個併發事務直接互相隔離。併發
持久性:一旦事務被提交了,那麼數據庫當中的數據改變是永久性的,即使數 據庫系統發生故障,也不會丟失事務操做。nosql
事務的回滾:sqlserver
事務是用戶定義的一組數據庫操做。這些操做要麼全作,要麼全不作,回滾會自動是將該事務完成的操做撤銷。spa
//(相似於打遊戲死了,從新讀檔?)rest
數據庫提供的四種隔離等級:server
若是咱們不考慮隔離性,會致使髒讀
髒讀
在一個事務處理的過程中讀取另外一個沒有提交的事務當中的數據,而後使用了數據。
A向B轉帳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形式存儲的文檔數據庫
Redis、mongodb
使用mysql數據庫須要鏈接數據庫
Mysql -u -p -h
-u 用戶,默認有root用戶,root用戶是mysql數據庫的管理員用戶,擁有最高的權限。因此默認不容許遠程登陸root用戶。
-p 密碼,用戶對應的密碼
-h 主機,默認是localhost(127.0.0.1)表明本機,
Mysql結構
Mysql是數據庫類型
在mysql當中,存放的
Database 數據庫
Table 表
Field(column) 字段
Value 值
對比office的Excel來看
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 字符
Char和varchar 都須要指定長度,若是字符的長度不夠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=你的表名
全部字段能夠用*代替,在工做當中通常不容許用*
懶得寫了