數據庫基礎理解學習-Mysql

1. 簡介

  數據庫,現代化的數據存儲存儲手段,是一種特殊的文件,其中存儲着須要的數據。算法

特色:sql

  • 持久化存儲
  • 讀寫速度極高
  • 保證數據的有效性
  • 對程序支持性很是好,容易擴展

2. Mysql

(1)具備數據完整性:數據庫

  一個數據庫就是一個完整的業務單元,能夠包含多張表,數據被存儲在表中。在表中爲了更加準確的存儲數據,保證數據的正確有效,能夠在建立表的時候,爲表添加一些強制性的驗證,包括數據字段的類型、約束。編程

約束說明:多線程

  • 主鍵primary key:物理上存儲的順序;
  • 非空not null:此字段不容許填寫空值;
  • 唯一unique:此字段的值不容許重複;
  • 默認default:當不填寫此值時會使用默認值,若是填寫時以填寫爲準;
  • 外鍵foreign key:對關係字段進行約束,當爲關係字段填寫值時,會到關聯的表中查詢此值是否存在,若是存在則填寫成功,若是不存在則填寫失敗並拋出異常;
  • 說明:雖然外鍵約束能夠保證數據的有效性,可是在進行數據的crud(增長、修改、刪除、查詢)時,都會下降數據庫的性能,因此不推薦使用,那麼數據的有效性怎麼保證呢?答:能夠在邏輯層進行控制。

(2)Mysql-關係型數據庫,核心元素:編程語言

  • 數據行(記錄)
  • 數據列(字段)
  • 數據表(數據行的集合)
  • 數據庫(數據表的集合)

(3)特色:工具

  • 使用C和C++編寫,並使用了多種編譯器進行測試,保證源代碼的可移植性;
  • 支持多種操做系統,如Linux、Windows、AIX、FreeBSD、HP-UX、MacOS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris等;
  • 爲多種編程語言提供了API,如C、C++、Python、Java、Perl、PHP、Eiffel、Ruby等;
  • 支持多線程,充分利用CPU資源;
  • 優化的SQL查詢算法,有效地提升查詢速度;
  • 提供多語言支持,常見的編碼如GB23十二、BIG五、UTF8;
  • 提供TCP/IP、ODBC和JDBC等多種數據庫鏈接途徑;
  • 提供用於管理、檢查、優化數據庫操做的管理工具;
  • 大型的數據庫。能夠處理擁有上千萬條記錄的大型數據庫;
  • 支持多種存儲引擎;
  • MySQL 軟件採用了雙受權政策,它分爲社區版和商業版,因爲其體積小、速度快、整體擁有成本低,尤爲是開放源碼這一特色,通常中小型網站的開發都選擇MySQL做爲網站數據庫;
  • MySQL使用標準的SQL數據語言形式;
  • Mysql是能夠定製的,採用了GPL協議,你能夠修改源碼來開發本身的Mysql系統;
  • 在線DDL更改功能;
  • 複製全局事務標識;
  • 複製無崩潰從機;
  • 複製多線程從機。

3.基礎操做-增刪改查

(1)sql語句主要分爲:性能

DQL:數據查詢語言,用於對數據進行查詢,如select測試

DML:數據操做語言,對數據進行增長、修改、刪除,如insert、udpate、delete優化

TPL:事務處理語言,對事務進行處理,包括begin transaction、commit、rollback

DCL:數據控制語言,進行受權與權限回收,如grant、revoke

DDL:數據定義語言,進行數據庫、表的管理等,如create、drop

CCL:指針控制語言,經過控制指針完成表的操做,如declare cursor

(2)增刪改查

① 查詢

  • 查詢全部列

select * from 表名;

例:select * from classes;

  • 查詢指定列

可使用as爲列或表指定別名,select 列1,列2,... from 表名;

例:select id,name from classes;

② 增長

格式:INSERT [INTO] tb_name [(col_name,...)] {VALUES | VALUE} ({expr | DEFAULT},...),(...),...

  • 全列插入:值的順序與表中字段的順序對應

insert into 表名 values(...)

例:insert into students values(0,’李燦‘,1,'西安','2019-1-6');

  • 部分列插入:值的順序與給出的列順序對應

insert into 表名(列1,...) values(值1,...)

例:insert into students(name,hometown,birthday) values('王思','四川','2019-3-2');

上面的語句一次能夠向表中插入一行數據,還能夠一次性插入多行數據,這樣能夠減小與數據庫的通訊

  • 全列多行插入:值的順序與給出的列順序對應

insert into 表名 values(...),(...)...;

例:insert into classes values(0,'day1'),(0,'day2');

insert into 表名(列1,...) values(值1,...),(值1,...)...;

例:insert into students(name) values('李思'),('王迪'),('鄧寬')

③ 修改

格式: UPDATE *tbname* SET col1={expr1|DEFAULT} [,col2={expr2|default}]...[where 條件判斷]

update 表名 set 列1=值1,列2=值2... where 條件

例:update students set gender=0,hometown='西安' where id=5;

④ 刪除

DELETE FROM tbname [where 條件判斷]

delete from 表名 where 條件

例:delete from students where id=5;

邏輯刪除,本質就是修改操做

update students set isdelete=1 where id=1;

相關文章
相關標籤/搜索