mysql常識和基本操作

            【IT168 服務器學院】字段類型?
             1.INT[(M)]?

             正常大小整數類型

             2.DOUBLE[(M,D)] [ZEROFILL]?

             正常大小(雙精密)浮點數字類型

             3.DATE?

             日期類型。支持的范圍是'1000-01-01'到'9999-12-31'。MySQL以'YYYY-MM-DD'格式來顯示DATE值,但是允許你使用字符串或數字把值賦給DATE列

             4.CHAR(M)?

             定長字符串類型,當存儲時,總是是用空格填滿右邊到指定的長度

             5.BLOB TEXT?

             BLOB或TEXT類型,最大長度為65535(2^16-1)個字符。

             6.VARCHAR

             變長字符串類型。?

             1: 顯示數據庫?
           ?
             SHOW DATABAS,?

             2:當前選擇的數據庫,?

             mysql> SELECT DATABASE();?
             +------------+?
             | DATABASE() |?
             +------------+?
             | test ;?
             +------------+?
             | DATABASE() |?
             +------------+?
             | test    |?
             +------------+?

             當前數據庫包含的表信息:?

             mysql> SHOW TABLES;?
             +---------------------+?
             | Tables in test ?
             mysql> SHOW TABLES;?
             +---------------------+?
             | Tables in test   |?
             +---------------------+?
             | mytable1      |?
             | mytable2      |?
             +---------------------+?

             獲取表結構?

             mysql> desc mytable1;?
             +---------+-------------+------+-----+---------+-------+?
             | Field  mysql> desc mytable1;?
             +---------+-------------+------+-----+---------+-------+?
             | Field  | Type  | Null | Key | Default | Extra |?
             +---------+-------------+------+-----+---------+-------+?
             | s1  | varchar(20) | YES |NULL  |    |?
             +---------------------+------+-----+---------+-------+?

          ?

             5.導入數據庫表?
             (1)創建.sql文件

             (2)先產生一個庫如auction.c:mysqlbin>mysqladmin -u root -p creat auction,會提示輸入密碼,然后成功創建。

             (2)導入auction.sql文件

             c:mysqlbin>mysql -u root -p auction < auction.sql。

             通過以上操作,就可以創建了一個數據庫auction以及其中的一個表auction。

             6.修改數據庫

             (1)在mysql的表中增加字段:

             alter table dbname add column userid int(11) not null primary key auto_increment;

             這樣,就在表dbname中添加了一個字段userid,類型為int(11)。

             7.mysql數據庫的授權

             mysql>grant select,insert,delete,create,drop

             on *.* (或test.*/user.*/..)

             to 用戶名@localhost

             identified by '密碼';

             如:新建一個用戶帳號以便可以訪問數據庫,需要進行如下操作:

             mysql> grant usage

             -> ON test.*
             -> TO testuser@localhost;
             Query OK, 0 rows affected (0.15 sec)

             此后就創建了一個新用戶叫:testuser,這個用戶只能從localhost連接到數據庫并可以連接到test 數據庫。下一步,我們必須指定testuser這個用戶可以執行哪些操作:

             mysql> GRANT select, insert, delete,update
             -> ON test.*
             -> TO testuser@localhost;
             Query OK, 0 rows affected (0.00 sec)

             此操作使testuser能夠在每一個test數據庫中的表執行SELECT,INSERT和DELETE以及UPDATE查詢操作。現在我們結束操作并退出MySQL客戶程序:

             mysql> exit
             Bye?

          posted on 2007-03-25 10:09 金家寶 閱讀(1750) 評論(5)  編輯  收藏 所屬分類: 其他輔助技術

          評論

          # re: mysql常識和基本操作 2007-03-25 10:17 金家寶

          入門篇

          上篇講了如何安裝并測試MySQL,環境建好后就可以繼續我們的學習了。本篇主要熟悉一寫常用命令。

          1、啟動MySQL服務器

          實際上上篇已講到如何啟動MySQL。兩種方法:

          一是用winmysqladmin,如果機器啟動時已自動運行,則可直接進入下一步操作。

          二是在DOS方式下運行

          d:mysqlbinmysqld

          2、進入mysql交互操作界面

          在DOS方式下,運行:

          d:mysqlbinmysql

          出現:

          mysql

          的提示符,此時已進入mysql的交互操作方式。

          如果出現 "ERROR 2003: Can't connect to MySQL server on 'localhost' (10061)“,

          說明你的MySQL還沒有啟動。

          3、退出MySQL操作界面

          在mysql>提示符下輸入quit可以隨時退出交互操作界面:

          mysql> quit

          Bye

          你也可以用control-D退出。

          4、第一條命令

          mysql> select version(),current_date();

          +----------------+-----------------+

          | version() | current_date() |

          +----------------+-----------------+

          | 3.23.25a-debug | 2001-05-17 |

          +----------------+-----------------+

          1 row in set (0.01 sec)

          mysql>

          此命令要求mysql服務器告訴你它的版本號和當前日期。嘗試用不同大小寫操作上述命令,看結果如何。

          結果說明mysql命令的大小寫結果是一致的。

          練習如下操作:

          mysql>Select (20+5)*4;

          mysql>Select (20+5)*4,sin(pi()/3);

          mysql>Select (20+5)*4 AS Result,sin(pi()/3); (AS: 指定假名為Result)

          5、多行語句

          一條命令可以分成多行輸入,直到出現分號“;”為止:

          mysql> select

          -> USER()

          -> ,

          -> now()

          ->;

          +--------------------+---------------------+

          | USER() | now() |

          +--------------------+---------------------+

          | ODBC@localhost | 2001-05-17 22:59:15 |

          +--------------------+---------------------+

          1 row in set (0.06 sec)

          mysql>

          注意中間的逗號和最后的分號的使用方法。

          6、一行多命令

          輸入如下命令:

          mysql> SELECT USER(); SELECT NOW();

          +------------------+

          | USER() |

          +------------------+

          | ODBC@localhost |

          +------------------+

          1 row in set (0.00 sec)

          +---------------------+

          | NOW() |

          +---------------------+

          | 2001-05-17 23:06:15 |

          +---------------------+

          1 row in set (0.00 sec)

          mysql>

          注意中間的分號,命令之間用分號隔開。

          7、顯示當前存在的數據庫

          mysql> show databases;

          +----------+

          | Database |

          +----------+

          | mysql|

          | test |

          +----------+

          2 row in set (0.06 sec)

          mysql>

          8、選擇數據庫并顯示當前選擇的數據庫

          mysql> USE mysql

          Database changed

          mysql>

          (USE 和 QUIT 命令不需要分號結束。)

          mysql> select database();

          +---------------+

          | database()|

          +---------------+

          | mysql |

          +---------------+

          1 row in set (0.00 sec)

          9、顯示當前數據庫中存在的表

          mysql> SHOW TABLES;

          10、顯示表(db)的內容

          mysql>select * from db;

          11、命令的取消

          當命令輸入錯誤而又無法改變(多行語句情形)時,只要在分號出現前就可以用 c來取消該條命令

          mysql> select

          -> user()

          -> c

          mysql>

          這是一些最常用的最基本的操作命令,通過多次練習就可以牢牢掌捂了。
            回復  更多評論   

          # re: mysql常識和基本操作 2007-03-25 10:18 金家寶

          學習篇

          了解了一些最基本的操作命令后,我們再來學習如何創建一個數據庫和數據庫表。

          1、使用SHOW語句找出在服務器上當前存在什么數據庫:

          mysql> SHOW DATABASES;

          +----------+

          | Database |

          +----------+

          | mysql|

          | test |

          +----------+

          3 rows in set (0.00 sec)

          2、創建一個數據庫abccs

          mysql> CREATE DATABASE abccs;

          注意不同操作系統對大小寫的敏感。

          3、選擇你所創建的數據庫

          mysql> USE abccs

          Database changed

          此時你已經進入你剛才所建立的數據庫abccs.

          4、 創建一個數據庫表

          首先看現在你的數據庫中存在什么表:

          mysql> SHOW TABLES;

          Empty set (0.00 sec)

          說明剛才建立的數據庫中還沒有數據庫表。下面來創建一個數據庫表mytable:

          我們要建立一個你公司員工的生日表,表的內容包含員工姓名、性別、出生日期、出生城市。

          mysql> CREATE TABLE mytable (name VARCHAR(20), sex CHAR(1),

          -> birth DATE, birthaddr VARCHAR(20));

          Query OK, 0 rows affected (0.00 sec)

          由于name、birthadd的列值是變化的,因此選擇VARCHAR,其長度不一定是20。可以選擇從

          1到255的任何長度,如果以后需要改變它的字長,可以使用ALTER TABLE語句。);

          性別只需一個字符就可以表示:"m"或"f",因此選用CHAR(1);

          birth列則使用DATE數據類型。

          創建了一個表后,我們可以看看剛才做的結果,用SHOW TABLES顯示數據庫中有哪些表:

          mysql> SHOW TABLES;

          +---------------------+

          | Tables in menagerie |

          +---------------------+

          | mytables|

          +---------------------+

          5、顯示表的結構:

          mysql> DESCRIBE mytable;

          +-------------+-------------+------+-----+---------+-------+

          | Field | Type| Null | Key | Default | Extra |

          +-------------+-------------+------+-----+---------+-------+

          | name| varchar(20) | YES | | NULL| |

          | sex | char(1) | YES | | NULL| |

          | birth | date| YES | | NULL| |

          | deathaddr | varchar(20) | YES | | NULL| |

          +-------------+-------------+------+-----+---------+-------+

          4 rows in set (0.00 sec)

          6、 往表中加入記錄

          我們先用SELECT命令來查看表中的數據:

          mysql> select * from mytable;

          Empty set (0.00 sec)

          這說明剛才創建的表還沒有記錄。

          加入一條新記錄:

          mysql> insert into mytable

          -> values ('abccs','f','1977-07-07','china');

          Query OK, 1 row affected (0.05 sec)

          再用上面的SELECT命令看看發生了什么變化。

          我們可以按此方法一條一條地將所有員工的記錄加入到表中。

          7、用文本方式將數據裝入一個數據庫表

          如果一條一條地輸入,很麻煩。我們可以用文本文件的方式將所有記錄加入你的數據庫表中。

          創建一個文本文件“mysql.txt”,每行包含一個記錄,用定位符(tab)把值分開,并且以在

          CREATE TABLE語句中列出的列次序給出,例如:

          abccs f 1977-07-07 china  

          mary f 1978-12-12 usa

          tom m 1970-09-02 usa

          使用下面命令將文本文件“mytable.txt”裝載到mytable表中:

          mysql> LOAD DATA LOCAL INFILE "mytable.txt" INTO TABLE pet;

          再使用如下命令看看是否已將數據輸入到數據庫表中:

          mysql> select * from mytable;

            回復  更多評論   

          # re: mysql常識和基本操作 2007-03-25 10:19 金家寶

          學習篇

          上篇我們學會了如何創建一個數據庫和數據庫表,并知道如何向數據庫表中添加記錄。

          那么我們如何從數據庫表中檢索數據呢?

          1、從數據庫表中檢索信息

          實際上,前面我們已經用到了SELECT語句,它用來從數據庫表中檢索信息。

          select語句格式一般為:

          SELECT 檢索關鍵詞 FROM 被檢索的表 WHERE 檢索條件(可選)

          以前所使用的“ * ”表示選擇所有的列。

          下面繼續使用我們在上篇文章中創建的表mytable:

          2、查詢所有數據:

          mysql> select * from mytable;

          +----------+------+------------+----------+

          | name | sex | birth | birthaddr |

          +----------+------+------------+--------+

          | abccs|f| 1977-07-07 | china |

          | mary |f| 1978-12-12 | usa |

          | tom |m| 1970-09-02 | usa |

          +----------+------+------------+----------+

          3 row in set (0.00 sec)

          3、修正錯誤記錄:

          假如tom的出生日期有錯誤,應該是1973-09-02,則可以用update語句來修正:

          mysql> update mytable set birth = "1973-09-02" where name = "tom";

          再用2中的語句看看是否已更正過來。

          4、選擇特定行

          上面修改了tom的出生日期,我們可以選擇tom這一行來看看是否已經有了變化:

          mysql> select * from mytable where name = "tom";

          +--------+------+------------+------------+

          | name |sex | birth | birthaddr |

          +--------+------+------------+------------+

          | tom|m| 1973-09-02 | usa|

          +--------+------+------------+------------+

          1 row in set (0.06 sec)

          上面WHERE的參數指定了檢索條件。我們還可以用組合條件來進行查詢:

          mysql> SELECT * FROM mytable WHERE sex = "f" AND birthaddr = "china";

          +--------+------+------------+------------+

          | name |sex | birth | birthaddr |

          +--------+------+------------+------------+

          | abccs |f| 1977-07-07 | china |

          +--------+------+------------+------------+

          1 row in set (0.06 sec)

          5、 選擇特定列

          假如你想查看表中的所有人的姓名,則可以這樣操作:

          mysql> SELECT name FROM mytable;

          +----------+

          | name |

          +----------+

          | abccs |

          | mary |

          | tom |

          +----------+

          3 row in set (0.00 sec)

          如果想列出姓名和性別兩列,則可以用逗號將關鍵詞name和birth分開:

          myaql> select name,birth from mytable;

          6、對行進行排序

          我們可以對表中的記錄按生日大小進行排序:

          mysql> SELECT name, birth FROM mytable ORDER BY birth;

          +----------+------------+

          | name | birth |

          +----------+------------+

          | tom | 1973-09-02 |

          | abccs| 1977-07-07 |

          | mary | 1978-12-12 |

          +----------+------------+

          3 row in set (0.00 sec)

          我們可以用DESC來進行逆序排序:

          mysql> SELECT name, birth FROM mytable ORDER BY birth DESC;

          +----------+------------+

          | name | birth |

          +----------+------------+

          | mary | 1978-12-12 |

          | abccs| 1977-07-07 |

          | tom | 1973-09-02 |

          +----------+------------+

          3 row in set (0.00 sec)

          7、 行計數

          數據庫經常要統計一些數據,如表中員工的數目,我們就要用到行計數函數COUNT()。

          COUNT()函數用于對非NULL結果的記錄進行計數:

          mysql> SELECT COUNT(*) FROM mytable;

          +----------+

          | COUNT(*) |

          +----------+

          |3 |

          +----------+

          1 row in set (0.06 sec)

          員工中男女數量:

          mysql> SELECT sex, COUNT(*) FROM mytable GROUP BY sex;

          +------+----------+

          | sex | COUNT(*) |

          +------+----------+

          | f|2 |

          | m|1 |

          +------+----------+

          2 row in set (0.00 sec)

          注意我們使用了GROUP BY對SEX進行了分組。

            回復  更多評論   

          # re: mysql常識和基本操作 2007-03-25 10:19 金家寶

          多表操作

          前面我們熟悉了數據庫和數據庫表的基本操作,現在我們再來看看如何操作多個表。

          在一個數據庫中,可能存在多個表,這些表都是相互關聯的。我們繼續使用前面的例子。前面建立的表中包含了員工的一些基本信息,如姓名、性別、出生日期、出生地。我們再創建一個表,該表用于描述員工所發表的文章,內容包括作者姓名、文章標題、發表日期。

          1、查看第一個表mytable的內容:

          mysql> select * from mytable;

          +----------+------+------------+-----------+

          | name | sex | birth | birthaddr |

          +----------+------+------------+-----------+

          | abccs|f | 1977-07-07 | china |

          | mary |f | 1978-12-12 | usa |

          | tom |m | 1970-09-02 | usa |

          +----------+------+------------+-----------+

          2、創建第二個表title(包括作者、文章標題、發表日期):

          mysql> create table title(writer varchar(20) not null,

          -> title varchar(40) not null,

          -> senddate date);

          向該表中填加記錄,最后表的內容如下:

          mysql> select * from title;

          +--------+-------+------------+

          | writer | title | senddate |

          +--------+-------+------------+

          | abccs | a1| 2000-01-23 |

          | mary | b1| 1998-03-21 |

          | abccs | a2| 2000-12-04 |

          | tom| c1| 1992-05-16 |

          | tom| c2| 1999-12-12 |

          +--------+-------+------------+

          5 rows in set (0.00sec)

          3、多表查詢

          現在我們有了兩個表: mytable 和 title。利用這兩個表我們可以進行組合查詢:

          例如我們要查詢作者abccs的姓名、性別、文章:

          mysql> SELECT name,sex,title FROM mytable,title

          -> WHERE name=writer AND name='abccs';

          +-------+------+-------+

          | name | sex | title |

          +-------+------+-------+

          | abccs | f| a1|

          | abccs | f| a2|

          +-------+------+-------+

          上面例子中,由于作者姓名、性別、文章記錄在兩個不同表內,因此必須使用組合來進行查詢。必須要指定一個表中的記錄如何與其它表中的記錄進行匹配。

          注意:如果第二個表title中的writer列也取名為name(與mytable表中的name列相同)而不是writer時,就必須用mytable.name和title.name表示,以示區別。

          再舉一個例子,用于查詢文章a2的作者、出生地和出生日期:

          mysql> select title,writer,birthaddr,birth from mytable,title

          -> where mytable.name=title.writer and title='a2';

          +-------+--------+-----------+------------+

          | title | writer | birthaddr | birth |

          +-------+--------+-----------+------------+

          | a2| abccs | china | 1977-07-07 |

          +-------+--------+-----------+------------+

            回復  更多評論   

          # re: mysql常識和基本操作 2007-03-25 10:20 金家寶

          修改和備份、批處理

          有時我們要對數據庫表和數據庫進行修改和刪除,可以用如下方法實現:

          1、增加一列:

          如在前面例子中的mytable表中增加一列表示是否單身single:

          mysql> alter table mytable add column single char(1);

          2、修改記錄

          將abccs的single記錄修改為“y”:

          mysql> update mytable set single='y' where name='abccs';

          現在來看看發生了什么:

          mysql> select * from mytable;

          +----------+------+------------+-----------+--------+

          | name | sex | birth | birthaddr | single |

          +----------+------+------------+-----------+--------+

          | abccs|f | 1977-07-07 | china | y |

          | mary |f | 1978-12-12 | usa | NULL |

          | tom |m | 1970-09-02 | usa | NULL |

          +----------+------+------------+-----------+--------+

          3、增加記錄

          前面已經講過如何增加一條記錄,為便于查看,重復與此:

          mysql> insert into mytable

          -> values ('abc','f','1966-08-17','china','n');

          Query OK, 1 row affected (0.05 sec)

          查看一下:

          mysql> select * from mytable;

          +----------+------+------------+-----------+--------+

          | name | sex | birth | birthaddr | single |

          +----------+------+------------+-----------+--------+

          | abccs|f | 1977-07-07 | china | y |

          | mary |f | 1978-12-12 | usa | NULL |

          | tom |m | 1970-09-02 | usa | NULL |

          | abc |f | 1966-08-17 | china | n |

          +----------+------+------------+-----------+--------+



          3、刪除記錄

          用如下命令刪除表中的一條記錄:

          mysql> delete from mytable where name='abc';

          DELETE從表中刪除滿足由where給出的條件的一條記錄。

          再顯示一下結果:

          mysql> select * from mytable;

          +----------+------+------------+-----------+--------+

          | name | sex | birth | birthaddr | single |

          +----------+------+------------+-----------+--------+

          | abccs|f | 1977-07-07 | china | y |

          | mary |f | 1978-12-12 | usa | NULL |

          | tom |m | 1970-09-02 | usa | NULL |

          +----------+------+------------+-----------+--------+

          4、刪除表:

          mysql> drop table ****(表1的名字),***表2的名字;

          可以刪除一個或多個表,小心使用。

          5、數據庫的刪除:

          mysql> drop database 數據庫名;

          小心使用。

          6、數據庫的備份:

          退回到DOS:

          mysql> quit

          d:mysqlbin

          使用如下命令對數據庫abccs進行備份:

          mysqldump --opt abccs>abccs.dbb

          abccs.dbb就是你的數據庫abccs的備份文件。

          7、用批處理方式使用MySQL:

          首先建立一個批處理文件mytest.sql,內容如下:

          use abccs;

          select * from mytable;

          select name,sex from mytable where name='abccs';

          在DOS下運行如下命令:

          d:mysqlbin mysql < mytest.sql

          在屏幕上會顯示執行結果。

          如果想看結果,而輸出結果很多,則可以用這樣的命令:

          mysql < mytest.sql | more

          我們還可以將結果輸出到一個文件中:

          mysql < mytest.sql > mytest.out

            回復  更多評論   


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 稻城县| 榆社县| 咸丰县| 靖远县| 禹州市| 肥东县| 库伦旗| 固镇县| 宁化县| 偏关县| 五寨县| 岳普湖县| 静安区| 渝北区| 全州县| 长武县| 杨浦区| 登封市| 昭平县| 寿光市| 遂昌县| 潞城市| 博野县| 扬州市| 佛学| 万安县| 陇川县| 红安县| 永昌县| 建德市| 昆明市| 龙门县| 宜兰县| 北碚区| 安康市| 互助| 平湖市| 上栗县| 若尔盖县| 深水埗区| 朝阳市|