mysql屬於關係型資料庫,關係型資料庫是指採用了關係模型來組織資料的資料庫,而關係模型就是指二維**模型,所以,關係型資料庫就是由二維表及其之間的聯絡所組成的乙個資料組織。
1.mysql資料庫中常用的概念有:
(1)高併發讀寫效能低
由於**的使用者併發性高,往往是每秒上萬次的讀寫請求,雖然mysql等關係型資料庫勉強可以應付上萬次sql查詢,但硬碟i/o往往無法承擔上萬次的sql寫資料請求。
(2)海量資料讀寫效率低
**每天產生的資料量非常大,但是對於mysql等關係型資料庫來說,對海量資料的查詢和更改,效率非常低。
(3)可擴充套件性和可用性低
當資料量劇增的時候,無法簡單的新增硬體等方法擴充套件效能,而是需要停機維護和資料遷移。
3.關係型資料庫和非關係型資料庫:
(補充:
問:什麼是非關係型資料庫?
答:非關係型資料庫也叫nosql,它的產生就是為了解決大規模資料集合多重資料種類帶來的挑戰,尤其是大資料應用難題。由於不可能用一種資料結構化儲存應付所有的新的需求,因此,非關係型資料庫嚴格上不是一種資料庫,應該是一種資料結構化儲存方法的集合。
) (1)由於關係型資料庫的一致性,使得關係型資料庫可以用於所有對一致性有要求的系統中,如銀行系統;但是還是由於關係型資料庫的一致性,在網頁應用中,一致性也不是很重要,相反,對於高併發性要求比較高,因此,非關係型資料庫的地位就凸顯出來了。
(2)關係型資料庫通常是基於行的形式儲存,而關係型資料庫包括列式儲存、鍵值對儲存、文件儲存、圖形儲存。
4.資料庫的引擎:
資料庫引擎是用於儲存、處理和保護資料的核心服務。利用資料庫引擎可控制訪問許可權並快速處理事務。
mysql資料庫常用的引擎有:innodb和berkleydb(bdb)。
5.sql語句:
(1)新增、刪除使用者,給許可權
·新增使用者
insert
into mysql.user(host,user,password) values("localhost","test",password("123456"));
·刪除使用者
delete
from
user
where
user='test'
and host='localhost';
flush privileges;
·給許可權
grant
allprivileges
on testdb.* to test@localhost identified by
'123456';//把testdb資料庫的所有許可權給test
flush privileges;//重新整理系統許可權表
(2)建立、刪除資料庫
·建立
create
database test;
·刪除
drop
database test;
(3)選擇資料庫,建立、刪除表
·選擇資料庫
use
test;
·建立表
create
table test_table(
id int
notnull auto_increment,
name varchar(100) not
null,
age int
notnull,
date
date,
singin int,
primary
key(id)
);
·刪除表
drop
table test_table;
(4)增、刪、改、查
·增
insert
into test_table(name ,age)
values (小y,25);
·刪
delete
from test_table where name="小y";
·改
update test_table set name="小z"
where id=2;
·查
select id ,name ,age from test_table;
·模糊查詢(like)
select * from test_table where name like
"%y";
·排序查詢(asc公升序,desc降序)
select * from test_table order
by age asc;
select * from test_table order
by age desc;
·分組查詢(group by分組,with rollup在分組的基礎上再進行統計)
select name count(*) from test_table group
by name;
select name sum(singin) as singin_count from test_table group
by name with rollup;
(5)修改表名或字段
·修改表名
alter
table test_table rename to my_table;
·增加、刪除、修改字段型別,名稱
增加:alter
table my_table add i int;
刪除:alter
table my_table drop i;
修改:alter
table my_table modify name char(10);
alter
table my_table change i bigint;
(6)建立、刪除索引
my_table(name(length));
drop index [indexname] on my_table;
(7)處理重複資料
為了防止出現重複資料,可以設定指定字段為主鍵。
可以使用distinct來過濾重複資料。
select
distinct name from my_table ;
刪除重複資料。
create
table tmp select name ,age,singin from my_table;
drop
table my_table;
alter
table tmp rename to my_table;
(8)連線(inner join內連線,left join左連線,right join右連線)
·內連線
select a.runoob_id, a.runoob_author, b.runoob_count from runoob_tbl a inner
join tcount_tbl b on a.runoob_author = b.runoob_author;
·左連線(會讀取左邊資料表的全部資料,即便右邊表無對應資料。)
select a.runoob_id, a.runoob_author, b.runoob_count from runoob_tbl a left
join tcount_tbl b on a.runoob_author = b.runoob_author;
·右連線(會讀取右邊資料表的全部資料,即便左邊邊表無對應資料。)
select b.runoob_id, b.runoob_author, a.runoob_count from tcount_tbl a right
join runoob_tbl b on a.runoob_author = b.runoob_author;
MySql資料庫知識點總結01
資料庫從大的方面可以分為兩大部分,分別為底層的儲存系統也就是檔案系統,和上層的程式例項組成,程式例項有儲存管理 快取管理 日誌管理 許可權管理 容災管理 sql解析 索引 鎖等 程式實 儲存管理 快取管理 日誌管理 許可權管理 容災管理 sql解析 索引 鎖等 儲存 檔案系統 mysql體系結構 m...
MySQL資料庫索引知識點總結
1.mysql資料庫索引都有哪些資料結構 b 和hash 2.聊下hash hash查詢是把key通過hash生成下標然後獲取對應的值,它的主要特點是快速精確查詢,但是不支援範圍查詢。如果要是做成索引,速度是很慢的,要全部掃瞄。3.hash表在那些場景比較適合 等值查詢的場景,就只有kv key,v...
資料庫知識點總結
mysql支援的索引型別 b tree索引 隔離級別 預設使用可重複讀 mvcc 多版本併發控制機制。鎖機制可以控制併發操作,但是其系統開銷較大,而mvcc可以在大多數情況下代替行級鎖,使用mvcc,能降低其系統開銷。人們一般把基於鎖的併發控制機制稱成為悲觀機制,而把mvcc機制稱為樂觀機制。這是因...