91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL基礎(命令)

發布時間:2020-07-18 04:17:41 來源:網絡 閱讀:1334 作者:Cinyann 欄目:建站服務器

(拓展)MySQL三大范式: 

補充:

 關系數據庫的幾種設計范式介紹

1、第一范式(1NF)

在任何一個關系數據庫中,第一范式(1NF)是對關系模式的基本要求,不滿足第一范式(1NF)的數據庫就不是關系數據庫。

所謂第一范式(1NF)是指數據庫表的每一列都是不可分割的基本數據項,同一列中不能有多個值,即實體中的某個屬性不能有多個值或者不能有重復的屬性。如果出現重復的屬性,就可能需要定義一個新的實體,新的實體由重復的屬性構成,新實體與原實體之間為一對多關系。在第一范式(1NF)中表的每一行只包含一個實例的信息。例如,對于圖3-2 中的員工信息表,不能將員工信息都放在一列中顯示,也不能將其中的兩列或多列在一列中顯示;員工信息表的每一行只表示一個員工的信息,一個員工的信息在表中只出現一次。簡而言之,第一范式就是無重復的列。

2、第二范式(2NF)

第二范式(2NF)是在第一范式(1NF)的基礎上建立起來的,即滿足第二范式(2NF)必須先滿足第一范式(1NF)。第二范式(2NF)要求數據庫表中的每個實例或行必須可以被唯一地區分。為實現區分通常需要為表加上一個列,以存儲各個實例的唯一標識。如圖3-2 員工信息表中加上了員工編號(emp_id)列,因為每個員工的員工編號是唯一的,因此每個員工可以被唯一區分。這個唯一屬性列被稱為主關鍵字或主鍵、主碼。

第二范式(2NF)要求實體的屬性完全依賴于主關鍵字。所謂完全依賴是指不能存在僅依賴主關鍵字一部分的屬性,如果存在,那么這個屬性和主關鍵字的這一部分應該分離出來形成一個新的實體,新實體與原實體之間是一對多的關系。為實現區分通常需要為表加上一個列,以存儲各個實例的唯一標識。簡而言之,第二范式就是非主屬性非部分依賴于主關鍵字。

3、第三范式(3NF)

滿足第三范式(3NF)必須先滿足第二范式(2NF)。簡而言之,第三范式(3NF)要求一個數據庫表中不包含已在其它表中已包含的非主關鍵字信息。例如,存在一個部門信息表,其中每個部門有部門編號(dept_id)、部門名稱、部門簡介等信息。那么在圖3-2的員工信息表中列出部門編號后就不能再將部門名稱、部門簡介等與部門有關的信息再加入員工信息表中。如果不存在部門信息表,則根據第三范式(3NF)也應該構建它,否則就會有大量的數據冗余。簡而言之,第三范式就是屬性不依賴于其它非主屬性。


為什么要有數據庫:文件 管理數據的問題:

1.數據冗余和不一致性

2.大數據訪問困難

3.數據孤立

4.完整性和原子性

5.并發訪問異常

6.安全性問題

由此,有了數據庫。。。


數據庫概述

數據庫:指的是以一定方式存儲在一起、能為多個用戶共享,具有盡可能小的冗余度的特點、是與應用程序彼此獨立的數據集合。


數據庫服務器的基本概念

數據庫

       DBMS 數據庫管理系統(能夠操作和管理數據庫的大型軟件)

       RDBMS 關系式數據庫(=DBMS)

              1.數據以表格的形式出現

              2.每行為各種記錄名稱

              3.每列為記錄名稱所對應的數據域

              4.許多的行和列組成一張表單

              5.若干的表單組成database

 

數據表

       數據(記錄)

       字段(id name ....)

       類型(定義字段中的內容)

       主鍵(檢索時用)


數據庫的三種基本形式

層次模型:

按照層次結構的形式組織數據庫數據的模型

缺點:冗余數據

網狀模型:

按照網狀結構的形式組織數據庫數據的模型

缺點:后期維護困難

關系模型:

按照關系結構的形式組織數據庫數據的模型


sql語句:

結構化查詢語句

sql類型:

DML      數據操作語言:用來操作數據庫中的數據

       INSERT

       DELETE

       SELECT

       UPDATE

DDL       數據描述語言:用來建立數據庫、定義數據關系

       CREATE

       DROP

       ALTER

DCL        數據控制語言:用來控制數據庫組建的權限

       GRANT

       REVOKE

 

關系式數據庫結構

文件邏輯關系:

上層:文件

底層:二進制的方式存儲在硬盤的數據塊中

中間層:文件系統

數據庫邏輯關系:

上層:數據表

底層:文件

中間層:存儲引擎(提供存儲、創建、更新、查詢數據的實現方法)


mysql 支持的存儲引擎

MYISAM

默認引擎、插入和查詢速度較快

不支持事務、行級鎖和外鍵約束等功能

注:

事務:一段sql語句的批處理、為了保證數據原子性

鎖:行級鎖(沖突少、速度慢);表級鎖(沖突多、速度快);頁級鎖(折中方案)

                     約束

                            域約束:數據類型約束

                            外鍵約束:引用完整性約束

                            主鍵約束:某字段能惟一標識此字段所屬的實體,并且不允許為空

                            一張表中只能有一個主鍵

                            惟一性約束:每一行的某字段都不允許出現相同值,可以為空

                            一張表中可以有多個

                            檢查性約束: age: int

INNODB  

              支持事務、行級鎖和外鍵約束等功能

MEMORY

工作在內存中,通過散列保存數據,速度快、不能永久保存數據


數據的存儲和查詢

存儲管理器(實現存儲的功能,通過DDL創建數據表的結構,再通過DML來保存數據)

事務管理器:提供事務功能

文件管理器:保存數據庫數據和文件的對應關系

權限及完整性管理器:設置存儲權限

緩沖管理器:管理緩沖空間

查詢管理器(實現查詢的功能,接收用戶的查詢請求、理解用戶查詢請求,將查詢請求提交給存儲管理器、實現最終存儲)

DDL 、DML解釋器

查詢執行引擎

 

數據庫工作模式

單進程多線程的工作模式

守護線程

應用線程(用戶線程)

補充:apache的工作模式:

一個進程處理一個請求

一個線程處理一個請求

一個線程處理多個請求


mysql優化

1.垂直擴展

2.線程重用

3.緩存機制(nosql<memcache  redis  mongodb>)

缺點:

SMP      對稱多處理器架構


3.  E-R模型

實體關系建模

實體:數據對象,即看得見摸得著

聯系:表示一個或多個實體之間的關聯

屬性:實體的某一特性


數據庫—基本概述


數據庫的版本

1.社區版

2.企業版

3.集群版


數據庫的安裝

  1. 專用軟件包管理器(二進制)

deb 、rpm等

mysql                 MySQL客戶端程序和共享庫

mysql-server           MySQL服務器需要的相關程序

  1. 源代碼軟件包(編譯安裝)

configure、cmake

數據庫常用的配置選項

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql    ----指定殘可安裝路徑(默認的就是/usr/local/mysql)

-DMYSQL_DATADIR=/data/mysql                    ----mysql的數據文件路徑

-DSYSCONFDIR=/etc                                     ----配置文件路徑

-DWITH_INNOBASE_STORAGE_ENGINE=1        ----使用INNOBASE存儲引擎

-DWITH_ARCHIVE_STORAGE_ENGINE=1         ----常應用于日志記錄和聚合分析,不支持索引

-DWITH_BLACKHOLE_STORAGE_ENGINE=1      ----黑洞存儲引擎

-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1  編譯過程中取消一些存儲引擎指令介紹

-DWITHOUT_FEDERATED_STORAGE_ENGINE=1

-DWITHOUT_PARTITION_STORAGE_ENGINE=1

-DWITH_READLINE=1      ----支持批量導入mysql數據

-DWITH_SSL=system      ----mysql支持ssl會話,實現基于ssl的數據復

-DWITH_ZLIB=system      ----壓縮庫

-DWITH_LIBWRAP=0        ----是否可以基于WRAP實現訪問控制

-DMYSQL_TCP_PORT=3306                  ----默認端口

-DMYSQL_UNIX_ADDR=/tmp/mysql.sock      ----默認套接字文件路徑

-DENABLED_LOCAL_INFILE=1                ----是否啟用LOCAL_INFILE功能

-DEXTRA_CHARSETS=all                                  ----是否支持額外的字符集

-DDEFAULT_CHARSET=utf8                  ----默認編碼機制

-DDEFAULT_COLLATION=utf8_general_ci    ----設定默認語言的排序規則

-DWITH_DEBUG=0                          ----DEBUG功能設置

 -DENABLE_PROFILING=1                    ----性能分析功能是否啟用

  1. 服務:mysqld

  2. 端口:3306

  3. 主配置文件:/etc/my.cnf

  4. 腳本:mysql_install_db

  5. mysqld_safe

  6. 數據目錄 :/var/lib/mysql

  7. 套接字文件:/var/lib/mysql/mysql.sock

  8. 當意外關閉數據庫時,再開啟時假如開啟不了,找到這個,刪除再啟動

  9. 進程文件:/var/run/mysqld/mysqld.pid


登錄及退出mysql環境

a)     設置密碼 mysqladmin     -uroot          password ‘123’

b)     登錄              mysql  -u 用戶名 -p

-p 用戶密碼 

-h 登陸位置(主機名或ip地址)

-P 端口號(3306改了就不是了)

-S 套接字文件(/var/lib/mysql/mysql.sock)

c)    退出              exit

d)   創建登錄用戶      create user 用戶名@’%’ identified by ‘密碼’

e)    修改密碼       set password=password(‘新密碼’)

set password for 用戶@登錄位置=password(‘新密碼’)      — — — root用戶為其他用戶找回密碼

當管理員把自己密碼忘記了,怎么找回???

1)關閉數據庫

2)修改主配置文件(/etc/my.cnf)<------ skip-grant-tables

3)啟動數據庫

4)空密碼登錄并修改密碼

update  mysql.user set password=password(‘新密碼’) where user=’root’;

5)刪除skip-grant-tables,重啟數據庫驗證新密碼


SQL語句

關于庫的操作:

Mysql命令功能
show databases查看服務器中當前有哪些數據庫
use 數據庫名選擇所使用的數據庫
create database 數據庫名創建數據庫
drop database 數據庫名刪除指定的數據庫


關于表的操作

MySQL命令功能
create table 表名 (字段1 類型1,...)在當前數據庫中創建數據表
show tables顯示當前數據庫中有哪些數據表
describe 表名顯示當前或指定數據庫中指定數據表的結構(字段)信息
drop table 表名刪除當前或指定數據庫中指定的數據表
alter table 舊表名 rename 新表名修改數據表的名稱
alter table 表名 modify 字段 類型修改字段的類型
alter table 表名 change 舊字段名 新字段名 類型修改字段
alter table 表名 add 字段 類型(first/after)增加字段
alter table 表名 drop 字段刪除字段


MySQL命令功能
insert into 表名(字段1,字段2,……) values(字段1的值, 字段2的值,……)向數據表中插入新的記錄
update 表名 set 字段名 =新數據 where 條件表達式修改、更新數據表中的記錄
select 字段名1,字段名2……from 表名 where 條件表達式從數據表中查找符合條件的記錄
select * from 表名顯示當前數據庫的表中的記錄
delete from 表名 where 條件表達式
 between...and...
在數據表中刪除指定的記錄
指定范圍
delete from 表名將當前數據庫表中記錄清空


注:庫和表的刪除用drop,記錄刪除用delete

 

權限

grant 權限1,權限2,...... on 數據庫.數據表 to 用戶@登錄位置 (identified by ‘密碼’);

revoke 取消的權限1,取消的權限2,...... on 數據庫.數據表 from 用戶@登錄位置;

show grants for 用戶@登錄位置;


備份和還原

冷備份:把數據庫關閉,離線備份(使用cp、tar等命令直接備份數據庫所存放的目錄)

FRM 結構

MYI  索引

MYD  數據

快照備份:(利用邏輯卷)

邏輯備份:

mysqldump

備份:mysqldump -u 用戶名 -p 數據庫名  > /備份路徑/備份文件名(備份單個數據庫)

mysqldump -u 用戶名 -p 數據庫名 表名 > /備份路徑/備份文件名(備份數據表)

--databases 庫1,庫2 (此時還原--->mysql < 備份文件)

--all-databases —備份服務器中的所有數據庫內容

還原:mysql 數據庫 < 備份文件

mysqlhotcopy

備份:mysqlhotcopy --flushlog -u=’用戶’ -p=’密碼’ --regexp=正則 備份目錄

還原:cp -rpf 備份目錄 數據目錄(/var/lib/mysql)


補充的備份機制

1.日志備份

>mysql show global variables like ‘%log%’

列出mysql中和日志相關的變量

錯誤日志

服務器啟動和關閉時的信息

服務器運行過程中的錯誤信息

從服務器啟動從服務器進程時產生的信息

log-error     錯誤日志的路徑

一般日志(不啟用)

記錄用戶對數據庫的查詢操作

general-log=ON  啟動一般查詢日志

log=ON              全局日志開關

log-output         日志的記錄類型

慢查詢日志

記錄需要較長時間的查詢操作

log-slow-queries=保存路徑  啟動慢查詢日志,并設置個路徑

二進制日志

所有對數據庫狀態更改的操作(create、drop、update等)

log-bin=位置 啟動二進制日志

>mysql  show binary logs  查看當前使用的二進制日志

>mysql show binlog events in ‘二進制日志(mysql-bin.000001)’ 查看二進制日志的內容

還原:(mysqlbinlog)

按時間還原:

mysqlbinlog  --start-datetime ‘YY-MM-DD HH:MM:SS’ --stop-datetime ‘YY-MM-DD HH:MM:SS’ 二進制日志 | mysql(-urot -p)   

 按文件大小還原:

--start-position

--stop-position

事務日志:記錄事務相關的日志信息

中繼日志:記錄從服務器的備份信息

2.多機備份

主從配置:實時備份

主主配置:(配置了2遍的主從)實時備份、負載均衡

多從一主:實時備份(更多的備份節點)

多主一從:實時備份、節約成本

 

實驗

1.創建mysql的登錄用戶yzh可以登錄mysql服務器

  1. 創建登錄用戶

MySQL基礎(命令)

在另一臺虛擬機上測試

MySQL基礎(命令)

MySQL基礎(命令)

創建的用戶為自己更改密碼

MySQL基礎(命令)

root用戶為其他用戶找回密碼

MySQL基礎(命令)

root找回自己的密碼并修改

MySQL基礎(命令)

MySQL基礎(命令)

MySQL基礎(命令)

MySQL基礎(命令)

MySQL基礎(命令)

MySQL基礎(命令)

MySQL基礎(命令)

數據庫的增刪改查實驗

創建數據庫

MySQL基礎(命令)

創建數據表

MySQL基礎(命令)

復雜一點的,,,

MySQL基礎(命令)

插入數據

MySQL基礎(命令)

MySQL基礎(命令)

將表a2的數據復制到表a1

MySQL基礎(命令)

刪除數據庫

MySQL基礎(命令)

刪除數據表

MySQL基礎(命令)

刪除表里的數據記錄

MySQL基礎(命令)

刪除年齡在23-25之間的

MySQL基礎(命令)

修改表中的數據

MySQL基礎(命令)

修改數據表的名稱

MySQL基礎(命令)

修改數據表的字段類型

MySQL基礎(命令)

修改數據表的字段

MySQL基礎(命令)

添加字段

MySQL基礎(命令)

MySQL基礎(命令)

刪除字段

MySQL基礎(命令)

給用戶授權

1.給用戶全部權限

MySQL基礎(命令)

取消yzh用戶的刪除庫、表、表中數據的權限

MySQL基礎(命令)

MySQL基礎(命令)

備份和還原數據庫文件

1.把數據庫aa 備份到/root目錄下

MySQL基礎(命令)

2.模擬數據庫aa丟失(刪除數據庫aa)

MySQL基礎(命令)

3.還原

MySQL基礎(命令)

備份多個數據庫(--databases)

MySQL基礎(命令)

還原

MySQL基礎(命令)

備份有規則的數據庫

MySQL基礎(命令)

模擬數據庫刪除

MySQL基礎(命令)

還原

MySQL基礎(命令)

MySQL基礎(命令)

關于二進制日志還原

開啟二進制日志

MySQL基礎(命令)

查看二進制日志文件

MySQL基礎(命令)

按時間還原:

如果數據庫中的bb庫被刪,需要還原

MySQL基礎(命令)

查看二進制日志內容

MySQL基礎(命令)

還原并查看

MySQL基礎(命令)

按文件大小還原:

還原到bb庫被刪除的數據狀態

查看bb庫被刪除前后的文件大小

MySQL基礎(命令)

還原并查看

MySQL基礎(命令)


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

涞源县| 武威市| 阜宁县| 特克斯县| 阳高县| 兴山县| 金乡县| 琼结县| 佛山市| 伊金霍洛旗| 瑞安市| 永昌县| 崇仁县| 旬邑县| 遵化市| 东方市| 体育| 彭泽县| 资阳市| 和林格尔县| 隆昌县| 托克逊县| 全椒县| 鄱阳县| 枣阳市| 临沭县| 修文县| 荔浦县| 舞钢市| 五河县| 霍山县| 交口县| 化隆| 滦南县| 绥棱县| 顺昌县| 成安县| 兴仁县| 岱山县| 陇西县| 登封市|