日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql显示表已存在_MySQL数据库与数据表的相关操作

發布時間:2025/3/12 数据库 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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数据库与数据表的相关操作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。