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