mysql資料庫及表的基本操作
阿新 • • 發佈:2020-11-17
1. 資料庫操作
1.1 建立資料庫
# 建立資料庫 mysql> create database db_test; # 檢視建立好的資料庫 mysql> show create database db_test\G *************************** 1. row *************************** Database: db_test Create Database: CREATE DATABASE `db_test` /*!40100 DEFAULT CHARACTER SET utf8 */ # 使用db_test資料庫 mysql> use db_test;
1.2 刪除資料庫
mysql> drop database db_test;
1.3 顯示資料庫資訊
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | | test_msyql8 | +--------------------+ 6 rows in set (0.01 sec)
2. 資料庫表操作
2.1 建立資料庫表
建立資料庫表的基本語法規則如下:
2.1.1 表的基本建立
# 基本建立tb_emp1表 mysql> create table tb_emp1 ( id int(11), name varchar(25), deptId int(11), salary float ); Query OK, 0 rows affected (0.34 sec) # 檢視所有的表 mysql> show tables; +-------------------+ | Tables_in_db_test | +-------------------+ | tb_emp1 | +-------------------+ 1 row in set (0.01 sec)
2.1.2 對錶欄位進行約束
方式一:
CREATE TABLE tb_emp2
(
id INT(11) PRIMARY KEY AUTO_INCREMENT, # 主鍵,自增約束(自增欄位必須為整數)
name VARCHAR(25) NOT NULL, # 不為空約束
deptId INT(11) UNIQUE, # 唯一性約束
salary FLOAT DEFAULT 0.0 # 預設值約束
);
方式二:
CREATE TABLE tb_emp3
(
id INT(11) AUTO_INCREMENT,
NAME VARCHAR(25) NOT NULL,
deptId INT(11),
salary FLOAT DEFAULT 0.0,
PRIMARY KEY(id),# 主鍵約束
CONSTRAINT costum_name_for_unique UNIQUE(deptId),# 唯一性約束
CONSTRAINT costum_name_for_foreign_key FOREIGN KEY (deptId) REFERENCES tb_emp2(id)
# 外來鍵約束:定義名稱為costum_name_for_foreign_key外來鍵,tb_emp3的deptId作為外來鍵關聯到tb_emp2表的主 鍵id
);
2.1.3 查看錶的結構
# 查看錶的基本結構:desc 表名; 或 describe 表名;
mysql> describe tb_emp3;
+--------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(25) | NO | | NULL | |
| deptId | int(11) | YES | UNI | NULL | |
| salary | float | YES | | 0 | |
+--------+-------------+------+-----+---------+----------------+
4 rows in set (0.01 sec)
# 查看錶詳細結構: 末尾+\G目的是清晰直觀的顯示結果
mysql> show create table tb_emp3\G
*************************** 1. row ***************************
Table: tb_emp3
Create Table: CREATE TABLE `tb_emp3` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(25) NOT NULL,
`deptId` int(11) DEFAULT NULL,
`salary` float DEFAULT '0',
PRIMARY KEY (`id`),
UNIQUE KEY `costum_name_for_unique` (`deptId`),
CONSTRAINT `costum_name_for_foreign_key` FOREIGN KEY (`deptId`) REFERENCES `tb_emp2` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
2.2 修改資料表
2.2.1 修改表名
ALTER TABLE <舊錶名> RENAME [TO] <新表名>;
TO為可選引數,選不選無所謂
mysql> alter table tb_emp2 rename tb_emp4;
2.2.2 修改欄位資訊
ALTER TABLE <表名> MODIFY <欄位名> <資料型別>
ALTER TABLE <表名> CHANGE <舊欄位名> <新欄位名> <新資料型別>;
# 修改欄位name的大小為100字元
mysql> alter table tb_emp4 modify name varchar(100);
Query OK, 0 rows affected (0.92 sec)
# 修改欄位名稱:將name修改為emp_name並重新指定大小為varchar(50)
mysql> alter table tb_emp4 change name emp_name varchar(50);
Query OK, 0 rows affected (0.75 sec)
2.2.3 新增欄位
ALTER TABLE <表名> ADD <新欄位名> <資料型別> [約束條件] [FIRST| AFTER已存在欄位名];
新欄位名為需要新增的欄位的名稱;“FIRST”為可選引數,其作用是將新新增的欄位設定為表的第一個欄位;“AFTER”為可選引數,其作用是將新新增的欄位新增到指定的“已存在欄位名”的後面。
# 新增欄位managerId
mysql> alter table tb_emp4 add managerId int(10);
Query OK, 0 rows affected (0.61 sec)
# 檢視新增結果
mysql> desc tb_emp4;
+-----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| emp_name | varchar(50) | YES | | NULL | |
| deptId | int(11) | YES | UNI | NULL | |
| salary | float | YES | | 0 | |
| managerId | int(10) | YES | | NULL | |
+-----------+-------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)
2.2.4 修改欄位的排列位置
ALTER TABLE <表名> MODIFY <欄位1> <資料型別> FIRST| AFTER <欄位2>;
2.2.5 刪除欄位
ALTER TABLE <表名> DROP <欄位名>;
mysql> alter table tb_emp4 drop managerId;
Query OK, 0 rows affected (0.69 sec)
2.2.6 修改儲存引擎
ALTER TABLE <表名> ENGINE=<更改後的儲存引擎名>;
# mysql8預設使用InnoDB儲存引擎
mysql> alter table tb_emp1 engine=MyISAM;
# 查看錶的資訊
mysql> show create table tb_emp1\G
*************************** 1. row ***************************
Table: tb_emp1
Create Table: CREATE TABLE `tb_emp1` (
`id` int(11) DEFAULT NULL,
`name` varchar(25) DEFAULT NULL,
`deptId` int(11) DEFAULT NULL,
`salary` float DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
2.2.7 刪除表的外來鍵約束
ALTER TABLE <表名> DROP FOREIGN KEY <外來鍵約束名>;
mysql> alter table tb_emp3 drop foreign key costum_name_for_foreign_key;
2.3 刪除資料庫表
2.3.1 刪除沒有被關聯的表
DROP TABLE [IF EXISTS] 表1,表2,…表n;
mysql> drop table if exists tb_emp1;
2.3.2 刪除被關聯的表
# 相關聯的兩個表為主表和子表,刪除的情況有
# 1.先刪除子表,後刪除主表
# 2.刪除主表,保留子表:可以先刪除兩個表之間的外來鍵關係,後執行刪除操作。