MySQL基礎之建立和操縱表

2022-07-30 06:27:11 字數 3733 閱讀 6615

一般有兩種建立表的方法:

為了用程式建立表, 可使用sql的create table語句。

為利用create table建立表, 必須給出以下資訊

create table語句也可能會包括其他關鍵字或選項, 但至少要包括表的名字和列的細節

mariadb [

crashcourse

]>

create

table

customers

( cust_id

intnot

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;

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

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

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

為建立由多個列組成的主鍵, 應該以逗號分割的列表給出各列名。

mariadb [

crashcourse

]>

create

table

orderitems

( order_num

intnot

null

, order_item

intnot

null

, prod_id

char(10) not

null

, quantity

intnot

null

, item_price

decimal(8, 2) not

null

,

primary

key(order_num, order_item)

)engine

=innodb;

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

每個表只允許乙個auto_increment列, 而且它必須被索引。

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

mariadb [

crashcourse

]>

create

table

orderitems

( order_num

intnot

null

, order_item

intnot

null

, prod_id

char(10) not

null

, quantity

intnot

null

default1,

item_price

decimal(8, 2) not

null

,

primary

key(order_num, order_item)

)engine

=innodb;

mysql不允許使用函式作為預設值, 它只支援常量

與其他dbms一樣, mysql有乙個具體管理和處理資料的內部引擎。在使用create table語句時, 該引擎具體建立表, 而在使用select 語句或進行其他資料庫處理時, 該引擎在內部處理請求。

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

為什麼要發行多種引擎?

因為它們各自不同的功能和特性, 為不同的任務選擇正確的引擎能獲得良好的功能和靈活性

常見的引擎有:

為更新表定義, 可使用alter table語句。但是理想狀態下, 當表中儲存資料以後, 該錶就不應該再被更新。

為了使用alter table更改表結構, 必須給出以下資訊

新增列

mariadb [

crashcourse

]>

alter

table vendors add vend_phone char(20);query ok, 0 rows affected (0.027

sec)

records:

0 duplicates: 0 warnings: 0

mariadb

[crashcourse

]>

刪除列

mariadb [

crashcourse

]>

alter

table vendors drop

column

vend_phone;

query ok,

0 rows affected (0.030

sec)

records:

0 duplicates: 0 warnings: 0

mariadb

[crashcourse

]>

複雜的表結構更改一般需要手動刪除過程, 它涉及以下步驟

刪除表(刪除整個表而不是其內容)非常簡單, 使用drop table語句即可。

mariadb [

crashcourse

]>

drop

table customers2;

使用rename table語句可以重新命名乙個表

mariadb [

crashcourse

]> rename table customer2 to customer;

MySQL 建立和操縱表

create table users id int not null auto increment,name char 50 not null,address char 50 not null,email char 50 not null default 11 primary key id engi...

MYSQL學習筆記 建立和操縱表

建立表的兩種方法 使用互動式建立和管理表的工具 直接用mysql語句操縱 表建立基礎 create table products prod id int not null,vend id char10 not null,prod name char 254 not null,prod price d...

c 建mysql表 MySQL建立和操縱表

表建立基礎 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 stat...