我們可以對數據庫進行四種方式的操作:添加、刪除、修改和查詢(搜索)。請大家注意的是,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: *******
| |