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

歡迎訪問 生活随笔!

生活随笔

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

数据库

一、MySQL数据库基础

發布時間:2024/9/21 数据库 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一、MySQL数据库基础 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.1、數據庫模型

? 數據庫由一批數據構成有序集合,這些數據被存在結構化的數據表中。數據表之間互相關聯,反應客觀事物間的本質聯系。數據庫系統提供對數據的安全控制和完整性控制。數據庫的發展大致劃分為幾個階段:人工管理階段、文件系統階段、數據庫系統階段、高級數據庫階段。其種類大概有3種:層次式數據庫、網絡式數據庫和關系式數據庫。

? 文本數據庫缺陷:數據冗余和不一致,數據訪問困難,數據孤立,完整性問題,原子性問題并發訪問問題,安全性問題。

? 數據庫系統的特性:數據管理獨立性;有效地完成數據存取;數據完整性和安全性;數據集中管理;并發存儲與故障恢復;減少應用程序開發時間。

? 數據庫系統由硬件部分和軟件部分共同構成,硬件主要用于存儲數據庫中的數據,包括計算機、存儲設備等。軟件部分則主要包括DBMS、支持DBMS運行的操作系統,以及支持多種語言進行應用開發的訪問技術等。

?通用關系型數據庫架構:

1.2、數據類型與約束

? 數據類型決定了數據在計算機中的存儲格式,代表不同的信息類型。常用的數據類型有:

字符:CHAR(n) ?VARCHAR(n) ?BINARY(n) ?VARBINARY(n) ?TEXT(n) ?BLOB(n)

數值:

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

? 修飾符:UNSIGNED ?NOT NULL

? 浮點型:FLOAT ?DOUBLE

日期時間:DATE ?TIME ?DATETIME STAMP

布爾

NULL

內置:ENUM, SET


字段修飾符:

NOT NULL ? ?非空

NULL ? ? ? ?空

UNSIGNED ? ?無符號

DEFAULT ? ? 不適用于TEXT類型

PRIMARY KEY 主鍵

UNIQUE KEY ?唯一鍵

AUTO_INCREMENT:自動增長類型的字段必須為主鍵或惟一鍵


域約束:數據類型約束

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

主鍵約束:某字段能惟一標識此字段所屬的實體,并且不允許為空,一張表中只能有一個主鍵。

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

檢查性約束:用戶自定義有效取值范圍。

1.3、MySQL介紹

??MySQL是一個小型關系數據庫管理系統,與其他大型數據庫管理系統(Oracle、DB2)相比,MySQL規模小、功能有限,但是它體積小、速度快、成本低,且它提供的功能對稍微復雜的應用來說已經夠用。

? MySQL的主要運行流程如下所示:

? MySQL數據庫管理系統提供了許多命令行工具,這些工具可以用要管理MySQL服務器、對數據庫進行訪問控制、管理MySQL用戶以及數據庫備份和恢復工具等。

? 服務器端工具程序:

mysqld:SQL后臺程序。該程序運行后,客戶端才能連接服務器來訪問數據庫。

mysqld_safe:服務器啟動腳本。

mysqld_multi:服務器啟動腳本,可以啟動或停止系統上安裝的多個服務器。

myisamchk:用來描述、檢查、優化和維護MyISAM表的實用工具。

mysqlbug:MySQL缺陷報告腳本。它可以用來向MySQL郵件系統發送缺陷報告。

mysql_install_db:該腳本用默認權限創建MySQL授權表。通常只是在系統首次安裝MySQL時執行一次。? ? ? ? ? ? ? ??

? 客戶端工具程序:

myisampack:壓縮MyISAM表以產生更小的只讀表的工具

mysql:交互式輸入SQL語句或從文件以批處理模式執行它們的命令行工具

mysqlaccess:檢查訪問主機名、用戶名和數據庫組合的權限的腳本

mysqladmin:執行管理操作的客戶端程序,如創建或刪除數據庫,重載授權表,重新打開日志文件等,還可以用來檢查版本、進程、以及服務器的狀態信息

mysqlbinlog:從二進制日志讀取語句的工具,二進制日志文件中包含執行過的語句,可以用來幫助系統從崩潰中恢復

mysqlcheck:檢查、修復、分析以及優化表? ??

mysqldump:將mysql數據庫轉儲到一個文件 ? ? ? ? ? ? ? ? ??

mysqlhotcopy:當服務器運行時,快速備份MyISAM表的工具

mysqlimport:使用LOAD DATA INFILE將文本文件導入相關表的庫戶程序?

mysqlshow:顯示數據庫、表、列以及索引相關信息的客戶程序

perror:顯示系統或MySQL錯誤代碼含義的工具


mysqladmin [options] command [arg] [command [arg]] ...

[options]:所有通行選項都可使用

command:

? create DB_NAME ?創建數據庫drop DB_NAME刪除數據庫

? debug: 打開調試日志并記錄于error log中;

? status:顯示簡要狀態信息??(--sleep #: 間隔時長--count #: 顯示的批次)

? extended-status: 輸出mysqld的各狀態變量及其值,相當于執行mysql> SHOW GLOBAL STATUS

? variables: 輸出mysqld的各服務器變量

? flush-hosts: 清空主機相關的緩存:DNS解析緩存,此前因為連接錯誤次數過多而被拒絕訪問mysqld的主機列表

? flush-logs: 日志滾動,二進制日志和中繼日志

? refresh: 相當于同時使用flush-logs和flush-hosts

? flush-privileges、reload:刷新授權表

? flush-status: 重置狀態變量的值

? flush-tables: 關閉當前打開的表文件句柄

? flush-threads:清空線程緩存

? password: 修改當前用戶的密碼;

? ping: 測試服務器是否在線

? processlist:顯示mysql線程列表

? shutdown: 關閉mysqld進程;

? start-slave/stop-slave: 啟動/關閉從服務器線程

? kill: 殺死指定的線程,可以一次殺死多個,以逗號分隔,不能有多余空格

? ? ? ??? ? ? ? ? ? ? ??? ? ? ? ? ? ? ?? ? ? ? ? ? ? ??

1.4、源碼安裝MySQL5.5

安裝cmake軟件與依賴包:

[root@mylinux?home]#?yum?install?-y?cmake?ncurses-devel

創建用戶和組

[root@mylinux?home]#?groupadd?mysql [root@mylinux?home]#?useradd?mysql?-s?/sbin/nologin?-M?-g?mysql

解壓編譯MySQL

[root@mylinux?home]#wget? [root@mylinux?home]#tar?xf?mysql-5.5.56.tar.gz [root@mylinux?home]#cd?mysql-5.5.56 [root@mylinux?home]#cmake?.?-DCMAKE_INSTALL_PREFIX=/application/mysql-5.5.56?\ -DMYSQL_DATADIR=/application/mysql-5.5.56/data?\ -DMYSQL_UNIX_ADDR=/application/mysql-5.5.56/tmp/mysql.sock?\ -DDEFAULT_CHARSET=utf8?\ -DDEFAULT_COLLATION=utf8_general_ci?\ -DEXTRA_CHARSETS=gbk,gb2312,utf8,ascii?\ -DENABLED_LOCAL_INFILE=ON?\ -DWITH_INNOBASE_STORAGE_ENGINE=1?\ -DWITH_FEDERATED_STORAGE_ENGINE=1?\ -DWITH_BLACKHOLE_STORAGE_ENGINE=1?\ -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1?\ -DWITHOUT_PARTITION_STORAGE_ENGINE=1?\ -DWITH_FAST_MUTEXES=1?\ -DWITH_ZLIB=bundled?\ -DENABLED_LOCAL_INFILE=1?\ -DWITH_READLINE=1?\ -DWITH_EMBEDDED_SERVER=1?\ -DWITH_DEBUG=0 [root@mylinux?home]#make? [root@mylinux?home]#make?install [root@mylinux?application]#?cd?/application/ [root@mylinux?application]#?ln?-s?/application/mysql-5.5.56/?/application/mysql [root@mylinux?application]#?mkdir?/application/mysql/data?-p [root@mylinux?application]#?cd?mysql [root@mylinux?mysql]#chown??-R?root:mysql??/application/mysql [root@mylinux?mysql]#mdkir?-p?/application/mysql-5.5.56/tmp??? [root@mylinux?mysql]#chmod?-R?777?/application/mysql-5.5.56/tmp

選擇配置文件與環境變量

[root@mylinux?mysql]#cp?support-files/my-large.cnf??/etc/my.cnf????????????? [root@mylinux?mysql]#vim?/etc/profile.d/mysql.shexport?PATH=/application/mysql/bin:$PATH

初始化數據庫

[root@mylinux?mysql]#?./scripts/mysql_install_db??--user=mysql?--data=/application/mysql/data/ Installing?MySQL?system?tables... 170711?22:09:40?[Warning]?'THREAD_CONCURRENCY'?is?deprecated?and?will?be?removed?in?a?future?release. 170711?22:09:40?[Note]?Ignoring?--secure-file-priv?value?as?server?is?running?with?--bootstrap. 170711?22:09:40?[Note]?./bin/mysqld?(mysqld?5.5.56-log)?starting?as?process?28738?... OK Filling?help?tables... 170711?22:09:41?[Warning]?'THREAD_CONCURRENCY'?is?deprecated?and?will?be?removed?in?a?future?release. 170711?22:09:41?[Note]?Ignoring?--secure-file-priv?value?as?server?is?running?with?--bootstrap. 170711?22:09:41?[Note]?./bin/mysqld?(mysqld?5.5.56-log)?starting?as?process?28745?... OKTo?start?mysqld?at?boot?time?you?have?to?copy support-files/mysql.server?to?the?right?place?for?your?systemPLEASE?REMEMBER?TO?SET?A?PASSWORD?FOR?THE?MySQL?root?USER?! To?do?so,?start?the?server,?then?issue?the?following?commands:./bin/mysqladmin?-u?root?password?'new-password' ./bin/mysqladmin?-u?root?-h?mylinux?password?'new-password'Alternatively?you?can?run: ./bin/mysql_secure_installationwhich?will?also?give?you?the?option?of?removing?the?test databases?and?anonymous?user?created?by?default.??This?is strongly?recommended?for?production?servers.See?the?manual?for?more?instructions.You?can?start?the?MySQL?daemon?with: cd?.?;?./bin/mysqld_safe?&You?can?test?the?MySQL?daemon?with?mysql-test-run.pl cd?./mysql-test?;?perl?mysql-test-run.plPlease?report?any?problems?at?http://bugs.mysql.com/

添加啟動腳本與設置開機啟動

[root@mylinux?mysql]#?cp?support-files/mysql.server?/etc/init.d/mysqld [root@mylinux?mysql]#?chmod?+x?/etc/init.d/mysqld? [root@mylinux?mysql]#?chkconfig?--add?mysqld [root@mylinux?mysql]#?chkconfig?--level?2345?mysqld?on [root@mylinux?mysql]#?service?mysqld?start? Starting?MySQL..?SUCCESS!

mysql的配置文件:

?/etc/my.cnf或/etc/mysql/my.cnf-->$MYSQL_BASE/my.cnf -->--defaults-extra-file=my.cnf

-->~/ .my.cnf

使用配置文件的方式

? 1、它依次查找每個需要查找的文件,結果是所有文件并集;

? 2、如果某參數在多個文件中出現多次,后讀取的最終生效;

1.5、MySQL變量與作用域


服務器變量:@@變量名

? 顯示:SELECT @@變量名

? 設定:SET GLOBAL|SESSION 變量名='value'

設定服務器變量的值:(僅用于支持動態的變量)

? 支持修改的服務器變量:

? ? 動態變量:可以MySQL運行時修改,可即時修改

? ? 靜態變量:于配置文件中修改其值,并重啟后方能生效;

? 動態調整參數的生效方式:

? ? 全局變量:服務器級別,修改之后僅對新建立的會話有效;

? ? 會話變量:會話級別,僅對當前會話有效;會話建立時,從全局繼承各變量;

查看服務器變量:

mysql>?SHOW?[{GLOBAL|SESSION}]?VARIABLES?[LIKE?'']; mysql>?SELECT?@@{GLOBAL|SESSION}.VARILABLE_NAME; mysql>?SELECT?*?FROM?INFORMATION_SCHEMA.GLOBAL_VARIABLES?WHERE?VARIABLE_NAME='NAME'; mysql>?SELECT?*?FROM?INFORMATION_SCHEMA.SESSION_VARIABLES?WHERE?VARIABLE_NAME='NAME';

修改變量:默認僅管理員有權限修改全局變量

mysql>?SET?{GLOBAL|SESSION}?VARIABLE_NAME='VALUE';

注意:無論是全局還是會話級別的動態變量修改,在重啟mysqld后都會失效;想永久有效,可定義在配置文件中的相應段中[mysqld]。

1.6、MySQL中文數據亂碼解決辦法

1)、向表中插入數據之前先設置客戶端的字符集與表保持一致

??SELECT?CREATE?TABLE?tb_name?\G???查看表的字符集set?names?字符集;

2)、在SQL文件中指定字符集然后登陸MYSQL導入數據

??source?tb_namq.sql;

3)、在SQL文件中指定字符集,通過mysql命令導入數據

??mysql??-uroot??-p’password’??tb_name<tb_name.sql

4)、指定mysql命令設置字符集

?mysql??-uroot?-p’password’?--default-character-set=字符集?tb_name<tb_name.sql

5)、配置文件my.cnf中設置客戶端與服務器端字符集

6)、進入MySQL,可以查看各配置字符集是否一致

SHOW?VARIABLES?LIKE?‘character_set%’;



本文轉自 夢想成大牛 51CTO博客,原文鏈接:http://blog.51cto.com/yinsuifeng/1946762,如需轉載請自行聯系原作者

總結

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

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