溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

MySQL數(shù)據(jù)庫(kù)的概念介紹

發(fā)布時(shí)間:2021-08-30 19:12:41 來(lái)源:億速云 閱讀:212 作者:chen 欄目:編程語(yǔ)言

本篇內(nèi)容主要講解“MySQL數(shù)據(jù)庫(kù)的概念介紹”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“MySQL數(shù)據(jù)庫(kù)的概念介紹”吧!

1.數(shù)據(jù)庫(kù)概念
  • 數(shù)據(jù)庫(kù)(Database)是按照數(shù)據(jù)結(jié)構(gòu)來(lái)組織、存儲(chǔ)和管理數(shù)據(jù)的倉(cāng)庫(kù);

  • 每個(gè)數(shù)據(jù)庫(kù)都有一個(gè)或多個(gè)不同的API用于創(chuàng)建,訪問(wèn),管理,搜索和復(fù)制所保存的數(shù)據(jù);

2.常用的數(shù)據(jù)庫(kù)分類

MySQL數(shù)據(jù)庫(kù)的概念介紹

3.關(guān)系型數(shù)據(jù)庫(kù)的優(yōu)缺點(diǎn)

優(yōu)點(diǎn):

  • 容易理解,二維表結(jié)構(gòu)是非常貼近邏輯世界一個(gè)概念,關(guān)系模型相對(duì)網(wǎng)狀、層次等其他模型來(lái)說(shuō)更容易理解 易于維護(hù),都是使用表結(jié)構(gòu),格式一致;

  • 使用方便,通用的SQL語(yǔ)言使得操作關(guān)系型數(shù)據(jù)庫(kù)非常方便;

缺點(diǎn):

  • 讀寫性能比較差,尤其是海量數(shù)據(jù)的高效率讀寫;

  • 固定的表結(jié)構(gòu),靈活度不高;

  • 每一步都要進(jìn)行加鎖的操作,增加數(shù)據(jù)庫(kù)負(fù)擔(dān);

  • 不擅長(zhǎng)對(duì)簡(jiǎn)單查詢需要快速返回結(jié)果的處理;

4.非關(guān)系型數(shù)據(jù)庫(kù)的優(yōu)缺點(diǎn)

優(yōu)點(diǎn):

  • 格式靈活,存儲(chǔ)數(shù)據(jù)的格式可以是key,value形式、文檔形式、圖片形式等等,文檔形式、圖片形式等等,使用靈活,應(yīng)用場(chǎng)景廣泛,而關(guān)系型數(shù)據(jù)庫(kù)則只支持基礎(chǔ)類型;

  • 無(wú)需經(jīng)過(guò)sql層的解析,讀寫性能很高;

  • 基于鍵值對(duì),數(shù)據(jù)沒(méi)有耦合性,容易擴(kuò)展;

缺點(diǎn):

  • 不提供sql支持,學(xué)習(xí)和使用成本較高;

  • 無(wú)事務(wù)處理;

  • 數(shù)據(jù)結(jié)構(gòu)相對(duì)復(fù)雜,復(fù)雜查詢方面稍欠;

5.MySQL數(shù)據(jù)庫(kù)的概念
  • MySQL是一種關(guān)系型數(shù)據(jù)庫(kù)管理軟件;

  • 也是Web世界中使用最廣泛的數(shù)據(jù)庫(kù)服務(wù)器;

  • MySQL內(nèi)部有多種數(shù)據(jù)庫(kù)引擎,最常用的引擎是支持?jǐn)?shù)據(jù)庫(kù)事務(wù)的InnoDB;

MySQL在過(guò)去由于性能高、成本低、可靠性好,已經(jīng)成為最流行的開(kāi)源數(shù)據(jù)庫(kù),因此被廣泛地應(yīng)用在Internet上的中小型網(wǎng)站中。隨著MySQL的不斷成熟,它也逐漸用于更多大規(guī)模網(wǎng)站和應(yīng)用,比如維基百科、Google和Facebook等網(wǎng)站。非常流行的開(kāi)源軟件組合LAMP中的“M”指的就是MySQL;

6.MySQL數(shù)據(jù)類型
  • 整數(shù):tinyint、smallint、mediumintint、bigint

  • 浮點(diǎn)數(shù):float、double、real、decimal

  • 日期和時(shí)間:date、time、datetime、timestamp、year;

  • 字符串:charvarchar;

  • 文本類型:tinytexttext、mediumtext、longtext;

  • 二進(jìn)制:tinyblob、blobmediumblob、longblob;

  • 對(duì)數(shù)據(jù)類型的修飾符:unsignednot null、default;

7.SQL語(yǔ)句分類
  • DDL:數(shù)據(jù)庫(kù)定義語(yǔ)言,負(fù)責(zé)數(shù)據(jù)庫(kù)定義,包括CREATE、ALTER、DROP;

# 創(chuàng)建庫(kù)
create database Student;
# 如果沒(méi)有Student這個(gè)庫(kù)則創(chuàng)建它,character set指定字符集為utf8, 排序規(guī)則為utf8_bin
create datebase if not exists Student character set utf8 collate utf8_bin
# 刪除庫(kù)
drop database Student;
# 修改庫(kù)
alter database Student character set = utf8mb4
alter database Student collate = utf8mb4_general_ci
# 創(chuàng)建表
create table students (id int not null primary key auto_increment, name varchar(250) not null, class varchar(250) not null) engine=InnoDB default charset=utf8;
# 查看表結(jié)構(gòu)
desc students;
# 修改表
alter table students add gender enum('f','m');
alter table students drop gender;
alter table students change name username varchar(100) after id;
alter table students modify username varchar(100) first;
# 刪除表
drop table students;
  • DML:數(shù)據(jù)庫(kù)操作語(yǔ)言, 負(fù)責(zé)數(shù)據(jù)集對(duì)象操作,包括INSERTDELETE、UPDATE、SELECT;

# 給students表增加數(shù)據(jù)
insert into students (class,username) values ('一年級(jí)', 'Luky'), ('二年級(jí)', 'Tom'), ('三年級(jí)', 'Mark');
# 修改students表中id = 1 的字段class的值為“初一”
update students set class = '初一' where id = 1;
# 刪除class為一年級(jí)的字段
delete from students where class = '一年級(jí)';
  • DCL:數(shù)據(jù)庫(kù)控制語(yǔ)言, 負(fù)責(zé)權(quán)限訪問(wèn)控,包括GRANT、REVOKE

# 先創(chuàng)建用戶,再授權(quán)
create user Mark@'172.16.19.%' identified by '123456';
grant all on *.* to Mark@'172.16.19.%';
flush privileges;
# 創(chuàng)建用戶的同時(shí)給用戶授權(quán)
grant all on *.* to Mark@'172.16.19.%' identified by '123456';
flush privileges;
# 給用戶授予某些權(quán)限
show grants for Mark@'172.16.19.%';
# 撤銷授權(quán)
revoke select ON *.* from Mark@'172.16.19.%';
flush privileges;
# 查看用戶的權(quán)限
show grants for Mark@'172.16.19.%';
# 刪除用戶
delete from mysql.user where user = "Mark";
flush privileges;
# 刪除用戶
drop user 'Mark'@'192.168.%.%';
# 修改密碼
(1)set password for 'Mark'@'192.168.%.%' = password('123456');
(2)使用update命令,直接修改 mysql.user 用戶表,修改之后flush priveleges;
  • TCL:事務(wù)控制語(yǔ)言,負(fù)責(zé)ACID事務(wù)處理,包括commit(提交)、rollback(回滾);

# SQL刪除記錄語(yǔ)句
sql = "DELETE FROM Student WHERE AGE > %s" % (30)
try:
    cursor.execute(sql)
    # 向數(shù)據(jù)庫(kù)提交
    db.commit()
except:
    # 發(fā)生錯(cuò)誤時(shí)回滾
    db.rollback()
  • SQL語(yǔ)句不區(qū)分大小寫,句尾使用分號(hào)表示一條語(yǔ)句結(jié)束, \G 結(jié)尾表示以以豎行顯示

8.SELECT 語(yǔ)句

MySQL數(shù)據(jù)庫(kù)的概念介紹

  • 查詢表上的所有的數(shù)據(jù);

select * from Student
  • 查詢部分?jǐn)?shù)據(jù);

select id,name from Student;
  • as給字段取別名,可以給一個(gè)字段取,也可以給多個(gè)字段??;

select id as num,name from Student;
select id as num,name as username from Student;
  • where子句用于指明過(guò)濾條件,可以使用的算數(shù)運(yùn)算符有:+, -, * ,/ ,= ,!= ,<=, >=,連接詞有:and , or;

select * from Student where id >= 1;
select * from Student where id <= 5 and id >1;
select * from Student where id <3 or id >10;
select * from Student where id between 1 and 5;    # between 較小的數(shù) and 較大的數(shù)
  • like語(yǔ)句用于模糊匹配,%表示任意長(zhǎng)度的字符,_表示任意單個(gè)字符

select * from Student where class like 'Ma%';
select * from Student where class like 'Ma_k';
  • 可以使用null對(duì)值進(jìn)行判斷

select * from Student where id is not null;
select * from Student where id is null;
  • group by 子句可以根據(jù)指定的查詢條件將查詢結(jié)構(gòu)進(jìn)行分組,用于做聚合運(yùn)算,可以使用的聚合函數(shù):avg(), max(),min() , count(),sum()

select age,gender from students group by gender; 
select avg(age),gender from students group by gender; 
select min(age), gender from students group by gender;
select max(age), gender from students group by gender;
select count(id), gender from students group by gender;
  • 使用order by語(yǔ)句排序,默認(rèn)是asc,表示升序排列,desc是降序;

select * from Student order by id desc;
  • having子句用于將分組之后的結(jié)果再次過(guò)濾;

select avg(age) as 'average_age', gender from students group by gender having average_age > 50;
  • limit 子句用于對(duì)查詢的結(jié)果進(jìn)行輸出行數(shù)的限制 ;

# 選前5行
select id,name from students order by id desc limit 5; 
# 前4個(gè)不選,從第5行開(kāi)始選2行
select id,name from students order by id limit 4, 2;
  • 子句的書寫順序:where -> group by -> having -> order by -> limit

select *,avg(score) as '各班平均成績(jī)' from students where id > 1 group by class having avg(score) > 55 order by score desc limit 3 ;

到此,相信大家對(duì)“MySQL數(shù)據(jù)庫(kù)的概念介紹”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI