MySQL-數據庫和表的基本操作

數據庫和表的基本操作

數據庫基礎知識

創建數據庫

CREATE DATABASE 數據庫名稱 ;

查看數據庫(顯示數據庫名列表)

SHOW DATABASES ;

查看某數據庫信息(顯示創建的信息)

SHOW CREATE DATABASE 數據庫名稱 ;

修改數據庫編碼

ALTER DATABASE 數據庫名稱 
DEFAULT CHARACTER SET 編碼方式 COLLATE 編碼方式_bin ;

刪除數據庫

DROP DATABASE 數據庫名稱 ;

數據類型

整數類型
數據類型 位元組數 無符號數取值範圍 有符號數取值範圍
TINYINT 1 0~255 -128~127
SAMLLINT 2 0~65535 -32768~32767
MEDIUMINT 3 0~16777215 -8388608~8388607
INT 4 0~4294967295 -2147483648~2147483647
BIGINT 5 0~18446744073709551615 -9223372036854775808~9223372036854775807
浮點數類型和定點數類型

單精度浮點數類型FLOAT,4位元組;
雙精度浮點類型DOUBLE,8位元組;
定點數類型DECIMAL(D,B),M+2位元組,M表示數據的長度,D表示小數點後的長度。

日期與時間類型
數據類型 位元組數 取值範圍 日期格式 零值 補充
YEAR 1 1901~2155 YYYY 0000 字符串格式’0’表示2000,數字格式0表示0000
DATE 4 1000-01-01 YYYY-MM-DD 0000-00-00 使用CURRENT_DATE或者NOW()表示當前系統日期
TIME 3 -838:59:59~838:59:59 HH:MM:SS 00:00:00 可以輸如’D HH:MM:SS’字符串,D表示0~34之間的值,相當於D*24+HH .使用CURRENT_DATE或者NOW()表示當前系統日期
DATETIME 8 1000-01-01 00:00:00~9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 0000-00-00 00:00:00 使用NOW()表示當前系統日期
TIMESTAMP 4 1970-01-01 00:00:01~2038-01-19 03:14:07 YYYY-MM-DD HH:MM:SS 0000-00-00 00:00:00 使用CURRENT_TIMESTAMP來輸入當前系統日期;輸入NULL時系統會輸入系統當前日期和時間;無任何輸入時,系統會輸入系統當前日期和時間。
字符串和二進制類型
數據類型 類型說明 補充
CHAR 用於表示固定長度的字符串
VARCHAR 用於表示可變長度的字符串
BINARY 用於表示固定長度的二進制數據
VARBINARY 用於表示固定長度的二進制數據
BLOB 用於表示二進制大數據
TEXT 用於表示大文本數據
ENUM 表示枚舉類型,只能存儲一個枚舉字符串值
SET 表示字符串對象,可以有零或多個值
BIT 表示位字段類型

數據表的基本操作

選擇數據庫

USE 數據庫名 ;

創建數據表

CREATE TABLE 數據表名
(
字段名1 數據類型[完整性約束條件] ,
字段名2 數據類型[完整性約束條件] ,
...
字段名n 數據類型[完整性約束條件]
) ;

查看此數據庫下的表(顯示錶名列表)

SHOW TABLES ;

查看數據表(顯示定義語句,字符編碼)

SHOW CREATE TABLE 表名 ;

整齊的查看數據表(顯示定義語句,字符編碼)

SHOW CREATE TABLE 表名\G

查看數據表(顯示字段信息)

DESCRIBE 表名 ;

或簡寫為:

DESC 表名 ;

執行結果如下:

+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(20)     | YES  |     | NULL    |       |
| grade    | float       | YES  |     | NULL    |       |
| username | varchar(10) | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

(1).NULL:表示該列是否可以存儲NULL值;
(2).Key:表示該列是否已經編製索引;
(3).Default:表示該列是否有默認值;
(4).Extra:表示獲取到的與給定列相關的附加信息。
修改表名(to可以省略)

ALTER TABLE 舊錶名 
RENAME [To] 新表名 ;

修改字段名

ALTER TABLE 表名 
CHANGE 舊字段名 新字段名 新數據類型 ;

修改字段的數據類型

ALTER TABLE 表名
MODIFY 字段名 數據類型 ;

添加字段

ALTER TABLE 表名 
ADD 新字段名 數據類型
[約束條件][FIRST | AFTER 已存在字段名]

上述格式中,「FIRST」為可選參數,用於將新加字段設為第一個字段,「AFTER」也為可選參數,用於將新加字段添加到指定「已存在字段名」的後面。
修改字段的排列位置
修改為第一個字段:

ALTER TABLE 表名
MODIFY 字段名1 數據類型 FIRST;

將字段名1插入到字段名2之後:

ALTER TABLE 表名
MODIFY 字段名1 數據類型 AFTER 字段名2 ;

刪除字段

ALTER TABLE 表名
DROP 字段名 ;

刪除數據表

DROP TABLE 表名 ;

表的約束

約束條件 說明
PRIMARY KEY 主鍵約束,用於唯一標識對應的記錄
FOREIGN KEY 外鍵約束
NOT NULL 非空約束
UNIQUE 唯一性約束
DEFAULT 默認值約束,用於設置字段的默認值
AUTO_INCREMENT 字段值自動增加

舉個例子:
id為主鍵且值自動增加,name字段值唯一,grade字段默認值為0。

CREATE TABLE TB_GRADE
(
id INT(10) PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20) UNIQUE,
grade FLOAT DEFAULT 0
);

索引

創建表的時候創建索引
CREATE TABLE 表名 
(
字段名 數據類型[完整性約束條件] ,
字段名 數據類型[完整性約束條件] ,
...
字段名 數據類型[完整性約束條件] ,
[ UNIQUE | FULLTEXT | SPATIAL ] INDEX | KEY
            [ 別名 ] (字段名1 [ (長度)] [ ASC | DESC] )
) ;

上述相關語法解釋:
(1)UNIQUE:可選參數,表示唯一索引。
(2)FULLTEXT:可選參數,表示全文索引。
(3)SPATIAL:可選參數,表示空間索引。
(4)INDEX和KEY:用來表示字段的索引,二者選一即可。
(5)別名:可選參數,表示創建的索引名稱。
(6)字段名1:指定索引對應字段的名稱(創建多列索引時,用逗號隔開)。
(7)長度:可選參數,用於表示索引的長度。
(8)ASC和DESC:可選參數,ASC代表升序排列,DESC代表降序排列。

在已經存在的表上創建索引

方法一:

CREATE [ UNIQUE | FULLTEXT | SPATIAL ] INDEX 索引名
ON 表名 (字段名1 [ (長度)] [ ASC | DESC] ) ;

方法二:

ALTER TABLE 表名
ADD [ UNIQUE | FULLTEXT | SPATIAL ] INDEX 索引名 (字段名1 [ (長度)] [ ASC | DESC] ) ;
刪除索引

方法一:

ALTER TABLE 表名
DROP INDEX 索引名 ;

方法二:

DROP INDEX 索引名
ON 表名 ;
Tags: