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

MySQL心得2--命令行方式建庫和表

編輯:MySQL綜合教程

  1.創建數據庫    使用create database或create schema命令可以創建數據庫。   create database 庫名   create database if not exists 庫名(創建庫並檢驗創建的庫是否存在,不存在則建,存在就不建了)   MySQL不允許兩個數據庫使用相同的名字,使用ifnot exists從句可以不顯示錯誤信息   顯示所有數據庫: showdatabases;  www.2cto.com     顯示創建數據庫的定義信息: show create dabasese 庫名   2. 創建了數據庫之後使用USE命令可指定當前數據庫。   語法格式:use  db_name;   說明:這個語句也可以用來從一個數據庫“跳轉”到另一個數據庫,在用create database語句創建了數據庫之後,該數據庫不會自動成為當前數據庫,需要用這條USE語句來指定。   注意:在MySQL中,每一條SQL語句都以“;”作為結束標志。   mySQL語法中不區分大小寫。創建數據庫的必須是系統管理員,或者擁有用戶級別的create權限。在安裝MySQL的過程中已經創建了系統管理員,名為root,假設密碼為root。   3.創建庫的同時指定字符集,校對規則:   create database mydb character set utf8   collate utf8-general_ci;   character set:指定數據庫字符集(Charset),collate:指定字符集的校對規則   4.修改數據庫,只能改參數   數據庫創建後,如果需要修改數據庫的參數,可以使用alter database命令。   語法格式:   alter {database | schema} [db_name]      alter_specification [, alter_specification] ...   其中alter_specification:  www.2cto.com     [default] character set charset_name      | [default] collate collation_name   說明:   alter database用於更改數據庫的全局特性,這些特性儲存在數據庫目錄中的db.opt文件中。用戶必須有對數據庫進行修改的權限,才可以使用 alterdatabase。修改數據庫的選項與創建數據庫相同,功能不再重復說明。如果語句中數據庫名稱忽略,則修改當前(默認)數據庫。   5.刪除數據庫   drop database 庫名   drop database if exists 庫名(避免刪除不存在的數據庫時出現的MySQL錯誤信息。)   注意:這個命令必須小心使用,因為它將刪除指定的整個數據庫,該數據庫的所有表(包括其中的數據)也將永久刪除。   6.創建表   創建表就是創建表的結構:包含哪些字段(屬性),字段名,字段類型   create table 表名   (字段名1 類型,    字段名2  類型,   。。。。   );   舉例:創建一個學生表     use 庫名(確定你的表建在哪個庫中,把此庫變為當前數據庫);   create table xs   www.2cto.com   (          id int,          name char(10),          sex char(2)   );   Create [temporary] table [if not exists] tbl_name      [ ( [column_definition] , ... | [index_definition] ) ]      [table_option] [select_statement];   說明:   ●  temporary:該關鍵字表示用create命令新建的表為臨時表。不加該關鍵字創建的表通常稱為持久表,在數據庫中持久表一旦創建將一直存在,多個用戶或者多個應用程序可以同時使用持久表。有時候需要臨時存放數據,例如,臨時存儲復雜的select語句的結果。此後,可能要重復地使用這個結果,但這個結果又不需要永久保存。這時,可以使用臨時表。用戶可以像操作持久表一樣操作臨時表。只不過臨時表的生命周期較短,而且只能對創建它的用戶可見,當斷開與該數據庫的連接時,MySQL會自動刪除它們。   ●  創建表時也可使用if not exists語句來判斷創建的表是否已存在,避免出現錯誤。   ●  要創建的表的表名(tbl_name)必須符合標志符規則,如果有MySQL保留字必須用單引號括起來。   ●  column_definition:列定義,包括列名、數據類型,可能還有一個空值聲明和一個完整性約束。   ●  index_definition:表索引項定義,主要定義表的索引、主鍵、外鍵等,具體定義將在後面討論。  www.2cto.com     ●  table_option:用於描述表的選項。   ●  select_statement:可以在create table語句的末尾添加一個select語句,在一個表的基礎上創建表   7.修改表結構:增加字段   修改舊字段   刪除字段   alter table 表名   add 字段名 類型(寬度)         //增加字段   modify 舊字段 類型             //修改舊字段   drop 字段名                   //刪除字段   change 舊字段名 新字段內容     //改列名   order by col_name            //排序    convert  to character set charset_name [字符集名]    //將字符集轉換為二進制    [default]character set charset_name [字符集名]   //修改默認字符集   舉例:在學生表中增加birthday字段、修改name字段、修改字段name的名;   alter table xs   add birthday date;   www.2cto.com   modify name varchar(20);   change name sname varchar(20);   8.修改表名   rename table 舊名 to 新名   分類   數據類型   說明   數值類型   bit (M)   tinint [unsigned] [zerofill]   bool,boolean    smallint [unsigned] [zerofill]   int [unsigned] [zerofill]   bigint [unsigned] [zerofill]   float[(M,D)][unsigned][zerofill]      double[(M,D)][unsigned][zerofill]      位類型。M指定位數,默認值1,范圍1-64   帶符號的范圍是-128到127。無符號0到255。   www.2cto.com   使用0或1表示真或假   2的16次方   2的32次方   2的64次方   M指定顯示長度,d指定小數位數   表示比float精度更大的小數   文本、二進制類型   char(size) char(20)   varchar(size)  varchar(20)   blob    longblob   text(clob)    longtext(longclob)   固定長度字符串   可變長度字符串   二進制數據   大文本   時間日期   date/datetime/TimeStamp   日期類型(YYYY-MM-DD)  (YYYY-MM-DD HH:MM:SS),TimeStamp表示時間戳,它可用於自動記錄insert、update操作的時間   注意: 在字符數據類型和數值數據類型之後,MySQL允許指定一個數據類型選項用來改變數據類型的屬性和功能。   對於字符數據類型,MySQL支持兩種數據類型選項:characterset和collate。如果要區分字符的大小寫情況,可以在字符類型後面加上bingary。   對於除bit以外的數值數據類型,MySQL允許添加一個或多個數據類型選項。unsigned:不允許負值。zerofill:當插入的值長度小於字段設定的長度時,剩余部分用0填補。   與int有關的類型與java中的bit、short、int、long分別對應。   varchar、bolb和text類是變長類型。每個類型的存儲需求取決於列值的實際長度。   9.  列定義column_definition格式如下:   col_name  type  [not null | null] [default default_value]      [auto_increment] [unique [key] | [primary] key]      [comment 'string'] [reference_definition]   說明:  www.2cto.com     ●  col_name:表中列的名字。列名必須符合標志符規則,長度不能超過64個字符,而且在表中要唯一。如果有MySQL保留字必須用單引號括起來。   ●  type:列的數據類型,有的數據類型需要指明長度n,並用括號括起,MySQL支持的數據類型在附錄C中介紹。   ●  auto_increment:設置自增屬性,只有整型列才能設置此屬性。當插入null值或0到一個auto_increment列中時,列被設置為value+1,在這裡value是此前表中該列的最大值。auto_increment順序從1開始。每個表只能有一個auto_increment列,並且它必須被索引。   ● not null | null:指定該列是否允許為空。如果不指定,則默認為null。   ●  default default_value:為列指定默認值,默認值必須為一個常數。其中,BLOB和TEXT列不能被賦予默認值。如果沒有為列指定默認值,MySQL自動地分配一個。如果列可以取NULL值,默認值就是NULL。如果列被聲明為NOT NULL,默認值取決於列類型:   (1)對於沒有聲明auto_increment屬性的數字類型,默認值是0。對於一個auto_increment列,默認值是在順序中的下一個值。   (2)對於除timestamp以外的日期和時間類型,默認值是該類型適當的“零”值。對於表中第一個timestamp列,默認值是當前的日期和時間。   (3)對於除enum的字符串類型,默認值是空字符串。對於enum,默認值是第一個枚舉值。   ●  unique key | primary key:兩者都表示字段中的值是唯一的。primary key表示設置為主鍵,一個表只能定義一個主鍵,主鍵一定要為notnull。   ●  comment 'string':對於列的描述,string是描述的內容。   ●  reference_definition:指定參照的表和列。   10. (1).復制表 : create table 表名 like 表名1   語法格式:   create [temporary] table[if not exists] tbl_name       [ ( )like old_ name [ ] ]       | [as (select_statement)] ;   說明:   使用LIKE關鍵字創建一個與old _name表相同結構的新表,列名、數據類型、空指定和索引也將復制,但是表的內容不會復制,因此創建的新表是一個空表。使用as關鍵字可以復制表的內容,但索引和完整性約束是不會復制的。select_statement表示一個表達式,例如,可以是一條select語句。   (2).刪除表 : drop table 表名(這個命令將表的描述、表的完整性約束、索引及和表相關的權限等都全部刪除)  www.2cto.com     (3).修改表名 : rename子句,語法格式:   rename table old_name to new_name   new_tbl_name是新表名。例如,將表a改名為b:alter table  a rename to b ;除了上面的alter table命令,還可以直接用renametable語句來更改表的名字。   ●  order by子句(以後介紹):用於在創建新表時,讓各行按一定的順序排列。注意,在插入和刪除後,表不會仍保持此順序。在對表進行了大的改動後,通過使用此選項,可以提高查詢效率。在有些情況下,如果表按列排序,對於MySQL來說,排序可能會更簡單。   ●  table_options:修改表選項,具體定義與create table語句中一樣。   可以在一個alter table語句裡寫入多個add、alter、drop和chang子句,中間用逗號分開。這是MySQL相對於標准SQL的擴展。在標准SQL中,每個alter table語句中每個子句只允許使用一次。   11.說明:表中大多數的選項涉及的是表數據如何存儲及存儲在何處。多數情況下,不必指定表選項。engine選項是定義表的存儲引擎,具體在附錄E中介紹。   舉例:   USE mydb1;   CREATE TABLE XS   (      學號      char(6)    NOTNULL  primary KEY,      姓名      char(8)    NOTNULL ,   專業名  char(10)  NOT NULL ,   性別    tinyint(1) NOT NULL default  1   ) engine=InnoDB;   說明:“primary KEY”表示將“學號”字段定義為主鍵。“default 1”表示“性別”的默認值為1。“engine=InnoDB”表示采用的存儲引擎是InnoDB,InnoDB是MySQL在Windows平台默認的存儲引擎,所以“engine=InnoDB”可以省略。   12.說明:   ●  ignore:是MySQL相對於標准SQL的擴展。若在修改後的新表中存在重復關鍵字,如果沒有指定ignore,當重復關鍵字錯誤發生時操作失敗。如果指定了ignore,則對於有重復關鍵字的行只使用第一行,其他有沖突的行被刪除。   ●  column_definition:定義列的數據類型和屬性,具體內容在create table的語法中已做說明。   ●  first| after col_name:表示在某列的前或後添加,不指定則添加到最後。   注意:若表中該列所存數據的數據類型與將要修改的列的類型沖突,則發生錯誤。例如,原來char類型的列要修改成int類型,而原來列值中有字符型數據“a”,則無法修改。   13.   1).  空值(NULL)概念   空值通常表示未知、不可用或將在以後添加的數據。若一個列允許為空值,則向表中輸入記錄值時可不為該列給出具體值;而一個列若不允許為空值,則在輸入時必須給出該列的具體值。   注意:表的關鍵字不允許為空值。空值不能與數值數據0或字符類型的空字符混為一談。任意兩個空值都不相等。  www.2cto.com     2).  列的IDENTITY(標志)屬性   對任何表都可創建包含系統所生成序號值的一個標志列,該序號值唯一標志表中的一列,可以作為鍵值。每個表只能有一個列設置為標志屬性,該列只能是decimal、int、numeric、smallint、bigint 或tinyint 數據類型。定義標志屬性時,可指定其種子(即起始)值、增量值,二者的默認值均為 1。系統自動更新標志列值,標志列不允許空值。   在下列情況下,MySQL隱含地改變在一個CREATE TABLE語句給出的一個列類型(這也可能在ALTER TABLE語句上出現)。   14.MySQL隱含地改變列類型:   (1)長度小於4的varchar被改變為char。   (2)如果在一個表中的任何列有可變長度,結果使整個行是變長。   因此,如果一張表包含任何變長的列(varchar、text或Blob),所有大於3個字符的char列被改變為varchar列。這在任何方面都不影響用戶如何使用列。在MySQL中這種改變可以節省空間並且使表操作更快捷。   (3)timestamp的顯示尺寸必須是偶數且在2~14的范圍內。如果指定0顯示尺寸或比14大,尺寸被強制為14。從1~13范圍內的奇數值尺寸被強制為下一個更大的偶數。   (4)不能在一個timestamp列裡面存儲一個NULL,將它設為NULL默認為當前的日期和時間。   如果想要知道MySQL是否使用了除指定的以外的一種列類型,在創建表之後,使用一個DESCRIBE語句即可。DESCRIBE語句在3.1.4節介紹。   15 type定義如下:   說明:在字符數據類型和數值數據類型之後,MySQL允許指定一個數據類型選項用來改變數據類型的屬性和功能。   對於字符數據類型,MySQL支持兩種數據類型選項:CHARACTERSET和COLLATE。如果要區分字符的大小寫情況,可以在字符類型後面加上BINGARY。   對於除BIT以外的數值數據類型,MySQL允許添加一個或多個數據類型選項。UNSIGNED:不允許負值。ZEROFILL:當插入的值長度小於字段設定的長度時,剩余部分用0填補。   spatial_type是空間類型數據。   16.  表選項table_option定義如下:   {engine | type} = engine_name             //存儲引擎   | auto_increment = value               //初始值   | auto_increment = value               //表的平均行長度   | [default] charcter set charset_name [collatecollation_name]  //默認字符集和校對   | checksum = {0 | 1}              //設置為1表示求校驗和   | comment= 'string'               //注釋   | connection = 'connect_string'     //連接字符串   | MAX_ROWS = value               //行的最大數   | MIN_ROWS = value               //列的最小數   | PACK_KEYS = {0 | 1 | DEFAULT}   | password = 'string'               //對.frm文件加密   | delay_key_write = {0 | 1}           //對關鍵字的更新   |row_format={DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT}                     //定義各行應如何儲存  www.2cto.com     | union = (tbl_name[,tbl_name]...)    //表示哪個表應該合並   | insert_method = { NO | FIRST | LAST}//是否執行INSERT語句   |data directory = 'absolute path todirectory'     //數據文件的路徑   | index directory = 'absolute path todirectory’ //索引的路徑       作者 tianyazaiheruan

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