• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • MySQL[轉]

    上一篇 / 下一篇  2009-03-14 10:36:53

    MySQL簡介
    作者:Rafi Ton



    什么是MySQL?

    MySQL是一個多用戶、多線程的SQL數據庫,是一個客戶機/服務器結構的應用,它由一個服務器守護程序mysqld和很多不同的客戶程序和庫組成。

    SQL (Structured Query Language結構化查詢語言)是目前使用最廣的并且是標準的數據庫語言。SQL語言使得存取或更新信息變得十分容易,你可以直接使用SQL從網站上查詢信息。MySQL的快速和靈活性足以滿足一個網站的信息管理工作。數據庫與用戶端之間的接口程序可以使用CGI進行通信。新網xinnet使用的是PHP,使用PHP和MySQL這兩樣東西加在一起,對于開發數據驅動的網站這項工作而言是最佳組合。PHP是一種用于服務器端執行程序解釋的腳本語言。如果你接觸過ASP的話,那么您對于在HTML頁面中嵌入代碼應該是比較熟悉了。PHP代碼在服務器一端被解釋、執行并轉變成普通的HTML頁面內容,送給瀏覽器一端。這種模式使得我們可以用它來完成相當復雜的功能。

    為什么用MySQL?

    現在每一個人的生活幾乎都離不開數據庫,如果沒有數據庫,很多事情都會變得非常棘手,也許根本無法做得到。銀行、大學和圖書館就是幾個嚴重依賴數據庫系統的地方。在互聯網上,使用搜索引擎、在線購物甚至是訪問網站地址(http://www...)都離不開數據庫。一個數據庫通常都安裝在稱為數據庫服務器的計算機上。目前市場上運行最快的 SQL (Structured Query Language結構化查詢語言) 數據庫之一就是MySQL Server,由瑞典的T.c.X. DataKonsultAB公司開發。MySQL可以從http://www.mysql.com上下載,它提供了其它數據庫少有的編程工具,而且MySQL對于商業和個人用戶是免費的。如果想用MySQL開發應用軟件,必須支付一定的產品使用許可費用,具體情況可以訪問MySQL's licensing section。

    MySQL的功能特點如下:
    可以同時處理幾乎不限數量的用戶;
    處理多達50,000,000以上的記錄;
    命令執行速度快,也許是現今最快的;
    簡單有效的用戶特權系統。

    誰在用MySQL?

    MySQL在企業中使用非常廣泛,其中知名的公司有:

    如果這些還不夠,你可以在MySQL用戶名單上看到更多。

    這篇文章主要是向讀者對MySQL服務器的基本操作進行簡單的介紹,其中包括怎樣建立連接,設置服務器進行簡單的命令操作。這里介紹的的命令是一些最重要的,因為它們是構成一些高級命令的基礎。

    MySQL通常對用戶來說是一種額外服務,所以在使用之前,請向新網xinnet申請開設MySQL帳戶。

    MySQL高級命令

    更改表內容

    MySQL的另一個重要功能就是修改表中已經存在的數據。修改表數據要使用ALTER命令,該命令可以增加、修改、刪除列,同時也可以對表進行重命名。

    例如: 將表名稱由test改為mytest,


    mysql> ALTER table test RENAME mytest;

    例如: 在表mytest中添加列日期型表列birthday,


    mysql> ALTER table mytest ADD birthday DATE;

    例如: 將表mytest中的name列改為newname,類型是VARCHAR (25),

    mysql> ALTER table mytest CHANGE
    mysql>
    name newname VARCHAR (25);

    例如: 刪除表mytest中名為newname的列,


    mysql> ALTER table mytest DROP newname;

    順序執行上面的四個命令之后的結果是生成下面的表。


    mysql> TABLE mytest (
    >
    email VARCHAR (25),
    >
    phone_number INT,
    >
    ID INT AUTO_INCREMENT,
    >
    birthday DATE );

    在這部教程里,我們只對MySQL的使用進行了簡單的介紹。但這些功能都是我們進行編程所必須熟悉的基本操作。最重要的還是多多實踐,參考相關技術文檔,多參加網上相關技術的討論。

    MySQL中文參考手冊

    Order By 按序排列


    mysql> SELECT * FROM test WHERE
    mysql>
    (name = "Bugs Bunny") ORDER BY
    mysql>
    phone_number;

    結果:
    所有包含名字 "Bugs Bunny" 的記錄會顯示出來,并以電話號碼為排序方式。

    查詢功能

    MySQL為用戶提供了粗略搜索和詳細搜索的選擇。


    mysql> SELECT * FROM test WHERE
    mysql>
    (name LIKE "%gs Bunny");

    結果:

    顯示出來的是所有包含字符"gs Bunny"的記錄,下面的字段都符合該條件:"Bugs Bunny", "ags Bunny", "gs Bunny", and "234rtgs Bunny"。請注意這里使用的是"LIKE"而不是等號(=),表示搜索的是和條件相似的記錄,而不必是完全一樣。百分號 '%'可以放在字符串當中的任何地方,服務器搜索字符串的方式則取決于'%'放在何處。


    mysql> SELECT * FROM test WHERE
    mysql>
    (name LIKE "Bugs Bunny%");

    結果:

    顯示出來的是所有包含字符"gs Bunny"的記錄,下面的字段都符合該條件:"Bugs Bunnys", "Bugs Bunnyyyy453", "Bugs Bunnytrtrtrtrtr", 但是 "gs Bunny"則不符合條件。

    我們也可以使用等號條件式來搜索:


    mysql> SELECT name FROM test WHERE
    mysql>
    (name = "Bugs Bunny");

    結果:

    name
    Bugs Bunny

    邏輯運算

    MySQL支持所有的基本邏輯運算。

    AND (&&) 與


    mysql> SELECT * FROM test WHERE
    mysql>
    (name = "Bugs Bunny") AND
    mysql>
    (phone_number = 5554321);

    結果:
    所有同時包含名字 "Bugs Bunny"電話號碼'5554321'的記錄會顯示出來。

    OR ( || ) 或


    mysql> SELECT * FROM test WHERE
    mysql>
    (name = "Bugs Bunny") OR
    mysql>
    (phone_number = 5554321);

    結果:
    所有包含名字 "Bugs Bunny" 電話號碼'5554321'的記錄會顯示出來。

    NOT ( ! ) 非


    mysql> SELECT * FROM test WHERE
    mysql>
    (name != "Bugs Bunny");

    結果:
    所有不包含名字 "Bugs Bunny" 的記錄會顯示出來。

    對數據庫進行操作


    選取內容

    如果不能從一個數據庫搜索和提取信息,那么這個數據庫就沒有什么用處。 在MySql里,這一功能是通過SELECT命令來實現。


    mysql> SELECT * FROM test
    mysql>
    WHERE (name = "Bugs Bunny");

    結果:

    name email phone_number ID   
    Bugs Bunny carrots@devshed.com 5554321 1

    假設我們已經插入了多個不同的記錄,所有記錄都有相同的姓名,但有不同的郵件地址和電話號碼。那么表test的內容顯示如下:

    name email phone_number ID   
    Bugs Bunny carrots@devshed.com 5554321 1
    Bugs Bunny peppers@devshed.com 5554331 2
    Bugs Bunny lettuce@devshed.com 5554341 3
    Bugs Bunny celery@devshed.com 5554351 4
     

    我們可以對數據庫進行四種方式的操作:添加、刪除、修改和查詢(搜索)。請大家注意的是,SQL語言和其它編程語言一樣,對命令語句的語法格式很在意,比如一個括號、逗號或分號的錯誤都會導致命令無法執行。所以一定要熟悉語法格式。

    插入記錄

    這里我們繼續使用前面創建過的數據庫作為例子:


    mysql> CREATE TABLE test (
    >
    name VARCHAR (15),
    >
    email VARCHAR (25),
    >
    phone_number INT,
    >
    ID INT NOT NULL AUTO_INCREMENT,
    >
    PRIMARY KEY (ID));

    使用INSERT命令插入數據,將數據分別插入姓名、郵件地址、電話和ID號內。


    mysql> INSERT INTO test VALUES
    mysql>
    ('Bugs Bunny', 'carrots@devshed.com',
    mysql>
    5554321, NULL);

    結果:


    Query OK, 1 row affected (0.02 sec)

    mysql>

    • 數據類型VARCHAR的內容必須要用單引號,所有的字符串類型數據(char, varchar, text, blob)都必須使用單引號,否則會出錯誤信息。
    • 電話號碼的內容不用單引號。整數INT類型的數據都不用單引號。
    • NULL空值。為什么要在ID中插入空值? 實際上該數據類型使用了AUTO_INCREMENT選項,在插入空值時數據庫會自動將ID的值加1。比如最后一個記錄的ID值是2,那么再插入一個記錄時,新記錄的ID值就是3。如果將空值插入TIMESTAMP類型的記錄時,那么新記錄的TIMESTAMP值就是當前的時間。

    注意: 每次插入新記錄時必須保證新記錄的值的個數與數據類型的數目一致。上面的命令中如果只有一個值,插入命令就會出錯。

    例如:  


    mysql> insert into test values('doggy');
    ERROR 1058: Column count doesn't match value count
    mysql>

    Records 記錄

    一組數據類型就構成了記錄。一個記錄可以只有一個數據類型,也可以根據需要設置很多個。一個或多個記錄構成了一個表。

    Tables 表

    在我們可以對數據庫進行操作之前,必須建立一個可以存放數據的表?梢酝ㄟ^如下方法創建:

    mysql> CREATE TABLE test (
    > name VARCHAR (15),
    > email VARCHAR (25),
    > phone_number INT,
    > ID INT NOT NULL AUTO_INCREMENT,
    > PRIMARY KEY (ID));

    輸出結果:

    Query OK, 0 rows affected (0.10 sec)
    mysql>

    這樣你的第一個表就建成了。

    所有的數據類型都可以使用下面的選項:

    • 主鍵值Primary Key。主鍵值是用來將記錄區分開來,因為沒有兩個記錄能使用同一個主鍵值。在必須要保持記錄的唯一性時,使用主鍵值是非常有用的。
    • Auto_Increment自動增量。使用了這個選項的列在每增加一個記錄時,都會自動將記錄在該列的值加1。
    • NOT NULL非空變量。表示該列不能被分配為空值。

    例:
    soc_sec_number INT PRIMARY KEY;
    這樣soc_sec_number字段就不能有重復的值。

    ID_NUMBER INT AUTO_INCREMENT;
    從1開始,自動按順序將后面的值在前面的基礎上增加1。

    與表相關的命令

    我們可以使用一些與表有關的命令:

    顯示表內容

    如果想顯示數據庫當中存在的所有表,可以使用命令show tables,

    mysql> show tables;

    顯示列 

    mysql> show columns from test;

    結果:
    顯示出與表相關的列及數據。

    現在你已經對創建表有了一個基本的認識。表是由數據類型構成的,所有的數據類型形成了記錄。
    FLOAT [(M,D)] 浮點類型

    FLOAT代表浮點類型,用來表示更精確的數字類型。
    rainfall FLOAT (4,2);
    這個變量可以用來表示一年當中的平均降水量,并精確到小數。FLOAT (4,2)表示數值一共可以有4位數字,小數點后有2位數字。請看下面哪些數值可以用上面的變量類型表示:

    42.35是合法的
    324.45是不合法的,將被修改為324.5
    2.2 是合法的數值
    34.542 不合法,將被修改為 34.54
    注意:由于FLOAT會將數值四舍五入,所以如果不想讓數值隨意被更改,建議使用DECIMAL。

    DATE 日期類型

    用來存放日期信息,缺省的格式是'YYYY-MM-DD',日期范圍可以從'0000-00-00' 到 '9999-12-31'。聲明日期型變量the_date

    the_date DATE;

    TEXT / BLOB 文本和大對象

    如果字符串的長度超過了255,或者要將一篇文章保存到數據庫中,CHAR和VARCHAR就無法使用了,這里就要用到TEXT和BLOB類型,該類型可以保存的字符串長度在255 - 65535字節內。BLOB是一個能保存二進制數據的的大對象。BLOB和TEXT數據類型是一樣的,唯一的區別就是TEXT不區分大小寫,而BLOB區分大小寫。

    SET 固定類型

    一個SET是可以有零或多個值的一個字符串對象,其每一個必須從表創建造被指定了的允許值的一張列表中被選擇。由多個集合成員組成的SET列通過由由逗號分隔(“,”)的成員被指定。SET類型最多可以64個值。
    transport SET ("truck", "wagon") NOT NULL;

    經過上面的聲明之后,transport可以有下面幾個值:

    ""
    "truck"
    "wagon"
    "truck,wagon"

    ENUM 枚舉類型

    ENUM是與SET屬性相同的數據類型,但從中取值時只能取一個值。
    transport ENUM ("truck", "wagon") NOT NULL;

    經過上面的聲明之后,transport可以有下面幾個值:

    ""
    "truck"
    "wagon"

    MySQL基礎



    數據類型和表 

    數據庫其實不過是由不同層次的數據結構構成的。MySQL中可以存放塊(或記錄)信息的結構就是表(table)。而這些記錄則由更小的信息格式組成,即數據類型。一個或多個的數據類型組成了記錄。由記錄組成的表構成了數據庫的一部分。數據庫的層次可以表示如下:

    Database < Table < Record < Datatype

    數據類型有不同的形式和大小,這樣程序員就可以根據實際應用的需要建立表。選擇合適的數據類型對于數據庫的運行性能影響致關重要,所以詳細了解這些概念是十分重要的。

    MySQL Datatypes 數據類型

    MySQL支持各種數據類型(即使是編程新手也都基本熟悉)。常用的類型包括:

    CHAR (M) 固定長度字符
    用來表示固定長度的字符串。字符串的長度范圍是1-255。例如:

    car_model CHAR(10);

    VARCHAR (M) 可變長度字符

    VARCHAR是一個具有靈活性的字符數據類型。字符串的長度范圍是1-255。 選用VARCHAR通常是比較明智的決定。盡管處理CHAR類型的數據比VARCHAR類型的數據要快,有時會快50%。(CHAR類型存儲的數據的長度是聲明變量時的固定長度,而不管數據的實際長度。VARCHAR存儲的是按數據的實際長度,從而減小了數據文件的大小。)

    car_model VARCHAR(10);

    INT (M) [Unsigned] 整數類型

    INT是整數類型,存儲整數的值范圍是-2147483648到2147483647。在聲明類型時可選用"unsigned",這樣值的范圍就是0到4294967295。
    light_years INT;
    合法整數: '-24567',    非法整數: '3000000000'。
    light_years INT unsigned;
    合法整數: '3000000000',    非法整數: '-24567'。

    用戶會看見如下結果:

    Welcome to the MySQL monitor. Commands end with ; or \g.
    Your MySQL connection id is 49 to server version: 3.21.23-beta-log
    Type 'help' for help.

    mysql>

    登錄到數據庫之后,我們就可以執行各種MySQL的命令,但在對數據庫操作之前必須要先調用數據庫,也就是與數據庫建立連接:


    mysql> use devshed;

    結果:


    Database changed
    Mysql>

    現在你已經連接到數據庫。注意命令后面要加上分號(;),幾乎所有的MySQL命令都要加分號。有關管理數據庫的命令可以通過鍵入help, \h 或?列出來。


    mysql> help

    help (\h) Display this
    text ? (\h) Synonym for `help'
    clear (\c) Clear command
    connect (\r) Reconnect to the server. Optional arguments are db and host
    edit (\e) Edit command with $EDITOR
    exit (\) Exit mysql. Same as quit
    go (\g) Send command to mysql server
    print (\p) print current command
    quit (\q) Quit mysql
    rehash (\#) Rebuild completion hash
    status (\s) Get status information from the server
    use (\u) Use another database. Takes database name as argument

    Connection id: 49 (Can be used with mysqladmin kill)

    mysql>


    也許這些功能不會都能用上,但應該知道每一個命令都會做什么。象命令status, use, print, connect, clear, 和quit在最開始學習使用時都會十分有用,F在,你應該對連接數據庫、選擇數據庫和運行基本命令都應該有一定的了解。下一步將講解有關對數據庫進行操作的基本概念和方法。

    MySQL的環境



    MySQL通常用Telnet進行登錄(一個非常好的Telnet軟件名為Easyterm,可以從 http://www.arachnoid.com下載)。我們向用戶推薦使用WinMysql 管理工具,下載網址是http://www.tcx.se/Downloads/Win32/myAdmin1.0.1.0.zip 通過Telnet與web服務器連接后,第二個命令提供MySQL服務器的登錄。登錄的步驟如下:

    1. 連接到服務器。


    login: devshed
    Password:
    ********

    Last login: Wed Aug 12 09:49:14 from 195.103.124.222
    Copyright 1992, 1993, 1994, 1995, 1996 Berkeley Software Design, Inc.
    Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
    The Regents of the University of California. All rights reserved.

    BSDI BSD/OS 2.1 Kernel #12: Mon Feb 23 13:46:27 EST 1998

    You have new mail.
    www24:mywww/devshed#


    2. 登錄到MySQL帳戶。


    www24:mywww/devshed# mysql -u devshed -p

    Syntax: mysql -h hostname -u username -p[password]
    Or
    mysql -h hostname -u username --password=password

    用戶會被提示輸入密碼。-p表示輸入密碼。


    Enter password: *******


    TAG: MySQL Mysql mysql mySQL MYSQL MySql MYsql

     

    評分:0

    我來說兩句

    顯示全部

    :loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

    日歷

    « 2011-06-14  
       1234
    567891011
    12131415161718
    19202122232425
    2627282930  

    我的存檔

    數據統計

    • 訪問量: 215
    • 日志數: 1
    • 建立時間: 2009-03-14
    • 更新時間: 2009-03-14

    RSS訂閱

    Open Toolbar
    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>