日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

學習MySQL

 農夫子oice 2009-08-22

學習 MySQL

作者:孔建軍

1 MySQL 介紹

MySQL 是瑞典 MySQL AB 公司開發(fā)的一個完全網絡化的跨平臺關系型數(shù)據(jù)庫系統(tǒng),具有多用戶、多線程、多種客戶工具和API支持、低消耗、底成本、高性能等特點。她具有客戶機/服務 器體系結構的分布式數(shù)據(jù)庫管理系統(tǒng),由一個服務器守護進程 mysqld 和不同客戶程序和庫組成。由于其源碼的開放性及穩(wěn)定性,在 WEB 開發(fā)應用等方面得到了廣泛使用,具有較強的競爭力和市場前景。目前Internet上流行的網站構架方式是 LAMP(Linux+Apache+MySQL+PHP),即操作系統(tǒng)使用GNU/Linux,Web服務器使用Apache,數(shù)據(jù)庫服務器使用 MySQL,服務器端腳本解釋器使用PHP。這四個軟件都遵循 GPL 協(xié)議開放源代碼,用戶可以快速搭建一個真正穩(wěn)定、免費的網站系統(tǒng)。雖然沒有大型專業(yè)數(shù)據(jù)庫(如Orcal)高端功能強大,但其靈活方便等優(yōu)勢也贏得了眾多 用戶的關注。
Sun于今年初以10億美元高價收購MySQL,據(jù)說 Sun 準備關閉MySQL備份方案的源代碼,許多高級功能的代碼也將不再開放,即不會再免費向開源社區(qū)貢獻。
MySQL 特征:

    1.使用C和C++編寫,并使用了多種編譯器進行測試,保證了源代碼的可移植性
    2.支持AIX、FreeBSD、HP-UX、Linux、Mac OS、Novell Netware、OpenBSD、OS/2 Wrap、Solaris、Windows等多種操作系統(tǒng)
    3.為多種編程語言提供了API。這些編程語言包括C、C++、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl等
    4.支持多線程,充分利用CPU資源
    5.優(yōu)化的SQL查詢算法,有效地提高查詢速度
    6.既能夠作為一個單獨的應用程序應用在客戶端服務器網絡環(huán)境中,也能夠作為一個庫而嵌入到其他的軟件中提供多語言支持,常見的編碼如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作數(shù)據(jù)表名和數(shù)據(jù)列名
    7.提供TCP/IP、ODBC和JDBC等多種數(shù)據(jù)庫連接途徑
    8.提供用于管理、檢查、優(yōu)化數(shù)據(jù)庫操作的管理工具
    9.可以處理擁有上千萬條記錄的大型數(shù)據(jù)庫
MySQL 官方網站:http://www./

2 運行效果

kongove@ubuntu:~/Desktop/$ mysql -h localhost -u root -p
Enter password:
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> use test;
Database changed
mysql> select * from student;
+------+--------------+
| id	      | name                     |
+------+--------------+
|    1        | XiyouLinux           |
+------+--------------+
1 rows in set (0.01 sec)
mysql>

3 基本使用

3.1 安裝

  • Redhat 下使用可執(zhí)行壓縮包安裝 MySQL:
  • # rpm -qa|grep mysql
    查看是否已經安裝 mysql
    # wget http://URL-OF-MySQL/mysql.tar.gz
    下載 mysql 軟件包
    # tar xcvf mysql.tar.gz
    解壓軟件包
    # cd mysql/
    # make
    # make install
    # cd scripts
    # mysql_install_db
    完成具體編譯、安裝
  • Fedora 下通過軟件包管理工具 yum 安裝 MySQL:
  • # yum install mysql-server mysql-client mysqlversion
  • Ubuntu 下通過APT軟件包管理工具安裝 MySQL:
  • # apt-get install mysql-server mysql-client mysqlversion

3.2 配置

  • 啟動系統(tǒng)時自動運行 MySQL 服務器
  • 在 /etc/rc.local中添加啟動一行命令: /etc/init.d/mysql start
  • 配置數(shù)據(jù)庫用戶
  • 安裝mysql過程中,會自動提示設置默認用戶 root 的登錄數(shù)據(jù)庫密碼。
    管理員還可以使用GRANT語句添加新用戶并指定其權限,使用REVOKE語句刪除指定用戶權限。

    $ mysql> grant select,insert,update,delete on *.* to "new_user"@"%" Identified by "password";
    添加新用戶new_user,密碼為password,讓該用戶可在任何主機上登錄,并對所有數(shù)據(jù)庫有查詢、插入、修改、刪除的權限。
    $ mysql> delete from user where User="user_name"; $ mysql> flush privileges;
    delete語句刪除指定用戶記錄,flush語句告訴服務器重載授權表。
    $ mysql> grant select on table $tablename to $user;
    把查詢$tablename表的權利授給用戶$user
    $ mysql> grant select on table $tablename to public;
    把對表$tablename查詢的權利給所有用戶
    $ mysql> grant createtab on database $databasename to $user;
    把在數(shù)據(jù)庫$databasename中創(chuàng)建新表的權利授給用戶$user
    $ mysql> revoke update(id) on table $tablename from $user;
    把用戶$user更新$tablename表 id 數(shù)據(jù)項的權利收回

    aCREATE和REVOKE語句影響4個表:
    授權表 內容
    user 能連接服務器的用戶以及他們擁有的任何全局權限
    db 數(shù)據(jù)庫級權限
    tables_priv 表級權限
    columns_priv 列級權限

3.3 測試

# mysqladmin version
查看 MySQL 服務器是否正在運行
# mysqladmin -u root shutdown
測試服務器是否可以關閉
# mysqlshow
顯示所有數(shù)據(jù)庫
# mysqlshow $database
顯示指定數(shù)據(jù)庫中的表信息

3.4 基本操作

  • 服務器命令:
  • #/etc/init.d/mysql start
    啟動數(shù)據(jù)庫服務
    #/etc/init.d/mysql stop
    關閉數(shù)據(jù)庫服務
    #/etc/init.d/mysql restart
    重啟數(shù)據(jù)庫服務
    #/etc/init.d/mysql status
    查看數(shù)據(jù)庫服務狀態(tài)
    #/etc/init.d/mysql reload
    重新加載服務
    # /etc/init.d/mysql force-reload
    強制重新加載服務
  • 客戶端命令選項:
  • mysql [-h $hostname] [-u $username] -p $datebasename
    選項 含義
    -h $hostname 指定數(shù)據(jù)庫服務器,可以為IP地址或者域名
    -p 提示用戶輸入密碼
    -u $username 指定用戶名
    $databasename 指定數(shù)據(jù)庫名
  • 客戶端內部命令:
  • 命令 簡潔命令 含義
    (\?) 等價于'help'
    clear (\c) 清除命令
    connect (\r) 重新連接服務器,選項參數(shù)是數(shù)據(jù)庫名和主機名
    delimiter (\d) 設置定界符
    edit (\e) 采用 $EDITOR 編輯命令
    ego (\G) 向 mysql 數(shù)據(jù)庫服務器發(fā)送命令,并將返回結果垂直輸出
    exit (\q) 退出 mysql, 等價與 quit
    go (\g) 向數(shù)據(jù)庫服務器發(fā)送命令
    help (\h) 顯示此幫助信息
    nopager (\n) 緊用 PAGER,打印到標準輸出
    notee (\t) 不寫入輸出文件
    pager (\P) 設置通過 PAGER 打印結果
    print (\p) 打印當前命令
    prompt (\R) 改變 mysql 提示模式
    quit (\q) 退出 mysql
    rehash (\#) 重新編譯完成 hash
    source (\.) 執(zhí)行 SQL 腳本文件,帶一個文件名作為參數(shù)
    status (\s) 從服務器得到狀態(tài)信息
    system (\!) 執(zhí)行一個 Shell 命令
    tee (\T) 指定輸出文件,添加所有信息到此文件
    use (\u) 指定別的數(shù)據(jù)庫,新數(shù)據(jù)庫名作為參數(shù)
    charset (\C) 轉換成另一個字符編碼,可能需要處理多自己編碼的 binlog
    warnings (\W) 顯示執(zhí)行指令的警告信息
    nowarning (\w) 不顯示執(zhí)行指令的警告信息
  • 常用客戶端命令范例:
  • $mysql -h mysql.kongove.cn -u kong -p
    登錄數(shù)據(jù)庫
    $ mysql> show databases;
    顯示當前服務器上所有數(shù)據(jù)庫
    $ mysql> use $databasename;
    選擇使用數(shù)據(jù)庫
    $ mysql> show tables;
    顯示當前數(shù)據(jù)庫中的所有表
    $ mysql> create database $databasename;
    創(chuàng)建數(shù)據(jù)庫
    $ mysql> create table $tablename(id int, name char(5), age int);
    在當前數(shù)據(jù)庫里創(chuàng)建表
    $ mysql> create view $viewname as select id, name from $tablename;
    在當前數(shù)據(jù)庫里創(chuàng)建視圖
    $ mysql> drop table $tablename;
    刪除當前數(shù)據(jù)庫里指定的表
    $ mysql> drop view $viewname;
    刪除當前數(shù)據(jù)庫里指定的視圖
    $ mysql> select * from $tablename;
    顯示指定表的內容
    $ mysql> select id, name from $tablename;
    顯示指定表中指定數(shù)據(jù)項
    $ mysql> select name from $viewname;
    顯示指定視圖中指定內容
    $ mysql> select * from $tablename where id>20;
    根據(jù)條件篩選查看指定表中id號大于20的表項
    $ mysql> select id from $tablename where age=(select age from $tablename2 where name='孔建軍');
    帶有比較運算符的子查詢
    $ mysql> insert into $tablename(id,name,score) values(1,'kong',100);
    添加指定表項
    $ mysql> update $tablename set score=99 where id=1;
    修改指定表中滿足條件表項的相關值
    $ mysql> delete from $tablename where id=1;
    刪除滿足條件的指定表項

4 數(shù)據(jù)備份與恢復

  • 備份數(shù)據(jù)庫原則:
  • 1. 定期實施備份;
    2. 讓服務器執(zhí)行更新日志;
    3. 使用一種傳統(tǒng)、易理解的備份文件名機制;
    4. 用文件系統(tǒng)備份用戶的備份文件。
  • 備份
  • $ mysqldump -h $hostname -u $username -p $databasename >2008.5.22.sql
    使用 mysqldump 備份整個數(shù)據(jù)庫到文件2008.5.22.sql
    $ cp -r $datadir/$databasename /usr/archive/mysql/
    直接復制數(shù)據(jù)庫進行數(shù)據(jù)備份
    編寫Shell腳本,自動備份數(shù)據(jù)庫內容:
    #!/bin/bash
        #備份指定服務器、用戶名的數(shù)據(jù)庫內容,并以當前時間命名文件。
        mysqldump -u username -h hostname -p databasename > `date +%Y%m%d_%H:%M:%S`.sql
        運行腳本完成備份:
        [crystallight]$ ./mysqldump.sh
        Enter password:
        [crystallight]$ ls
        20081014_22:56:39.sql	mysqldump.sh
  • 還原
  • $ mysql> source 2008.5.22.sql
    使用備份文件還原數(shù)據(jù)庫
    $ mysql -u root -h mysql.kongove.cn -p $databasename <2008.5.22.sql
    使用備份文件還原指定數(shù)據(jù)庫

5 數(shù)據(jù)庫連接

  • PHP連接 MySQL 數(shù)據(jù)庫
  • $db['host'] = "222.24.20.86";
        $db['user'] = "kong";
        $db['pass'] = "passwrod";
        $db['database'] = "kong_database";
        $db['table'] = "kong_table";
        #連接數(shù)據(jù)庫
        ql_connect($db['host'],$db['user'],$db['pass']);
        mysql_select_db($db['database']);
        mysql_query($sql);
        #插入數(shù)據(jù)項
        $sql = "insert into ".$table." (id,user_name,user_info,head_type,hide,message,ip,time,reply,
        reply_time) values(null,'$user_name','$user_info','$head_type','$hide','$message','$ip','$time',null,null);";
        $result = mysql_query($sql);
        #篩選查詢
        $sql = "select * from $table order by id desc limit $start_msg,$max_msg;";
        $result = mysql_query($sql);
        
  • Jsp 連接 MySQL 數(shù)據(jù)庫
  • String url ="jdbc:mysql://localhost/softforum?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1"
        Connection conn= DriverManager.getConnection(url);
        Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
        String sql="select * from test";
        ResultSet rs=stmt.executeQuery(sql);
        
  • C 語言連接 MySQL 數(shù)據(jù)庫
  • MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd,
        const char *db, unsigned int port, const char *unix_socket, unsigned int client_flag)
        
  • Python 連接數(shù)據(jù)庫
  • import MySQLdb as mydb
        db = mydb.connect(host='192.168.0.110',user='jianjun',passwd='lovelinux',db='webdatabase', charset="utf-8")
        cur = db.cursor()
        sql = unicode("select user,id from user_table where sex = '男'","utf-8")
        print sql
        cur.execute(sql)
        cur.close()
        db.close()
        

6 圖形管理工具

phpMyAdmin、mysql-admin、MySQL Administrator、MySQL Query Browser、phpMyBackupPro 等都是不錯的圖形化管理數(shù)據(jù)庫工具,可以方便的進行數(shù)據(jù)庫各項管理、維護操作。
phpMyAdmin 可以通過 web 界面,使用 http 方式來進行連接管理,用戶在瀏覽器即可完成管理任務,不需要特殊軟件環(huán)境。Web 服務器端必須支持php解析功能。在Web服務器端配置好 apache 和 php ,下載 phpadmin,解壓到 apache 能夠訪問的一個目錄中。修改phpadmin/config.inc.php文件,其中主要是對mysql連接方式,連接路徑以及用戶名密碼的設置。然后 運行訪問 index.php 進入管理頁面。
MySQL Administrator、MySQL Query Browser、mysql-admin 是linux系統(tǒng)中幾款數(shù)據(jù)庫管理軟件,其管理功能完備,配置簡單。
phpMyBackupPro 也是由 PHP 寫成的,可以透過 Web 介面創(chuàng)建和管理數(shù)據(jù)庫。它可以創(chuàng)建偽 cronjobs,可以用來自動在某個時間或周期備份MySQL 數(shù)據(jù)庫。

7 總結

8 參考資料

from site : http://www./science/learning-mysql.cn.html

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多