c 建mysql表 MySQL建立和操縱表

2021-10-17 11:55:49 字數 2774 閱讀 4742

表建立基礎

create table customers

cust_id int not null auto_increment ,

cust_name char(50) not null ,

cust_address char(50) null ,

cust_city char(50) null ,

cust_state char(5) null ,

cust_zip char(10) null ,

cust_country char(50) null ,

cust_contact char(50) null ,

cust_email char(255), null ,

primary key (cust_id)

)engine=innodb;

從上面的例子中可以看到,表名緊跟在create table關鍵字後面。

實際的表定義(所有列)括在圓括號之中。

各列之間用逗號分隔。

每列的定義以列名(它在表中必須是唯一的)開始,後跟列的資料型別。

表的主鍵可以在建立表時用primary key關鍵字指定整條語句由右圓括號後的分號結束。

null值

null值就是沒有值或缺值。允許null值的列也允許在插入行時不給出該列的值。不允許null值的列不接受該列沒有值的行,換句話說,在插入或更新行時,該列必須有值。

每個表列或者是null列,或者是not null列,這種狀態在建立時由表的定義規定。

因此定義含有關鍵字not null的列,如果試圖插入沒有值的列,將返回錯誤,且插入失敗。

不指定not null。null為預設設定,如果不指定not null,則認為指定的是null。

理解null:不要把null值與空串相混淆。null值是沒有值,它不是空串。如果指定''(兩個單引號,其間沒有字元),這在not null列中是允許的。空串是乙個有效的值,它不是無值。null值用關鍵字null而不是空串指定。

主鍵主鍵值必須唯一。即,表中的每個行必須具有唯一的主鍵值。如果主鍵使用單個列,則它的值必須唯一。如果使用多個列,則這些列的組合值必須唯一。

主鍵和null值:主鍵為其值唯一標識表中每個行的列。主鍵中只能使用不允許null值的列。允許null值的列不能作為唯一標識。

auto_increment

auto_increment告訴mysql,本列每當增加一行時自動增量。每次執行乙個insert操作時,mysql自動對該列增量(從而才有這個關鍵字auto_increment),給該列賦予下乙個可用的值。這樣給每個行分配乙個唯一的cust_id,從而可以用作主鍵值。

每個表只允許乙個auto_increment列,而且它必須被索引(如,通過使它成為主鍵)。

如何在使用auto_increment列時獲得這個值呢?可使用last_insert_id()函式獲得這個值,如下所示:

select last_insert_id()

此語句返回最後乙個auto_increment值,然後可以將它用於後續的mysql語句。

預設值如果在插入行時沒有給出值,mysql允許指定此時使用的預設值。預設值用create table語句的列定義中的default關鍵字指定。

不允許函式 與大多數dbms不一樣,mysql不允許使用函式作為預設值,它只支援常量。

引擎型別

mysql與其他dbms不一樣,它具有多種引擎。它打包多個引擎,這些引擎都隱藏在mysql伺服器內,全都能執行create table和select等命令。

當然,你完全可以忽略這些資料庫引擎。如果省略engine=語句,則使用預設引擎(很可能是myisam),多數sql語句都會預設使用它。但並不是所有語句都預設使用它。

innodb是乙個可靠的事務處理引擎,它不支援全文本搜尋;

memory在功能等同於myisam,但由於資料儲存在記憶體(不是磁碟)中,速度很快(特別適合於臨時表);

myisam是乙個效能極高的引擎,它支援全文本搜尋,但不支援事務處理。

外來鍵不能跨引擎:混用引擎型別有乙個大缺陷。外來鍵(用於強制實施引用完整性)不能跨引擎,即使用乙個引擎的表不能引用具有使用不同引擎的表的外來鍵。

更新表為更新表定義,可使用alter table語句,為了使用alter table更改表結構,必須給出下面的資訊:

在alter table之後給出要更改的表名(該錶必須存在,否則將出錯);

所做更改的列表。

這條語句給vendors表增加乙個名為vend_phone的列,必須明確其資料型別。

alter table vendors add vend_phone char(20);

刪除剛剛新增的列,可以這樣做

alter table vendors drop column vend_phone;

alter table的一種常見用途是定義外來鍵:

alter table orderitems

add constraint fk_orderitems_irdersforeign key (order_num)

references orders (order_num);

刪除表drop table customers2;

這條語句刪除customers 2表(假設它存在)。刪除表沒有確認,也不能撤銷,執行這條語句將永久刪除該錶。

重新命名表

rename table所做的僅是重新命名乙個表。可以使用下面的語句對多個表重新命名:

rename table backup_customers to customers,

backup_vendors to vendors,

backup_products to products;

mysql建立使用者表 mysql 建庫建表建使用者

1.建立資料庫 create database school 2.使用資料庫 use school 3.建立使用者 create user jame localhost identified by jame 4.授權使用者 注意這裡是用了 哦,可以自己講school也替換成 號 grant sele...

mysql建表建索引6 Mysql建表 建立索引

建立表時可以直接建立索引,這種方式最簡單 方便。其基本形式如下 create table 表名 屬性名 資料型別 完整性約束條件 屬性名 資料型別 完整性約束條件 屬性名 資料型別 unique fulltext spatial index key 別名 屬性名1 長度 asc desc uniqu...

mysql建表索引語句 Mysql建表 建立索引

建立表時可以直接建立索引,這種方式最簡單 方便。其基本形式如下 create table 表名 屬性名 資料型別 完整性約束條件 屬性名 資料型別 完整性約束條件 屬性名 資料型別 unique fulltext spatial index key 別名 屬性名1 長度 asc desc uniqu...