mysql显示表已存在_MySQL数据库与数据表的相关操作
數據庫相關操作:
顯示數據庫:show databases;
如果是0.00秒并不代表沒有花費時間,而是時間非常短,小于0.01秒。
創建數據庫:
Query OK表示創建成功,1行受到影響,處理時間為0、05秒。
使用下面的命令查看某個數據庫的詳細信息:
必須要記住:默認使用的是拉丁字符集,如果不重新設置的話,中文顯示會是亂碼的,創建數據庫的時候指定字符集編碼,如下:
注意:latin1是拉丁字符集,這是默認的字符集,這個字符集所顯示出來的漢字是?號的形式的。
圖形化界面如何創建數據庫:
刪除數據庫
刪除數據庫要慎重,因為刪除數據庫會刪除數據庫中所有的表和表中所有的數據。
刪除數據庫后我們可以用show databases;命令來顯示看看沒有被刪除。
注意:數據庫名中有中橫線的,會當成特殊意義,需要使用``進行包含住。
選擇數據庫:
mysql> use abccs; 此時你已經進入你剛才所建立的數據庫abccs.
顯示你所選擇數據庫中所有的表:
查看當前使用的數據庫:
如果沒有選擇數據庫的話:
查看默認存儲引擎:
mysql> show variables like '%storage_engine%';
結果顯示,默認的存儲引擎為InnoDB存儲引擎。
查看mysql數據庫系統支持的存儲引擎的類型:
mysql> show engines;
也可以:
數據庫表相關操作:
查看當前數據庫中數據表:
說明剛才建立的數據庫中還沒有數據庫表。
創建數據庫表
注意:表名不能為sql語言的關鍵字,一個表中可以有一個或多個字段。定義時,字母大小寫均可,各字段之間用逗號隔開,最后一個字段后不需要加逗號。
完整性約束條件
完整性約束條件是對字段進行限制。要求用戶對該屬性進行的操作符合特定的要求。如果不滿足完整性約束條件,數據庫系統將不執行用戶的操作。其目的是為了保證數據庫中數據的完整性。
MYSQL中基本的完整性約束條件如下表:
主鍵primary key:物理上存儲的順序
非空not null:此字段不允許填寫空值
惟一unique:此字段的值不允許重復
默認default:當不填寫此值時會使用默認值,如果填寫時以填寫為準
外鍵foreign key:對關系字段進行約束,當為關系字段填寫值時,會到關聯的表中查詢此值是否存在,如果存在則填寫成功,如果不存在則填寫失敗并拋出異常
說明:雖然外鍵約束可以保證數據的有效性,但是在進行數據的crud(增加、修改、刪除、查詢)時,都會降低數據庫的性能,所以不推薦使用,那么數據的有效性怎么保證呢?答:可以在邏輯層進行控制
auto_increment 標識該屬性怕值自動增加,這是mysql的sql語句的特色。
數據類型
常用數據類型如下:
整數:int,bit
小數:decimal
字符串:varchar,char
日期時間: date, time, datetime
枚舉類型(enum)
特別說明的類型如下:
decimal表示浮點數,如decimal(5,2)表示共存5位數,小數占2位
char表示固定長度的字符串,如char(3),如果填充'ab'時會補一個空格為'ab '
varchar表示可變長度的字符串,如varchar(3),填充'ab'時就會存儲'ab'
字符串text表示存儲大文本,當字符大于4000時推薦使用
對于圖片、音頻、視頻等文件,不存儲在數據庫中,而是上傳到某個服務器上,然后在表中存儲這個文件的保存路徑
使用數據類型的原則是:
夠用就行,盡量使用取值范圍小的,而不用大的,這樣可以更多的節省存儲空間。
更全的數據類型可以參考:
http://blog.csdn.net/anxpp/article/details/51284106
下面這個可以先不用練習,后面會細講。
顯示表的結構
? 是指查看數據庫中已存在的表的定義。查看表結構的語句包括describe 和 show create table語句。通過這兩個語句,可以查看表的字段名、字段的數據類型和完整性約束條件等。
(1)查看表基本結構語句describe
mysql> describe xueshengdenjibiao;
+----------+-------------+------+-----+---------+-------+
| Field??? | Type????? | Null | Key | Default??? | Extra |
+----------+-------------+------+-----+---------+-------+
| stu_id?? | int(11)???? | NO?? | PRI | NULL??? |?????? |
| stu_name | varchar(20) | YES? |???? | NULL??? |?????? |
| stu_sex? | tinyint(1) | YES? |??? | NULL??? |?????? |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.03 sec)
從查詢的結果中我們看出xueshengdenjibiao中包含三個字段,同時顯示了字段的數據類型(type),是否為空(null),是否為主外鍵(key),默認值(default),和額外信息(extra)。
Describe也可以縮寫成desc.
mysql> desc xueshengdenjibiao;
+----------+-------------+------+-----+---------+-------+
| Field??? | Type??????? | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| stu_id?? | int(11)???? | NO?? | PRI | NULL??? |?????? |
| stu_name | varchar(20) | YES? |???? | NULL??? |?????? |
| stu_sex? | tinyint(1)? | YES? |???? | NULL??? |?????? |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
其結果是一致的。
(2)、查看表詳細結構語句show create table
除了可以查看一些結構外,該語句還可以查看表默認的存儲引擎和字符編碼。
如果直接使用show create table xueshengdenjibiao;這種語句,結果的顯示效果會比較差,尤其是遇到內容比較長的記錄,顯示的結果會很混亂。代碼最后加上\G(要是大寫)參數,可以更加美觀的顯示內容,對內容比較長的記錄效果尤為明顯。
修改表:
修改表名
表名可以在一個數據庫中唯一的確定一張表。數據庫系統通過表名來區分不同的表。
修改表名是通過SQL語句alter table實現的。
mysql> alter table shushengdenjibiao rename xueshengdenjibiao;
Query OK, 0 rows affected (0.11 sec)
也可以這樣寫:
mysql> alter table shushengdenjibiao rename to? xueshengdenjibiao;
Query OK, 0 rows affected (0.00 sec)
其中to是可選參數,其是否在語句中出現不會影響語句的執行。
前面的表名是原先的表名,后面的表名是要修改后的表名。
也可以通過show table來顯示表是否已經被修改。
修改字段名和字段的數據類型
字段的數據類型包括:整數型,浮點型,字符串型,二進制型,日期和時間類型等。
數據類型決定了數據的存儲格式,約束條件和有效范圍。表中的每個字段都有數據類型。
alter table語句也可以修改字段的數據類型。主鍵的字段數據類型不能修改。
上面的datetime是年月日時分鈔,人家問你生日,你連時分秒都說出來了,不適合,所以,我們只需要存儲年月日就可以了。
注意:如果表中有記錄,修改數據類型時應該特別小心。因為,修改數據類型時可能會影響表中的數據。特別值得注意的是,字符類型的字段最好不要改成整數類型、浮點數類型。
注意:Modify和change都可以改變字段的數據類型。不同的是,change可以在改變字段數據類型的同時,改變字段名。如果要使用change修改字段數據類型,那么change后面必需跟兩個同樣的字段名。
添加字段
在表的末尾添加字段:
mysql> alter table xueshengdenjibiao add stu_age int(4) not null;
Query OK, 0 rows affected (0.59 sec)
Records: 0? Duplicates: 0? Warnings: 0
注意:增加字段時,如果能夠加上完整性約束條件,一定要加上。這樣可以保證此字段的安全性,甚至可以提高整個表的數據安全性。因此,添加時要仔細考慮這個問題。
在表的第一個位置增加字段:
默認情況下,新增字段為表的最后一個字段。如果加上first參數,則可以將新增字段設置為表的第一個字段。
mysql> alter table xueshengdenjibiao add stu_num int(5) first;
Query OK, 0 rows affected (0.27 sec)
Records: 0? Duplicates: 0? Warnings: 0
在表的指定位置之后增加字段:
mysql> alter table xueshengdenjibiao add stu_add varchar(20) after stu_phone;
Query OK, 0 rows affected (0.58 sec)
Records: 0? Duplicates: 0? Warnings: 0
一次性添加多個字段:
mysql> alter table q7 add (wuli int(3),huaxue int(3));
Query OK, 10 rows affected (0.32 sec)
Records: 10? Duplicates: 0? Warnings: 0
刪除字段
mysql> alter table xueshengdenjibiao drop stu_age;
Query OK, 0 rows affected (0.31 sec)
Records: 0? Duplicates: 0? Warnings: 0
執行成功后,可以查看一下:
修改字段的排列位置
字段修改到第一個位置
mysql> alter table xueshengdenjibiao modify stu_id int(11) first;
Query OK, 0 rows affected (0.60 sec)
Records: 0? Duplicates: 0? Warnings: 0
字段修改到指定位置
更改表的存儲引擎
Mysql存儲引擎是指mysql數據庫中表的存儲類型。不同的表的類型有著不同的優缺點。在創建表時,存儲引擎就已經設定好了。如果要改變,可以通過重新創建一張表來實現。這樣做是可以達到目的,但必然會影響到表中的數據。而且,操作比較麻煩。在mysql中,也可以通過alter table更改表的存儲引擎的類型。
在修改之前我們可以先查看一下,表的結構:
mysql> show create table xueshengdenjibiao \G
*************************** 1. row ***************************
?????? Table:?xueshengdenjibiao
Create Table: CREATE TABLE `xueshengdenjibiao` (
? `stu_id`?int(11) NOT NULL DEFAULT '0',
? `stu_name`?varchar(20) DEFAULT NULL,
? `stu_xingbie`?varchar(1) DEFAULT NULL,
? `stu_phone`?varchar(20) DEFAULT NULL,
? `stu_num`?int(5) DEFAULT NULL,
? PRIMARY?KEY (`stu_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)
我們來修改一下,看看:
mysql> alter table xueshengdenjibiao engine=myisam;
Query OK, 0 rows affected (0.66 sec)
Records: 0? Duplicates: 0? Warnings: 0
修改后我們在來看看:
mysql> show create table xueshengdenjibiao \G
*************************** 1. row ***************************
?????? Table:?xueshengdenjibiao
Create Table: CREATE TABLE `xueshengdenjibiao` (
? `stu_id`?int(11) NOT NULL DEFAULT '0',
? `stu_name`?varchar(20) DEFAULT NULL,
? `stu_xingbie`?varchar(1) DEFAULT NULL,
? `stu_phone`?varchar(20) DEFAULT NULL,
? `stu_num`?int(5) DEFAULT NULL,
? PRIMARY?KEY (`stu_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
1 row in set (0.00 sec)
如果表中已經l有很多的數據,改變存儲引擎可能會造成一此意料之外的影響。如果一個表中已經存在了很多數據,最好不要輕易更改其存儲引擎。
刪除表的外鍵約束
外鍵是一個特殊字段,其將某一表與其父表建立關聯關系。在創建表的時候,外鍵約束就已經設定好了。由于特殊需要,與父表之間的關聯關系需要去除,要求刪除外鍵約束。
mysql> alter table q3 drop foreign key c_de;
Query OK, 0 rows affected (0.27 sec)
Records: 0? Duplicates: 0? Warnings: 0
原來的外鍵變成了普通鍵key,操作成功。
刪除自增長的主鍵
先刪除自增長在刪除主鍵
Alter table 表名 change id id int(10);????? //刪除自增長
Alter table 表名 drop primary key;?????????? //刪除主建
刪除表
刪除表時,會刪除表中的所有數據。因此,在刪除表時要特別注意。最穩妥的做法是先將表中所有的數據備份出來,然后在刪除表。一旦刪除表后發現造成了損失,可以通過備份的數據還原表,以便將損失降低到最小。如果在創建表時可能存在外鍵約束,一些表成為了與之關聯的表的父表。要刪除這些父表,情況比較復雜。
刪除沒有被關聯的普通表
mysql> drop table shushengdenjibiao2;
Query OK, 0 rows affected (0.08 sec)
刪除被其他表關聯的父表
在前面我們講解了創建表時設置表的外鍵。這樣就使數據庫中的某些表之間建立了關聯關系。一些表成為了父表,這些表被其子表關聯著。要刪除這些父表,情況不像上一節那么簡單。
最簡單直接的辦法是先刪除子表,然后再刪除父表。但這樣可能會影響子表的其他數據;另一種辦法是,先刪除子表的外鍵約束,然后再刪除父表。這種方法,不會影響子表的其他數據,可以保證數據庫的安全。因此我們來重點說一下這種方法。
mysql> show create table example \G
*************************** 1. row ***************************
?????? Table:?example
Create Table: CREATE TABLE `example` (
? `stu_id`?varchar(20) DEFAULT NULL,
? `stu_shuxue`?int(20) DEFAULT NULL,
? `stu_yuwen`?int(20) DEFAULT NULL,
? KEY?`c_ff` (`stu_id`),
? CONSTRAINT?`c_ff` FOREIGN KEY (`stu_id`) REFERENCES `example1` (`stu_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)
執行刪除代碼:
mysql> alter table example drop foreign key c_ff;
Query OK, 0 rows affected (0.72 sec)
Records: 0? Duplicates: 0? Warnings: 0
再來查看一下:
mysql> show create table example \G
*************************** 1. row ***************************
?????? Table:?example
Create Table: CREATE TABLE `example` (
? `stu_id`?varchar(20) DEFAULT NULL,
? `stu_shuxue`?int(20) DEFAULT NULL,
? `stu_yuwen`?int(20) DEFAULT NULL,
? KEY?`c_ff` (`stu_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)
表已經不存在外鍵了(foreign key),原來的外鍵變成了普通鍵(key)。
總結
以上是生活随笔為你收集整理的mysql显示表已存在_MySQL数据库与数据表的相关操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: carsim中质心加速度_振动CAE分析
- 下一篇: pythonista_Pythonist