文章目錄
- 1.創建表
- 1.1comment:注釋信息
- 1.2存儲引擎
- 2.查看表
- 3.修改表
- 3.1add添加列,對原數據無影響
- 3.2drop刪除列
- 3.3modify修改列類型
- 3.4change修改列名
- 3.5rename [to]修改表名
- 4.刪除表
- 5.總結
1.創建表
CREATE TABLE table_name (field1 datatype,field2 datatype,field3 datatype
) character set 字符集 collate 校驗規則 engine 存儲引擎;
field 表示列名
datatype 表示列的類型
character set 字符集,如果沒有指定字符集,則以所在數據庫的字符集為準
collate 校驗規則,如果沒有指定校驗規則,則以所在數據庫的校驗規則為準
show create table user1;
show create table user1 \G;
1.1comment:注釋信息
注釋對于數據庫的性能沒有任何影響,它們只是作為元數據存儲在數據庫中,供人閱讀。
注釋的長度是有限制的,具體限制取決于MySQL的版本和配置,但通常足夠長以包含有用的信息。
CREATE TABLE employee ( id INT AUTO_INCREMENT COMMENT '員工編號', name VARCHAR(100) COMMENT '員工姓名', position VARCHAR(100) COMMENT '職位', salary DECIMAL(10, 2) COMMENT '薪資', PRIMARY KEY (id)
) COMMENT='員工信息表';
通過SHOW CREATE TABLE可以查看創建表時的語句
1.2存儲引擎
不同的存儲引擎,創建表的文件不一樣。
users 表存儲引擎是 MyISAM ,在數據目中有三個不同的文件,分別是:
users.frm:表結構
users.MYD:表數據
users.MYI:表索引
innodb是.frm和.ibd(數據和索引放在一個文件)
2.查看表
字段名 字段類型 是否允許為空 索引類型 默認值 擴充
3.修改表
在項目實際開發中,經常修改某個表的結構,比如字段名字,字段大小,字段類型,表的字符集類型,
表的存儲引擎等等。我們還有需求,添加字段,刪除字段等等。這時我們就需要修改表。
ALTER TABLE tablename ADD (column datatype [DEFAULT expr][,column datatype]...);
ALTER TABLE tablename MODIfy (column datatype [DEFAULT expr][,column datatype]...);
ALTER TABLE tablename DROP (column);
插入兩條記錄
insert into users values(1,'a','b','1982-01-04'),(2,'b','c','1984-01-
04');
3.1add添加列,對原數據無影響
3.2drop刪除列
alter table users drop password;
刪除字段一定要小心,刪除字段及其對應的列數據都沒了
3.3modify修改列類型
3.4change修改列名
alter table Users change name Name varchar(60); --新字段需要完整定義
3.5rename [to]修改表名
alter table users rename [to] Users;
4.刪除表
DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...
drop table Users;
5.總結
在MySQL中,DROP TABLE語句用于刪除一個或多個表,并釋放與之相關的空間。當你想要徹底移除表及其所有數據時,這個語句非常有用。DROP TABLE語句的語法支持一些選項,如TEMPORARY和IF EXISTS,這些選項提供了額外的靈活性和錯誤處理機制。
基本語法
sql
DROP TABLE [IF EXISTS] tbl_name [, tbl_name] …
使用TEMPORARY關鍵字
TEMPORARY關鍵字用于指定要刪除的表是臨時表。臨時表只在當前會話(或連接)中可見,并且當會話結束時會自動刪除。然而,如果你想要在當前會話中提前刪除臨時表,可以使用DROP TEMPORARY TABLE語句。但是,需要注意的是,在DROP TABLE語句中直接使用TEMPORARY關鍵字并不是MySQL的標準用法。要刪除臨時表,通常只需使用DROP TABLE,因為MySQL能夠識別出哪些表是臨時的。
使用IF EXISTS選項
IF EXISTS選項在嘗試刪除一個或多個表之前檢查這些表是否存在。如果表存在,則將其刪除;如果表不存在,則不會引發錯誤,而是簡單地忽略該表并繼續執行語句中的其他操作(如果有的話)。這在你不知道表是否存在但想要安全地嘗試刪除它時非常有用。
示例
刪除名為my_table的表(如果它存在):
sql
DROP TABLE IF EXISTS my_table;
同時刪除兩個表(table1和table2),如果它們都存在:
sql
DROP TABLE IF EXISTS table1, table2;
注意:雖然這里提到了TEMPORARY,但在標準DROP TABLE語法中,如果你想要刪除臨時表,通常不需要(也不能)顯式指定TEMPORARY。只需確保你正在正確的會話中操作,并且知道哪些表是臨時的。
注意事項
使用DROP TABLE時要格外小心,因為一旦執行,表及其所有數據將被永久刪除,且無法恢復(除非你有備份)。
如果你只是想刪除表中的數據但保留表結構,應該使用TRUNCATE TABLE語句而不是DROP TABLE。
DROP TABLE操作通常不會記錄在二進制日志中,除非你設置了相應的二進制日志格式(如ROW格式),但這取決于你的MySQL配置和版本。