我主要是在維護OpenStack云平臺的時候會涉及MySQL數據庫的操作,這里就跟大家分享一下常用的簡單命令,也為自己做個小練習。
? ? 1.登錄MySQL數據庫
mysql -h localhost -u root -p 123456
其中,-h:mysql服務器的IP地址或主機名,如果是本機登錄,該選項可以省略;
? ? ? ? ??-u:登錄用戶名
? ? ? ? ? -p:登錄用戶對應的登錄密碼
? ?
2.查看數據庫
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| test |
+--------------------+
3 rows in set (0.00 sec)
3.刪除數據庫
命令格式:DROP DATABASE 數據庫名;
mysql> drop database test;
Query OK, 0 rows affected (0.00 sec)mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
+--------------------+
2 rows in set (0.00 sec)
4.創建數據庫
命令格式:CREATE DATABASE 新建數據庫名;
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
+--------------------+
2 rows in set (0.00 sec)mysql> create database test;
Query OK, 1 row affected (0.00 sec)mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| test |
+--------------------+
3 rows in set (0.00 sec)
? ?
5.選定操作數據庫
命令格式:USE 數據庫名;
mysql> use test;
Database changed
? ?
?6.在選定的數據庫中創建表單
? ? table的創建其實不是個簡單的操作,涉及實體完整性、參照完整性等條件,下面對常用命令進行下介紹。
1)創建table
命令格式:CREATE TABLE 表名
? ? ? ? ? ? ? ->(
? ? ? ? ? ? ? ->列名1 數據類型(完整性約束條件),
? ? ? ? ? ? ? ->列名2 數據類型(完整性約束條件),
? ? ? ? ? ? ? ->列名3 數據類型(完整性約束條件)
? ? ? ? ? ? ? ->);
mysql> create table students(id int(10),name char(20),sex char(10));
Query OK, 0 rows affected (0.07 sec)mysql> create table course(id int(10),name char(20));
Query OK, 0 rows affected (0.07 sec)
上述示例中,完整性約束條件為數據長度,屬于比較簡單的一種。
2)完整性約束條件說明
PRIMARY KEY | 標識該屬性為該表的主鍵,可以唯一標識一組記錄 |
FOREIGN KEY | 標識該屬性為該表的外鍵,是與該表形成關聯的某一表的主鍵 |
NOT NULL | 標識該屬性的值不能為空 |
UNIQUE | 標識該屬性的值是唯一的 |
AUTO_INCREMENT | 標識該屬性的值是自動增加的 |
DEFAULT | 為該屬性設置默認值 |
?
?
?
?
?
?
3)設置table的主鍵
單字段主鍵格式:列名 數據類型 PRIMARY KEY,或者如多字段主鍵格式
mysql> create table course(id int(10) PRIMARY KEY,name char(20)); Query OK, 0 rows affected (0.08 sec)
或者
mysql>create table course(id int(10),name char(20),PRIMARY KEY(id));
Query OK, 0 rows affected (0.08 sec)
多字段主鍵格式:PRIMARY KEY(列名1,列名2,列名3......)
mysql> create table num
-> (
-> num_id int AUTO_INCREMENT NOT NULL,
-> stu_id int(10) NOT NULL,
-> name char(20) NOT NULL,
-> PRIMARY KEY(num_id,stu_id)
-> )
-> ;
Query OK, 0 rows affected (0.03 sec)
為已存在的表格刪除主鍵:alter table 表名 drop PRIMARY KEY?
mysql> alter table score drop PRIMARY KEY; Query OK, 0 rows affected (0.04 sec) Records: 0 Duplicates: 0 Warnings: 0
為已存在的表設置或重新設置主鍵:alter table 表名 add PRIMARY KEY(屬性1,屬性2......);
mysql> alter table score add PRIMARY KEY (stu_id,cour_id); Query OK, 0 rows affected (0.06 sec) Records: 0 Duplicates: 0 Warnings: 0
4)設置table的外鍵
設置外鍵命令格式:CONSTRAINT 外鍵別名 ADD FOREIGN KEY(屬性1,屬性2,....屬性n) REFERENCES 主表名(屬性1',屬性2',...屬性n');
此處只是一個簡單的外鍵設置命令,下一篇將會詳細介紹外鍵約束設置
mysql> CREATE TABLE teacher (-> id int PRIMARY KEY,-> stu_id int,-> name varchar(20),-> CONSTRAINT STUID FOREIGN KEY(stu_id) REFERENCES student1(id)-> ); Query OK, 0 rows affected (0.00 sec)
刪除外鍵命令格式:ALTER TABLE 表名 DROP FOREINGN KEY 外鍵名;
mysql> alter table teacher drop foreign key STUID; Query OK, 0 rows affected (0.04 sec) Records: 0 Duplicates: 0 Warnings: 0
添加外鍵命令格式:ALTER TABLE 從表名 CONSTRAINT 外鍵別名 FOREIGN KEY(從表屬性1,屬性2,....屬性n) REFERENCES 主表名(屬性1',屬性2',...屬性n');
5)設置表的非空約束
簡單的說就是不讓這個屬性的值為空,不填的話就會報錯
格式:屬性名 數據類型 NOT NULL
6)設置表的唯一性約束
就是這個屬性的值是不能重復的
格式:屬性名 數據類型 UNIQUE
7)設置表的屬性值自動增加
AUTO_INCREMENT約束的字段可以是任何整數類型(TINYINT、SMALLINT、INT和BIGINT),在默認的情況下,該字段的值是從1開始自增
格式:屬性名 數據類型 AUTO_INCREMENT
8)設置表的屬性的默認值
格式:屬性名 數據類型 DEFAULT 默認值
mysql> CREATE TABLE student3 (-> id int PRIMARY KEY AUTO_INCREMENT,-> teacher_id int UNIQUE,-> name varchar(20) NOT NULL,-> sex varchar(10) DEFAULT 'male'-> ); Query OK, 0 rows affected (0.01 sec)
7.查看指定數據庫的所有表單
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| course |
| students |
+----------------+
2 rows in set (0.00 sec)
8. 刪除指定數據庫中的指定表單
執行該命令之前,必須使用USE命令選定數據庫,否則會出現會出現“No database selected”的錯誤。
命令格式:DROP TABLE 表單名稱;
mysql> drop table course;
Query OK, 0 rows affected (0.00 sec)mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| students |
+----------------+
1 row in set (0.00 sec)
9.查看表結構
1)查看表的基本結構
命令格式:DESCRIBE 表名;
mysql> DESCRIBE num; +--------+----------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------+----------+------+-----+---------+----------------+ | num_id | int(11) | NO | PRI | NULL | auto_increment | | stu_id | int(10) | NO | PRI | NULL | | | name | char(20) | NO | | NULL | | +--------+----------+------+-----+---------+----------------+ 3 rows in set (0.00 sec)
2)查看表的詳細結構
命令格式:SHOW CREATE TABLE 表名
mysql> show create table num; +-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | num | CREATE TABLE `num` (`num_id` int(11) NOT NULL AUTO_INCREMENT,`stu_id` int(10) NOT NULL,`name` char(20) NOT NULL,PRIMARY KEY (`num_id`,`stu_id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 | +-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec)