日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Mariadb数据库

發布時間:2023/12/20 数据库 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mariadb数据库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Mariadb基礎

關系模型:

二維關系:表

行:row, entry

列:column, attribution

索引:數據結構,輔助完成數據查找的;

SQL代碼:

存儲過程

存儲函數

觸發器

事件調度器

事務(Transaction):組織多個操作為一個整體,要么全部都執行,要么全部都不執行;

'回滾操作' ,rollback

一個存儲系統是否支持事務,就看其是否滿足ACID測試:

A:原子性;

C:一致性;

I:隔離性;

D:持久性;

數據庫:數據集合:

表:為了滿足范式設計要求,將一個數據集分拆為多個

約束: constranint,向數據表插入的數據要遵循的限制規則

主鍵:primary key,

????????一個或多個字段的集合,填入主鍵中的數據,必須不同于已存在的數據,不能為空,一個表只能有一個主鍵;

外鍵:foreign key,

????????一個表中某字段中能插入的數據,取決于另外一張表的主鍵中的數據

唯一鍵:unique key,

????????一個或多個字段的組合,填入唯一鍵中的數據,必須不同于已存在的數據,可以為空,一個表可以存在多個惟一鍵

檢查性約束:check,取決于表達式的要求

索引:將表中的某一個或某些字段抽取出來,單獨將其組織一個獨特的數據結構中;

常見的索引類型:

????????樹型 :?BTree

????????hash :?k/v

注意:索引有助于請讀求,但不利于寫請求

關系運算:

選擇:挑選出符合條件的行;

投影:挑選出符合需要的列;

連接:將多張表關聯起來;

數據抽象:

物理層: 決定數據的存儲格式,即如何將數據組織成為物理文件

邏輯層: 描述DB存儲什么數據,以及數據間存在什么樣的關系

視圖層: 描述DB中的部分數據;

關系模型分類:

關系模型

實體-關系模型

基于對象的關系模型

半結構化關系模型

MySQL:

C/S架構

????????S:mysqld, mysqld_safe, mysqld_multi

????????C:mysql, mysqladmin, mysqldump, ...

非客戶端工具:工作于服務端主機,用于實現一些管理操作;

數據類型:

字符型:

????????定長字符型:

????????????????CHAR(#)

????????????????BINARY(#)

????????變長字符型:

????????????????VARCHAR(#)

????????????????VARBINARY(#)

內建數據類型:

????????ENUM

????????SET?

數值型:

????????精確數值:

????????????????整型:TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT

????????近似數值:

????????????????浮點型:

????????????????FLOAT

????????????????DOUBLE

日期時間:

????????DATE:日期型

????????TIME:時間型

????????DATETIME:日期時間型

????????YEAR(2):

????????YEAR(4):

????????TIMESTAMP:

MariaDB(mysql)

:MariaDB Foundation - MariaDB.org

MariaDB的特性:

插件式存儲引擎:存儲管理器有多種實現版本,彼此間的功能和特性可能略有區別,用戶可根據需要靈活選擇

存儲引擎也稱為'表類型'

(1)更多的存儲引擎

????????MyISAM :不支持事務

????????MyISAM -->Aria

????????InnoDB -->XtraDB ?:支持事務

(2)實現了諸多擴展和新特性

(3)提供了較多的測試組件

(4)truly only source;

MySQL的發行機制:

Enterprise: 提供了更豐富的功能

Community: 功能還可以,但是是免費的

安裝和使用MariaDB:

安裝方式:

(1)rpm包

(a)由OS的發行商提供

(b)程序官方提供

(2)源碼包

(3)通用二進制格式的程序包

通用二進制格式安裝MariaDB

(1)準備數據目錄

以/mydata/data 目錄為例

(2)安裝配置mariadb

useradd -r mysql tar xvf mariadb-Version.tar.xz -C /usr/local cd /usr/local ln -sv mariadb-Version mysql cd /usr/local/mysql chown -R root:mysql ./* scripts/mysql_install_db --user=mysql --datadir=/mydata/data cp support-files/mysql.server /etc/init.d/mysqld chkconfig -add mysqld

(3)提供配置文件

ini格式的配置文件,各程序均可通過此配置文件獲取配置信息

[program_name]

OS Vendor提供的mariadb rpm包安裝的服務的配置文件查找次序

/etc/mysql/my.cnf -->/etc/my.cnf --> --default-extra-file=/PATH/TO/CONF_FILE --> ~/.my.cnf

通用二進制安裝的服務的配置文件的查找次序

/etc/my.cnf --> /etc/mysql/my.cnf --> --default-extra-file=/PATH/TO/CONF_FILE --> ~/.my.cnf

獲取其讀取次序的方法:

mysqld --verbose --help cp support-files/my-large.cnf /etc/my.cnf

添加三個選項:

datadir=/mydata/data innodb_file_per_table=ON skip_name_resolve=ON

(4)啟動服務

server mysqld start

關系:二維關系(行,列)

表、索引、視圖、……

設計范式:

????????第一范式:字段是原子性的;

????????第二范式:存在可用的主鍵;

????????第三范式:任何字段都不應該依賴于其它表的非主屬性;

約束:primary key, unique key, foreign key, check

MariaDB安裝方式:

通用二進制格式包

源碼編譯安裝:cmake

SQL:

數據庫、表、索引、視圖、存儲過程、存儲函數、觸發器、事件調度器、用戶和權限;

DDL,DML,DCL?

DDL:CREATE,ALTER,DROP

DML:INSERT, DELETE,UPDATE,SELECT

DCL:GRANT,REVOKE

MariaDB程序的組成

C:client

mysql:CLI交互式客戶端程序

mysqldump:備份工具

mysqladmin:管理工具

mysqlbinlog:查看二進制程序的日志

S:server

mysqld

mysqld_safe:建議運行服務端程序

mysqld_multi:多實例

三類套接字地址:

IPV4,3306/tcp

IPV6

Unix Sock:/var/lib/mysql/mysql.sock,/tmp/mysql.sock

C和S之間的通信: localhost,127.0.0.1

命令行交互式客戶端程序:

mysql [OPTIONS] [database]

常用選項:

-uUSERNAME :用戶名,默認為root

-hHOST :遠程主機(即mysql服務器)地址,默認為localhost

-p[PASSWORD] :USERNAME所表示的用戶的密碼,默認為空

注意 :mysql的用戶賬號有兩部分組成:'uUSERNAME'@'HOST';其中HOST用于限制此用戶可通過哪些遠程主機連接當前的mysql服務

HOST的表示方式,支持使用通配符

????????% :匹配任意長度的任意字符

????????_ :匹配任意單個字符

-Ddb_name :連接到服務器端之后,設定期處指明的數據庫為默認數據庫

-e 'SQL COMMAND' :連接至服務器并讓其執行此命令后直接返回

命令:

客戶端命令:本地執行

mysql > help\u db_name :設定哪個庫為默認數據庫 \q :退出 \d CHAR :設定新的語句結束符 \g :語句結束標記 \G :語句結束標記,結果是豎排方式顯示 \s :status ,顯示狀態 \! SHELL_COMMAND?:執行shell命令 \. /path/to/some_sql_script :運行SQL腳本

服務端命令:通過mysql連接發往服務器執行并取回結果

DDL,DML,DCL

(1) 語句結束符;

(2) 建立了與某服務器有效通信連接;

注意:每個語句必須有語句結束符,結束符默認為 ';'

數據類型:

表:行和列

創建表:

????????定義表中的字段

????????定義列時需要選定合適的數據類型;

????????符合范式設計的要求;

????????定義約束關系

定義字段時,關鍵的一步即為確定其數據類型

用于確定:數據存儲格式,能參與運算種類,可表示的有效的數據范圍

字符型:字符集

碼表:在字符和二進制數字之間建立映射關系

show character set; 查看字符集

字段類型

字符型:

????????定長字符型:

????????????????CHAR(#) :不區分字符大小寫

????????????????BINARY(#) :區分字符大小寫

????????變長字符型:

????????????????VARCHAR(#)

????????????????VARBINARY(#)

對象存儲:

????????TEXT:

????????BLOB

內置類型:

????????SET

????????ENUM

數值型:

????????精確數值型:

????????????????INT(TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT) : 1,2,3,4,8 字節大小

????????近似數值型:

????????????????FLOAT

????????????????DOUBLE

日期時間型:

????????日期型 : DATE

????????時間型 : TIME

????????日期時間型 : DATETIME

????????時間戳 : TIMESTAMP

????????年份 : YEAR(2),YEAR(4)

數據類型有修飾符:

UNSIGNED : 無符號

NOT NULL : 非空

DEFAULT value : 默認值

服務器端命令:

DDL : 數據定義語言,主要用于管理數據庫組件,例如表,索引,視圖,用戶,存儲過程

CREATE,ALTER,DROP

DML : 數據操縱語言,主要用于管理表中的數據,實現數據的增刪改查;

INSERT,DELETE,UPDATE,SELECT

獲取命令幫助:

mysql> help KEYWORDHELP CREATE

SQL語句:

DDL:數據定義語言,主要用于管理庫組件,例如數據庫、表、索引、視圖、用戶、存儲過程、存儲函數、觸發器、……

CREATE,ALTER,DROP

DML:數據操縱語言,主要用于管理表中數據,實現數據CRUD操作

DCL:管理授權

數據庫管理

創建:

CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name[DEFAULT] CHARACTER SET [=] charset_name[DEFAULT] COLLATE [=] collation_name

查看支持的所有字符集: show character set;

查看支持的所有排序規則: show collation;

create database nihao if not exists testdb;

修改:

ALTER {DATABASE | SCHEMA} [db_name] [DEFAULT] CHARACTER SET [=] charset_name [DEFAULT] COLLATE [=] collation_name

刪除:

DROP {DATABASE | SCHEMA} [IF EXISTS] db_name

查看:

SHOW DATABASES;

表管理

創建:

CREATE TABLE [IF NOT EXISTS] tbl_name (create_defination) [table_options]

create_defination :

????????字段: col_name data_type

????????鍵:

????????????????PRIMARY KEY (col1,col2,...)

????????????????UNIQUE KEY (col1,col2,...)

????????索引:

????????????????KEY|INDEX [index_name] (col1,col2,...)

????????約束:

????????????????PRIMARY KEY?

????????????????UNIQUE KEY?

????????????????FOREIGN KEY?

????????????????CHECK(expr)

????????索引:

????????????????{INDEX|KEY} ?

????????????????{FULLTEXT|SPATIAL}

table_options:

????????ENGINE=engine_name (存儲引擎)

????????ENGINE=engine_name (存儲引擎)

查看數據庫支持的所有存儲引擎類型:

show engines;

查看某表的存儲引擎類型:

show tables status [like 'tbl_name'] CREATE TABLE students(id INT UNSIGNED NOT NULL,name CHAR(30) NOT NULL,age TINYINT UNSIGNED,gender ENUM('f','m'));CREATE TABLE students(id INT UNSIGNED NOT NULL,name CHAR(30) NOT NULL,age TINYINT UNSIGNED,gender ENUM('f','m'),PRIMARY KEY(id,name));CREATE TABLE students(id INT UNSIGNED NOT NULL PRIMARY KEY,name CHAR(30) NOT NULL,age TINYINT UNSIGNED,gender ENUM('f','m')); DESC students; #查看表信息 show tables; #查看數據包 DROP TABLE students; #刪除表

修改:

ALTER [ONLINE | OFFLINE] [IGNORE] TABLE tbl_name [alter_specification [, alter_specification] ...]

alter_specification:

????????字段:

????????????????添加: ADD [COLUMN] col_name data_type [FIRST | AFTER col_name ]

????????????????????????alter table students add cless VARCHAR(100) NOT NULL; [after name] : 放到name后面

????????????????刪除: DROP [COLUMN] col_name

????????????????????????alter table students drop class;

????????????????修改:(只有不改名字就用modify)

????????????????????????CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRST|AFTER col_name]

????????????????????????MODIFY [COLUMN] col_name column_definition [FIRST | AFTER col_name]

????????????????????????alter table students modify class varchar(100) after age;

????????鍵:

????????????????添加: ADD {PRIMARY|UNIQUE|FOREIGN} KEY (col1,col2,...)

????????????????????????alter table students add unique key (name);

????????????????刪除:?

????????????????????????主鍵: DROP PRIMARY KEY

????????????????????????外鍵: DROP FOREIGN KEY fk_symbol

????????索引:

????????????????添加: ADD {INDEX|KEY} [index_name] [index_type] (index_col_name,...) [index_option] ...

????????alter table students add index class (class);

????????刪除: DROP {INDEX|KEY} index_name

????????????????alter table students drop index name;

表選項

ENGINE[=] engine_name ;表引擎

查看表上的索引信息:

show indexs from students;

刪除:

DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...[RESTRICT | CASCADE]

索引管理:

索引是特殊的數據結構;

索引:要有索引名稱

創建:

CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name [BTREE|HASH] ?ON tbl_name (index_col_name,...)create index name_and_class on students (name,class);

刪除:

DROP INDEX index_name ON tbl_namedrop index name_and_class on students;

查看:

SHOW {INDEX | INDEXES | KEYS} {FROM | IN} tbl_name [{FROM | IN} db_name] [WHERE expr]

標的引用方式:

????????tbl_name

????????db_name.tbl_name

第二種創建方式:

復制表結構

第三種創建方式:

復制表數據

DML: INSERT,DELETE,UPDATE,SELECT

INSERT INTO :

INSERT [INTO] tbl_name [(col1,...)] {values|value} (val1,val2,...),(...)insert into students values (1,'nihao',43,'xixi','m'); insert into students (id,name) values (2,'aa'),(3,'dd');

注意:

字符型:引號

數值型:一定不要引號

SELECT :

(1) SELECT * FROM tbl_name;

(2) SELECT col1,col2,... from tbl_name;

顯示時,字段可以顯示為別名;

col_name as col_alias

(3) SELECT col1,... from tbl_name where clause;

where clause :用于指明挑選條件

col_name 操作符 value;

age > 30;

操作符:

????????>,<,=,!=,<=,>=;

????????BGTWEEN...AND... #表示兩者之間

????????LIKE 'PATTERN'?

通配符:

????????% :任意長度的任意字符

????????_ :任意單個字符

????????RLIKE 'PATTERN'

正則表達式對字符串做模式匹配

IS NULL : 對應的值為空

IS NOT NULL :對應的值為非空

select * from students where id=1;

組合條件:

and

or

not?

(4) SELECT col1,... from tbl_name [where clause] order by col_name,col_name[ASC|DESC];ASC表示升序排序,DESC表示降序排序

DELETE:

DELETE FROM tbl_name [where where_condition] [order by ...] [limit row_count] create table students (id int,name varchar(30),age int);for i in {1..100} ;do a=$[$RANDOM%100];mysql -e "insert into stu.students values ($i,'stu$k',$a);" -proot ;doneselect * from stu.students; select * from stu.students order by age desc; delete from stu.students order by age desc limit 20; #從高到低排序并刪除最多20行

(1) DELETE FROM tbl_name where where_condition

(2) DELETE FROM tbl_name [order by...][limit row_count]

UPDATE:

UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...[WHERE where_condition][ORDER BY ...][LIMIT row_count] update stu.students set age=age-5 order by id desc limit 10; select id,name,age from stu.students order by id desc;

用戶賬號及權限管理

用戶賬號: 'username'@'host'

host : 此用戶訪問當前mysql服務器時,允許其通過哪些主機遠程創建連接

表示方式: ip , 網絡地址,主機名,通配符(%,_)

禁止檢查主機名 : my.cnf

[mysqld]skip_name_resolve = ON

創建用戶賬號:

CREATE USER 'username'@'host' IDENTIFIED BY 'password';

刪除用戶賬號:

DROP USER 'username'@'host' [, 'username'@'host'] ...

授權:

權限級別:管理權限,數據庫,表,字段,存儲例程

GRANT priv_type,... ON [object_type] db_name.tbl_name TO 'username'@'host' [IDENTIFIED BY 'password'];

priv_type : ALL [PRIVILEGES]

db_name.tbl_name :

????????*.* : 所有庫的所有表

????????db_name.* :

????????db_name.routine_name : 指定庫上的存儲過程或存儲函數

[object_type]

????????TABLE

????????FUNCTION

????????PROCEDURE

查看指定用戶所獲得的權限:

show grants for 'username'@'host'; show grants for current_user; #查看自己的權限

回收權限:

revoke priv_type,... on db_name.tbl_name from 'username'@'host'; revoke insert on stu.students from 'stuuser'@'localhost'; flush privileges; #刷新權限

注意: MariaDB服務進程啟動時,會讀取mysql庫的所有授權表至內存中

(1) GRANT 或 REVOKE 命令等執行的權限操作會保存于表中,MariaDB此時一般會自動重讀授權表,權限修改會立即生效

(2) 其他方式實現的權限修改,想要生效,必須手動運行 FLUSH PRIVILEGES;命令即可

加固mysql服務器,在安裝完成后,運行 mysql_secure_installation 命令,根據提示操作.

圖形管理組件:

phpmyadmin

php-mbstring

php-mcrypt

phpmyadmin配置信息

config.inc.php

$cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */openssl rand -base64 15 oieid9Wk6sEREEXxzcm5$cfg['blowfish_secret'] = 'oieid9Wk6sEREEXxzcm5'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

總結

以上是生活随笔為你收集整理的Mariadb数据库的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。