程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL知識總結

MySQL知識總結

編輯:MySQL綜合教程

數據庫發展歷程:
 層次模型-->
 網狀模型(耦合度高)-->
 關系模型(對象-關系模型)
 
  DBMS數據庫管理系統
  RDBMS關系數據庫管理系統
  managing storage 存儲管理
  managing security 安全管理
  managing metadata 元數據管理
  managing trasactions 事務管理
  supporting connectivity 支持擴展
  optimizing performance 性能優化
  providing back-up and recovery mechanisms 備份和恢復
  processing requests for data retreval an modifaction 數據檢索和修改
 
 DataBase發展方向:
  開發DBA
    數據庫設計
    存儲過程,存儲函數,觸發器(SQL)
  管理DBA
    軟件安裝,卸載,升級
    數據導入和導出
    數據的備份和恢復
    用戶管理,權限管理
    安全管理
    架構設計
  
 SQL(Structure query langue)結構化查詢語言
 內建的語句:
   select ,update,drop,update ...
 查詢語句:select ,update , delate
 
常見數據庫管理系統
 大型的:
 oracle
 sybase
 informix
 DB2
 
 小型的:
 sql server
 
 開源的:
 Mysql
 postgreSQL-->EnterpriseDB(除了崩潰後恢復不如mysql,其他的性能是相當優越的)
 
mysql的安裝和升級:
 mysql是基於線程工作
DML 數據操作語言
DDL 數據定義語言
存儲引擎:將邏輯結構轉化成物理結構
Mysql版本:
  GA (general availability)穩定版本
  RC 發行版
  beta 測試版
  alpha 測試版
mysql的軟件包
rpm包:
mysql-client 客戶端*
mysql-debuginfo 調試信息
mysql-devel開發庫*
mysql-embedded 嵌入式mysql
mysql-ndb-management mysql的集群
mysql-server 服務器的端口,提供mysqld*
mysql-shared 共享工具*
mysql-shared-compat 提供老版本庫的
mysql-test 測試組件

Linux上的啟動查找配置的次序
/etc/my.cnf-->/etc/mysql/my.cnf-->$MYSQL_HOME/my.cnf-->/path/to/file when default-extra-file=/path/to/file is specifid-->~/.my.cnf
啟動查找順序,如果有沖突以最後找到的為准,如果沒沖突就綜合考慮
從頭到尾都要查詢
安裝完成以後mysql會自動生成5個帳號,而且密碼為空
3個管理員帳號:root@localhost、[email protected]、root@hostname
2個匿名帳號:''@localhhost、''@hostname
#mysql
>use mysql 使用mysql
>SHOW TABLES; 顯示表
>DESC TABLE_NAE;顯示表格式
>SELECT Host,User,Password FROM user; 顯示表中指定列
>SELECT * FROM user \G; 按照列的方式顯示
>DORP DATABASE db_name; 刪除數據庫
裝完mysql的第一步工作是為root設置密碼,刪除匿名用戶,提高安全性
設置密碼:
方法1:
#mysqladmin -uroot -hlocalhost password'redhat' 設置密碼:-u用戶名,-h主機名
方法2:
#mysql
>UPDATE user SET Password=PASSWORD('redhat') WHERE User='root' and Host='127.0.0.1';
只要原密碼相同,加密後的密碼就一樣
>FLUSH PRIVILEGES;通知mysql把修改的內容加載到內存
方法3:
#mysql
>SET PASSWORD FOR  'root'@'host_name'=PASSWORD('new_password');
>FLUSH PRIVILEGES;
刪除匿名用戶
>DROP USER ''@localhost;
>DROP USER root@'::1';
>DROP USER ''@hostname;
>FLUSH PRIVILEGES;
授權:
>GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY 'redhat';
>FLUSH PRIVILEGES;
這個時候就可以是window客戶端連接進來
mysql AB工具:
mysql
mysqladmin
mysqldump
Options for user:
--user==-u  用戶
--password==-p  密碼
Options for host:
--protocol
  tcp  客戶端和服務端不在同一個主機上
  socket    客戶端和服務端在同一個主機上且是Linux或unix上
  pipe    mysql-server 在window上
  memory    mysql-server 在window上
--host==-h   主機
--port
--socket
-D db_name
--database db_name
mysql 的應用:
eg;mysql -uroot -h192.168.1.101 -D mysql -p
>SELECT DATABASE();顯示當前默認數據庫
>SELECT USER();顯示當前默認用戶
#cd ~
#vim .my.cnf
[client]
user=root
password=redhat
然後在使用
#mysql 就不用輸入密碼了,但是你要注意這個文件的權限

#vim test.sql
 CREATE DATABASE test;
批處理方法:
方法一:
#mysql -uroot -p < test.sql
方法二:
#mysql
>SOURCE /etc/test.sql;

送到服務器端的要在後面加上“;”
而客戶端執行的不需要加
>STATUS
mysql提示符:
-> 命令未執行完
'> 缺少對應的"’”
"> 缺少對應的“””
/*> 缺少對應的注釋符號
 
數據庫對象:
 表,二維關系
 索引
 視圖
 觸發器
 存儲過程
 存儲函數
 事件調度器
 游標
 用戶
物理
 文件
存儲引擎
 插件式的存儲引擎
 
 
mysql 會記錄下命令歷史,放在用戶家目錄下的.mysql_history
開啟命令補全
>\#
>rehash
\c 取消命令
\d 定義結束符號
  eg:\d // 就是以//結束
\g 忽略默認定義的結束符,直接送到服務器端執行
\G 以列的方式顯示
-E or --veri
HELP  COMMAND 查看命令幫助
-e
mysql -e "SHOW DATABASE" 直接在shell中執行mysql語句,在腳本中很常用
mysql  -e "SELECT User,Host,Password FROM mysql.user;" 如檢索某個表

mysqladmin的使用:
mysqladmin [option] command [arg] [command]
#mysqladmin ping 探測服務器是否處於運行狀態
#mysqladmin -h 172.16.100.1 ping
#mysqladmin create sampledb 創建數據庫
#mysqladmin  drop 刪除
#mysqladmin  debug 調試信息(mysql的數據目錄下的)
#mysqladmin extended-status== >SHOW STATUS;
#mysqladmin flush-hosts
#mysqladmin flush-logs
#mysqladmin flush-privileges
#myaqladmin flush-status 
#mysqladmin flush-tables  清空表
#mysqladmin flush-thread
#mysqladmin processlist 查看當前用戶連接進來,並做什麼操作
            reload
            refresh
            shutdown
            start-slave 啟動從服務器
            status 顯示全局狀態信息
            variables
            version 顯示版本號
            status 顯示
#mysqladmin status --sleep 3 --count 2
#top -d 2 -n 2 兩秒刷新一次,顯示兩次退出
>show variables like '%datadir%';查看數據文件的目錄

mysql圖形化工具:
SQLyog
MySQLFront
phpMyAdmin
MySQL Query Browser
MySQL Administrator
MySQL Workbench
 
mysql開發知識:
 >use sampledb;
 >CREATE TABLE stus (Name CHAR(18),GENDER CHAR(1));
NO NULL
 
>SHOW CHARACTER SET; 查看支持字符集
>SHOW COLLATION;查看排序方式
SELECT CURRENT_DATE();
SELECT CURRENT_TIME();
SELECT CURRENT_DATETIME();
CREATE TABLE user (ID UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,Name VARCHAR(100) NO NULL,Gender ENUM('M','F') NO NULL DEFAULT 'M',Age TINYINT UNSIGNED);
INSERT INTO user (Name,Age) values ('luowei',18); 插入
SHOW WARNINGS;查看錯誤警告
SET sql_mode='ansi'設置sql的模型
SHOW VARIABLES LIKE "%sql_mode%";查看模型
SHOW VARIABLES LIKE '%sql_mode%';
常用的模式:
 ansi
 ignore_space
 strict_all_tables
 strict_trans_tables
 traditional
mysql變量類型
 全局變量:對每一個新建立的會話都有效
 會話變量:只對當前會話有效
 SHOW VARIABLES
  SHOW GLOBAL VARIABLES;顯示全局變量
  SHOW SESSION VARIABLES; 顯示會話變量
   LIKE ''
         %任意長度的字符串
         ?匹配一個
   SELECT @@global.sql_mod; 明確知道變量名字
  修改變量值:
     SET sql_mode='TRADITIONAL'
     SET GLOBAL sql_mode='TRADITIONAL'
     設置的會話變量立即生效,但是只對當前會話有效
     設置全局變量不會立即生效,重新登錄對所有的有效
大小寫:
 關鍵字和函數名不區分大小寫,如select
 表名,數據庫名在window上不區分大小寫,在Linux上區分
 存儲過程和存儲函數不區分大小寫
 觸發器區分大小寫
 mysql的別名區分大小寫
database:
 CREATE DATABASE db_name; 創建
 CREATE DATABASE IF NOT EXISTS mydb; 腳本中常用,如果不存在就創建
 CREATE DATABASE CHARACTER SET 'gbk' COLLATE 'gbk_bin' mydb;
 SHOW CREATE DATABASE db_name;顯示使用什麼語句創建的數據庫
 DROP DATABASE db_name;
 DROP DATABASE IF EXISTS db_name; 刪除數據庫
 SHOW WARDINGS;顯示警告
 ALTER DATABASE db_name COLLATE chartset 修改數據庫
 
tables && Index
  key(鍵),index
    候選鍵
    主鍵 primary key
    唯一鍵 unique key
    外鍵  foreign key  表和表之間用的
  范式
 
 SHOW ENGINES;顯示系統默認引擎,default是默認的
 對於mysql,如果使用外鍵,就要有支持事務的引擎
 索引能加快查詢速度,但是對數據庫的修改會降低速度
 
 《warn:未完,待續。。。》
作者“IT夢-齊-分享”

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved