網(wǎng)站移動頁面怎么做google關(guān)鍵詞規(guī)劃師
1.關(guān)系型數(shù)據(jù)庫
關(guān)系型數(shù)據(jù)庫是一種基于關(guān)系模型的數(shù)據(jù)庫系統(tǒng),將數(shù)據(jù)組織成表格的形式,表格由行和列組成,每行代表一個記錄,每列代表一個屬性。它使用結(jié)構(gòu)化查詢語言SQL進行數(shù)據(jù)管理和操作。
特點:1.數(shù)據(jù)的組織:數(shù)據(jù)以表格的形式進行組織,每個表格具有固定的列和數(shù)據(jù)類型。
? ? ? ? ? ? 2.數(shù)據(jù)的關(guān)聯(lián):通過定義主鍵和外鍵來建立不同表格之間的關(guān)聯(lián)關(guān)系,實現(xiàn)數(shù)據(jù)的一致性和完整性。
? ? ? ? ? ? 3.數(shù)據(jù)的一致性:關(guān)系型數(shù)據(jù)庫支持事務(wù)處理,可以確保數(shù)據(jù)的一致性和可靠性。
? ? ? ? ? ? 4.數(shù)據(jù)的查詢:使用SQL語言進行數(shù)據(jù)的查詢、插入、更新和刪除,具有較高的靈活性。
? ? ? ? ? ? 5.數(shù)據(jù)的安全性:關(guān)系型數(shù)據(jù)庫提供了權(quán)限控制和數(shù)據(jù)加密等功能,保障數(shù)據(jù)的安全性。
常見的關(guān)系型數(shù)據(jù)庫:MySQL、Oracle、Microsoft SQL Sever、PostagreSQL等。
2.數(shù)據(jù)庫相關(guān)SQL語句
顯示所有的數(shù)據(jù)庫 | show databases; |
查看當(dāng)前使用的數(shù)據(jù)庫 | select database(); |
使用一個數(shù)據(jù)庫 | use 數(shù)據(jù)庫名; |
創(chuàng)建一個數(shù)據(jù)庫 | create database 數(shù)據(jù)庫名; |
刪除一個數(shù)據(jù)庫 | drop database 數(shù)據(jù)庫名; |
3.表相關(guān)SQL語句
查看當(dāng)前所有的表 | show tables; |
查看表信息 | desc 表名; |
創(chuàng)建一個表 | create table 表名(列名 類型 約束信息); |
添加列 | alter table 表名 add 列名 類型 約束信息; |
修改列的信息 | alter table 表名 change 原始列名 新列名 類型 約束信息; |
刪除表 | drop table 表名; |
刪除列 | alter table 表名 drop 列名; |
修改表名 | rename table 原始表名 to 新表名; |
4.數(shù)據(jù)相關(guān)SQL語句
查詢表的數(shù)據(jù) | select * from 表名; |
插入數(shù)據(jù) | 全部插入:insert into 表名 values(); ????????????????insert into 表名 values(),(),()...; 缺省插入:insert into 表名(列1,列2) values(),(),()...; ????????????????insert into 表名 set 列1=值1,列2=值2....; |
修改數(shù)據(jù) | update 表名 set 列=值,... where 條件; |
刪除數(shù)據(jù) | deLete from 表名 where 條件; |
5.Mysql列的約束
主鍵約束 | primary key |
非空 | not null |
自增長 | auto_increment |
唯一約束 | unique |
外鍵 | foreign key |
6.Mysql的數(shù)據(jù)類型
整數(shù)類型 | tinyint | 1個字節(jié) |
smallint | 2個字節(jié) | |
int | 4個字節(jié) | |
bigint | 8個字節(jié) | |
浮點數(shù) | float | 單精度浮點數(shù) |
double | 雙精度浮點數(shù) | |
decimal | 高精度浮點數(shù) | |
字符串 | char | ?固定長度的字符串,最大長度為255個字符。 |
varchar | 可變長度字符串,最大長度為65535個字符。 | |
blob | ?用于存儲二進制數(shù)據(jù)的類型,包括TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。 | |
日期時間 | date | 日期,格式為'YYYY-MM-DD' |
time | 時間,格式為'HH:MM:SS' | |
datetime | 日期時間,格式為'YYYY-MM-DD HH:MM:SS' | |
timestamp | 時間戳,自動記錄插入或更新的時間。 | |
枚舉 | enum |
7.外鍵
外鍵是用于連接表與表之間關(guān)聯(lián)關(guān)系的一種約束
創(chuàng)建 | create table 表名(列...... constraint 外鍵名 foreign key(列名) references 主表(主鍵) on update cascade on delete cascade); |
添加 | alter table 表名 add constraint 外鍵名 foreign key(列名) references 主表(主鍵) on update cascade on delete cascade; |
刪除 | alter table 表名 drop foreign key 外鍵名; |
8.查詢
別名:別名是為了方便多表查詢時區(qū)分不同表的相同列名
? ? ? ? 格式:select 列名 as 別名,列名 as 別名 from 表名;
? ? ? ? 例子:select student.name as 學(xué)生名,teacher.name as 教師名 from student inner join teacher on student.t_id=teacher.id;
查詢指定列:select 列1,列2 from 表名;
條件查詢:select * from 表名 where 條件;
where后的條件:
比較運算符 | =、!=/<> <= < > >= | select name,age from student where id<5; |
多個條件 | and并且,or或者 | select name,age from student where age>20 and id<5; select name,age from student where age>20 or id<5; |
成員 | in其中一個 ? not in不在其中 | in 類似or,滿足在其中,就顯示出來:select name,age from student where id in (1,2,3); select name,age from student where id not in (1,2,3); |
模糊查詢 | like | _ ?一個下劃線代表一個字符: select * from 表名 where 列名 like '黃_'; % ?代表多個字符,查找名字中帶有星的:select * from 表名 where name like '%星%' |
判空 | is null是空 ? ?is not null不是空 | 空字符串不是空 查詢地址為空的內(nèi)容 查詢地址不為空的內(nèi)容 |
嵌套查詢:一個查詢結(jié)果作為另外一個查詢的條件
內(nèi)連接 | 取兩邊都有的 | inner join on 條件 如:select student.name as 學(xué)生名,teacher.name as 教師名 from student inner join teacher on student.t_id=teacher.id; |
左外連接 | 內(nèi)連接結(jié)果+左表內(nèi)容(右側(cè)補Null) 以左表的內(nèi)容為主,左表內(nèi)容全部寫上,右表沒有結(jié)果則補Null | select student.name,teacher.name from student left join teacher on student.id*3=teacher.id; |
右外連接 | 內(nèi)連接結(jié)果+右表內(nèi)容(左側(cè)補Null) 以右邊的表的內(nèi)容為主,右表內(nèi)容全部寫上,左表沒有結(jié)果則補Null | select student.name,teacher.name from student right join teacher on student.id*3=teacher.id; |
全連接 | 左外連接 union 右外連接 | select student.name,teacher.name from student left join teacher on student.id*3=teacher.id union ? ? ? ? select student.name,teacher.name from student right join teacher on student.id*3=teacher.id; |
9.函數(shù)
系統(tǒng)函數(shù)
database() | 查看當(dāng)前數(shù)據(jù)庫 |
user() | 當(dāng)前用戶 |
version() | 當(dāng)前數(shù)據(jù)庫版本 |
current_date | 當(dāng)期日期 |
current_time | 當(dāng)前時間 |
current_timestamp | 當(dāng)前日期時間 |
聚合函數(shù)
max(列名) | 最大值 |
min(列名) | 最小值 |
avg(列名) | 平均值 |
sum(列名) | 求和 |
count(列名) | 統(tǒng)計行數(shù) |
10.常用技術(shù)
排序:order by
? ? ? ? 排序方式:desc降序,asc升序。默認是升序
? ? ? ? 例子:?select * from teacher order by age desc;
分頁:分頁是為了將數(shù)據(jù)量大的表分開方便查看
? ? ? ? limit n:顯示前n行
? ? ? ? limit n,m:從索引n開始顯示m個。第page頁,每頁顯示個數(shù)為size,limit (page-1)*size,size;
分組:將查詢到的結(jié)果進行分組,方便統(tǒng)計結(jié)果
? ? ? ? 如:統(tǒng)計男女?dāng)?shù)量
????????????????select count(*),sex from teacher group by sex order by sex;
去重:distinct,去除重復(fù)的行,如去除重復(fù)的名字
11.用戶
查看當(dāng)前用戶 | select user(); |
創(chuàng)建用戶 | create user '用戶名'@'%' identified ?by '密碼'; |
用戶授權(quán) | grant 權(quán)限 on 數(shù)據(jù)庫名 to '用戶名'@'%'; |
刷新權(quán)限 | flush privileges; |
刪除用戶 | drop user ‘用戶名'@'%'; |
12.視圖
視圖是一個虛擬表,但是操作視圖等同于操作真實表
作用:簡化復(fù)雜的查詢操作
使用:可以直接將教師對應(yīng)的學(xué)生放在一個視圖中,直接查看視圖就可以查看對應(yīng)關(guān)系,不需要使用嵌套查詢,簡化了查詢操作。
13.函數(shù)與存儲過程
函數(shù):接受參數(shù),并且有返回值。格式:select 函數(shù)名(參數(shù))
可以將常用的計算操作封裝成一個函數(shù),如常用的求和、求均值、最大值、最小值、統(tǒng)計行數(shù)等,都封裝成了函數(shù),隨時可以調(diào)用。
存儲過程:是一套SQL操作,沒有返回值。將一套復(fù)雜的查詢語句放入存儲過程,使用時直接調(diào)用,簡化程序代碼。格式:call 過程名(參數(shù))
14.索引
索引是一種優(yōu)化查詢技術(shù)
索引類型:主鍵索引,主鍵自帶的
????????????????唯一索引,unique唯一約束
????????????????普通索引,適用于任何字段
索引方法:BTREE,適用于大數(shù)據(jù)量查詢,適合范圍比較
? ? ? ? ? ? ? ? ? HASH,適用于小數(shù)據(jù)量,適合精確的等值比較
使用:適用于表查詢頻率高,幾乎不修改數(shù)據(jù)的表
15.事務(wù)
事務(wù)是一組SQL操作,這些操作要么全部執(zhí)行成功,要么全部失敗回滾。、
開啟事務(wù):start transaction
提交:commit
作用:保證數(shù)據(jù)的安全性。
事務(wù)的acid特性:
1.原子性:事務(wù)不可再分,要么全部成功,要么全部失敗回滾,不會出現(xiàn)部分操作成功,部分操作失敗的情況。
2.一致性:執(zhí)行前和執(zhí)行后的數(shù)據(jù)保持一致。
3.隔離性:事務(wù)之間互不影響。
4.永久性:事務(wù)一旦提交成功,對數(shù)據(jù)庫的修改是永久的。
16.存儲引擎
存儲引擎是數(shù)據(jù)存儲的實現(xiàn)方式
常用的存儲引擎:
InnoDB:mysql默認的存儲引擎。特點:支持事務(wù);支持外鍵;支持行級別鎖定、阻塞;綜合能力強,適用于大多數(shù)場景。
MyISAM:查詢、排序速度快,但是不支持外鍵。
Memory:讀寫速度最快,但是不能持久化,數(shù)據(jù)不能在本地保存。數(shù)據(jù)庫連接斷開,數(shù)據(jù)就會消失。
CSV:適合使用逗號分隔的文件,適合導(dǎo)入導(dǎo)出。
17.數(shù)據(jù)備份與恢復(fù)
數(shù)據(jù)備份:將數(shù)據(jù)庫信息轉(zhuǎn)儲為SQL文件
恢復(fù):當(dāng)數(shù)據(jù)丟失時,可以將備份好的SQL文件運行,將數(shù)據(jù)庫恢復(fù)到原來的狀態(tài)。
18.Mysql與python基礎(chǔ)交互
導(dǎo)入模塊pymsql:import?pymsql
構(gòu)建連接:pymysql.connect()
創(chuàng)建游標(biāo)實例:cursor()
? ? ? ? 游標(biāo)使用:
Fetchone | 獲取一行 |
fetchall | 獲取所有 |
fetchmany | 獲取多行,size參數(shù)設(shè)置獲取的大小 |
scroll | 游標(biāo)偏移 |
execute | 執(zhí)行一個sql語句 |
executemany | 一次執(zhí)行多個sql語句 |