day 37 資料庫MySQL基本操作
1、建立資料庫
1.1 語法
CREATE DATABASE 資料庫名 charset utf8;
1.2 資料庫命名規則
可以由字母、數字、下劃線、@、#、$
區分大小寫
唯一性
不能使用關鍵字如 create select
不能單獨使用數字
最長128位
# 基本上跟python或者js的命名規則一樣
檢視資料庫
show databases;
show create database db1;
select database();
選擇資料庫
USE 資料庫名
刪除資料庫
DROP DATABASE 資料庫名;
修改資料庫
alter database db1 charset utf8;
二 . 表操作
建立表:
mysql> create database db1 charset utf8;
mysql> use db1;
mysql> create table t1(
-> id int,
-> name varchar(50),
-> sex enum('male','female'),
-> age int(3)
-> );
mysql> show tables; #檢視db1庫下所有表名
mysql> desc t1;
+-------+-----------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-----------------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(50) | YES | | NULL | |
| sex | enum('male','female') | YES | | NULL | |
| age | int(3) | YES | | NULL | |
+-------+-----------------------+------+-----+---------+-------+
mysql> select id,name,sex,age from t1;
Empty set (0.00 sec)
mysql> select * from t1;
Empty set (0.00 sec)
mysql> select id,name from t1;
Empty set (0.00 sec)
程式碼示例
#語法: create table 表名( 欄位名1 型別[(寬度) 約束條件], 欄位名2 型別[(寬度) 約束條件], 欄位名3 型別[(寬度) 約束條件] );
#注意: 1. 在同一張表中,欄位名是不能相同 2. 寬度和約束條件可選、非必須,寬度指的就是欄位長度約束,例如:char(10)裡面的10 3. 欄位名和型別是必須的
插入表格的資料:
mysql> insert into t1 values -> (1,'chao',18,'male'), -> (2,'sb',81,'female') -> ; mysql> select * from t1; +------+------+------+--------+ | id | name | age | sex | +------+------+------+--------+ | 1 | chao | 18 | male | | 2 | sb | 81 | female | +------+------+------+--------+ mysql> insert into t1(id) values -> (3), -> (4); mysql> select * from t1; +------+------+------+--------+ | id | name | age | sex | +------+------+------+--------+ | 1 | chao | 18 | male | | 2 | sb | 81 | female | | 3 | NULL | NULL | NULL | | 4 | NULL | NULL | NULL | +------+------+------+--------+
查看錶結構:
mysql> describe t1; #查看錶結構,可簡寫為:desc 表名
+-------+-----------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-----------------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(50) | YES | | NULL | |
| sex | enum('male','female') | YES | | NULL | |
| age | int(3) | YES | | NULL | |
+-------+-----------------------+------+-----+---------+-------+
mysql> show create table t1\G; #查看錶詳細結構,可加\G
查看錶結構的方法
注意:在MySQL裡面是不區分大小寫的,比如如果你將你的表名t1輸入成T1是完全沒用的,因為在資料庫裡面的表名都是小寫的。
修改表的操作:
1. 修改儲存引擎 mysql> alter table service -> engine=innodb; 2. 新增欄位 mysql> alter table student10 -> add name varchar(20) not null, -> add age int(3) not null default 22; mysql> alter table student10 -> add stu_num varchar(10) not null after name; //新增name欄位之後 mysql> alter table student10 -> add sex enum('male','female') default 'male' first; //新增到最前面 3. 刪除欄位 mysql> alter table student10 -> drop sex; mysql> alter table service -> drop mac; 4. 修改欄位型別modify mysql> alter table student10 -> modify age int(3); mysql> alter table student10 -> modify id int(11) not null primary key auto_increment; //修改為主鍵 5. 增加約束(針對已有的主鍵增加auto_increment) mysql> alter table student10 modify id int(11) not null primary key auto_increment; ERROR 1068 (42000): Multiple primary key defined mysql> alter table student10 modify id int(11) not null auto_increment; Query OK, 0 rows affected (0.01 sec) Records: 0 Duplicates: 0 Warnings: 0 6. 對已經存在的表增加複合主鍵 mysql> alter table service2 -> add primary key(host_ip,port); 7. 增加主鍵 mysql> alter table student1 -> modify name varchar(10) not null primary key; 8. 增加主鍵和自動增長 mysql> alter table student1 -> modify id int not null primary key auto_increment; 9. 刪除主鍵 a. 刪除自增約束 mysql> alter table student10 modify id int(11) not null; b. 刪除主鍵 mysql> alter table student10 -> drop primary key;