1. 連接MySQL數(shù)據(jù)庫(kù)
- 打開命令行終端程序梅垄,windows CMD(首先要在系統(tǒng)環(huán)境變量中配置好MySQL的路徑容握,具體方法請(qǐng)自行百度)或者使用cmder軟件刷喜,或者在Navicat for MySQL中F6打開終端
- 輸入命令
mysql -uroot -p
輸入mysql的密碼回車進(jìn)入數(shù)據(jù)庫(kù)
或者輸入mysql -uroot -pxxx
ormysql -uroot -pxxx -A
直接進(jìn)入數(shù)據(jù)庫(kù)妥泉。
root
表示你進(jìn)入數(shù)據(jù)庫(kù)使用的用戶名,xxx
表示對(duì)應(yīng)的密碼,-A
表示切換數(shù)據(jù)庫(kù)的時(shí)候不會(huì)預(yù)讀取數(shù)據(jù)庫(kù)信息吸奴,這樣能夠更快地切換數(shù)據(jù)庫(kù)共虑。
2.查看mysql里面都有哪些數(shù)據(jù)庫(kù)
show databases;
//顯示MySQL/data/目錄下所有文件夾
3. 創(chuàng)建數(shù)據(jù)庫(kù)test
create database <tablename> charset utf8;
//注意創(chuàng)建的數(shù)據(jù)庫(kù)的名稱只能以字母或下劃線開頭(推薦使用小寫字母愧怜,windows下不區(qū)分大小寫,即使以大寫字母命名妈拌,創(chuàng)建之后還是小寫) Linux中區(qū)分大小寫
4. 刪除數(shù)據(jù)庫(kù)
drop database test;
//注意拥坛,刪除數(shù)據(jù)庫(kù)會(huì)把里面的表也一起刪除
5. 切換數(shù)據(jù)庫(kù)
use test;
//切換到test數(shù)據(jù)庫(kù)
6. 查看本數(shù)據(jù)庫(kù)下所有表
show tables;
7. 查看tag表中的所有數(shù)據(jù)
select * from tag;
8. 查詢表結(jié)構(gòu)
desc tag;
//查詢tag表的表結(jié)構(gòu)
查看系統(tǒng)字符集設(shè)置變量
mysql> show variables like "%character%"; # 查看系統(tǒng)字符集設(shè)置變量
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.01 sec)
9.創(chuàng)建一張表,表名為stu,包含主鍵尘分,學(xué)生姓名猜惋,性別,年齡培愁,班級(jí)id
create table stu(id int primary key auto_increment,name char(10) not null default '',sex enum('男','女') not null default '男',cid tinyint unsigned not null default 1);
這里的name char(10)表示name這個(gè)字段最多有10個(gè)字符著摔,不區(qū)分漢字字母數(shù)字。
注釋:建表的注意事項(xiàng)定续。
- 最好每一張表都設(shè)主鍵谍咆,根據(jù)表可能要存儲(chǔ)的數(shù)據(jù)量來(lái)選擇盡可能小的數(shù)據(jù)類型禾锤。主鍵自增。其他字段能用數(shù)值類型的不要用字符串類型摹察。
int
后如果不限定長(zhǎng)度恩掷,不限定非負(fù),默認(rèn)為int(11)
供嚎;tinyint
默認(rèn)為tinyint(3)
- 性別字段用
enum
類型黄娘,enum
后面的括號(hào)內(nèi)是字符串,要加引號(hào)查坪,但是MySQL處理enum
是按數(shù)值類型儲(chǔ)存的寸宏,所以比直接用字符串要快。- 盡量不要有NULL值偿曙,
text
類型(文字內(nèi)容字段的類型比如 BLOB, TEXT, GEOMETRY or JSON)不能有默認(rèn)值
查看表生成的DDL:(數(shù)據(jù)定義語(yǔ)言(Data Definition Language))
show create table stu;
10. 往stu表中添加一條數(shù)據(jù)
insert into stu set name = '小明';
顯示如下:
mysql> insert into stu set name = '小明';
Query OK, 1 row affected (0.11 sec)
mysql> select * from stu;
+----+------+-----+-----+
| id | name | sex | cid |
+----+------+-----+-----+
| 1 | 小明 | 男 | 1 |
+----+------+-----+-----+
1 row in set (0.00 sec)
因?yàn)橹麈Iid自增氮凝,sex和cid都有默認(rèn)值,所以只填寫name值望忆,其它項(xiàng)也不會(huì)有null值
一次填寫多個(gè)字段罩阵,中間用,
分割,如
mysql> insert into stu set name = '小紅',sex = '女',cid = 2;
Query OK, 1 row affected (0.12 sec)
mysql> select * from stu;
+----+------+-----+-----+
| id | name | sex | cid |
+----+------+-----+-----+
| 1 | 小明 | 男 | 1 |
| 2 | 小紅 | 女 | 2 |
+----+------+-----+-----+
2 rows in set (0.00 sec)
一次添加多條多個(gè)字段可以使用這樣的語(yǔ)句
insert into stu (name,sex,cid) value ('小剛','男',1),('Lucy','女',3),('李雷','男',1),('Lily','女',2);
//句中的value
也可以用values
11. 復(fù)制表操作
- 復(fù)制表結(jié)構(gòu)
create table stu1 like stu;
//按stu
表的結(jié)構(gòu)創(chuàng)建一個(gè)stu1
表启摄,
看一下效果:
mysql> desc stu1;
+-------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | char(10) | NO | | | |
| sex | enum('男','女') | NO | | 男 | |
| cid | int(10) unsigned | NO | | 1 | |
+-------+------------------+------+-----+---------+----------------+
4 rows in set (0.01 sec)
mysql> desc stu;
+-------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | char(10) | NO | | | |
| sex | enum('男','女') | NO | | 男 | |
| cid | int(10) unsigned | NO | | 1 | |
+-------+------------------+------+-----+---------+----------------+
4 rows in set (0.01 sec)
兩張表具有相同的表結(jié)構(gòu)
- 復(fù)制表數(shù)據(jù)
insert into stu1 select * from stu;
//把表stu
中的數(shù)據(jù)全部添加到stu1
中 - 同時(shí)復(fù)制表結(jié)構(gòu)和表數(shù)據(jù)
create table stu2 select * from stu;
# 這種方法會(huì)丟失字段的主鍵屬性和主鍵自增屬性稿壁。還需要手動(dòng)修改添加這些屬性(如果原表有的話)
alter table stu2 add primary key(id)
alter table stu2 modify id int unsigned auto_increment;
復(fù)制表結(jié)構(gòu)還有2種方法,比如
create table c1 select*from stu limit 0
# 只復(fù)制結(jié)構(gòu)歉备,不用數(shù)據(jù)
create table c2 select*from stu where 1=2
# where 之后跟一個(gè)false,或者bool為false的運(yùn)算式傅是,也不會(huì)復(fù)制表數(shù)據(jù)。
同樣這兩種方法會(huì)丟失表的主鍵和自增屬性(不推薦)
推薦方式是分2步蕾羊,先復(fù)制表結(jié)構(gòu)喧笔,再?gòu)?fù)制表數(shù)據(jù)」暝伲或者備份表书闸,再導(dǎo)入。
12. 刪除表中的數(shù)據(jù)
- 刪除1條數(shù)據(jù)
mysql> select * from stu2;
+----+------+-----+-----+
| id | name | sex | cid |
+----+------+-----+-----+
| 1 | 小明 | 男 | 1 |
| 2 | 小紅 | 女 | 2 |
| 15 | 小剛 | 男 | 1 |
| 16 | Lucy | 女 | 3 |
| 17 | 李雷 | 男 | 1 |
| 18 | Lily | 女 | 2 |
+----+------+-----+-----+
6 rows in set (0.00 sec)
mysql> delete from stu2 where id = 15;//刪除id為15的這條數(shù)據(jù)
Query OK, 1 row affected (0.13 sec)
###### 8. 有如下表利凑,寫出顯示各班及格和不及格人數(shù)的sql
mysql> select * from stu2;
+----+------+-----+-----+
| id | name | sex | cid |
+----+------+-----+-----+
| 1 | 小明 | 男 | 1 |
| 2 | 小紅 | 女 | 2 |
| 16 | Lucy | 女 | 3 |
| 17 | 李雷 | 男 | 1 |
| 18 | Lily | 女 | 2 |
+----+------+-----+-----+
- 一次刪除多條數(shù)據(jù)
mysql> delete from stu2 where id in (1,2,18);
Query OK, 3 rows affected (0.14 sec)
mysql> select * from stu2;
+----+------+-----+-----+
| id | name | sex | cid |
+----+------+-----+-----+
| 16 | Lucy | 女 | 3 |
| 17 | 李雷 | 男 | 1 |
+----+------+-----+-----+
2 rows in set (0.00 sec)
- 如果不加where限定浆劲,會(huì)刪除表中所有數(shù)據(jù)
mysql> delete from stu2;
Query OK, 2 rows affected (0.12 sec)
mysql> select * from stu2;
Empty set (0.00 sec)
- 清空表數(shù)據(jù)用
truncate
+表名,如:
mysql> select * from stu1;
+----+------+-----+-----+
| id | name | sex | cid |
+----+------+-----+-----+
| 1 | 小明 | 男 | 1 |
| 2 | 小紅 | 女 | 2 |
| 15 | 小剛 | 男 | 1 |
| 16 | Lucy | 女 | 3 |
| 17 | 李雷 | 男 | 1 |
| 18 | Lily | 女 | 2 |
+----+------+-----+-----+
6 rows in set (0.00 sec)
mysql> truncate stu1;//清空表stu1的所有數(shù)據(jù)
Query OK, 0 rows affected (0.08 sec)
mysql> select * from stu1;
Empty set (0.00 sec)
-
truncate
和delete from+表名
清空表的區(qū)別
delete from+表名
清空表數(shù)據(jù)只是把表中的數(shù)據(jù)全部刪除哀澈,還會(huì)保留主鍵自增的位置牌借,比如當(dāng)前表中最后一條數(shù)據(jù)的id為20,清空表之后割按,再添加1條數(shù)據(jù)走哺,那么新增的那條數(shù)據(jù)的id為21.而如果用truncate
清空表,新增數(shù)據(jù)的id會(huì)從1開始。
13.修改表操作
- 修改表名
alter table 舊表名 rename 新表名;
mysql> show tables;
+---------------+
| Tables_in_stu |
+---------------+
| stu |
| stu1 |
| stu2 |
+---------------+
3 rows in set (0.00 sec)
mysql> alter table stu rename student;
Query OK, 0 rows affected (0.09 sec)
mysql> show tables;
+---------------+
| Tables_in_stu |
+---------------+
| stu1 |
| stu2 |
| student |
+---------------+
3 rows in set (0.00 sec)
- 修改字段名丙躏,用
change
alter table student change name mingzi varchar(20) not null default '';
看例子:
mysql> select * from student;
+----+------+-----+-----+
| id | name | sex | cid |
+----+------+-----+-----+
| 1 | 小明 | 男 | 1 |
| 2 | 小紅 | 女 | 2 |
| 15 | 小剛 | 男 | 1 |
| 16 | Lucy | 女 | 3 |
| 17 | 李雷 | 男 | 1 |
| 18 | Lily | 女 | 2 |
+----+------+-----+-----+
6 rows in set (0.00 sec)
mysql> alter table student change name mingzi varchar(20) not null default '';//把name字段改為mingzi择示,類型從char(10)改為varchar(20),其他不變。注意晒旅,改了字段后面一定別忘了加上對(duì)應(yīng)的字段值類型
Query OK, 6 rows affected (0.30 sec)
Records: 6 Duplicates: 0 Warnings: 0
mysql> select * from student;
+----+--------+-----+-----+
| id | mingzi | sex | cid |
+----+--------+-----+-----+
| 1 | 小明 | 男 | 1 |
| 2 | 小紅 | 女 | 2 |
| 15 | 小剛 | 男 | 1 |
| 16 | Lucy | 女 | 3 |
| 17 | 李雷 | 男 | 1 |
| 18 | Lily | 女 | 2 |
+----+--------+-----+-----+
6 rows in set (0.00 sec)
mysql> desc student;
+--------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+------------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| mingzi | varchar(20) | NO | | | |
| sex | enum('男','女') | NO | | 男 | |
| cid | int(10) unsigned | NO | | 1 | |
+--------+------------------+------+-----+---------+----------------+
4 rows in set (0.01 sec)
- 修改字段栅盲,不改字段名,用
modify
alter table student modify mingzi char(12);
//把mingzi字段的類型改為char(12)
,后面沒有寫not null default ''
,看看表結(jié)構(gòu)的變化:
mysql> desc student;
+--------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+------------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| mingzi | char(12) | YES | | NULL | |
| sex | enum('男','女') | NO | | 男 | |
| cid | int(10) unsigned | NO | | 1 | |
+--------+------------------+------+-----+---------+----------------+
4 rows in set (0.01 sec)
默認(rèn)值變成null
了废恋。
- 添加一個(gè)字段
addtime
alter table student add addtime int(10) not null default 0;
看一下變化:
mysql> desc student;
+---------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+------------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| mingzi | char(12) | YES | | NULL | |
| sex | enum('男','女') | NO | | 男 | |
| cid | int(10) unsigned | NO | | 1 | |
| addtime | int(10) | NO | | 0 | |
+---------+------------------+------+-----+---------+----------------+
5 rows in set (0.02 sec)
改一下cid字段
mysql> alter table student modify cid tinyint unsigned not null default 1;
Query OK, 6 rows affected (0.28 sec)
Records: 6 Duplicates: 0 Warnings: 0
mysql> desc student;
+---------+---------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+---------------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| mingzi | char(12) | YES | | NULL | |
| sex | enum('男','女') | NO | | 男 | |
| cid | tinyint(3) unsigned | NO | | 1 | |
| addtime | int(10) | NO | | 0 | |
+---------+---------------------+------+-----+---------+----------------+
5 rows in set (0.01 sec)
由此可見tinyint
默認(rèn)會(huì)修改為tinyint(3)
- 刪除一個(gè)字段:
alter table 表名 drop 要?jiǎng)h除的字段名;
比如:
alter table student drop addtime;
- 刪除自增
alter table student modify id int not null;
//即修改主鍵字段的修飾語(yǔ)谈秫,去掉auto_increment
,覆蓋掉原來(lái)的
看效果:
mysql> alter table student modify id int not null;
Query OK, 6 rows affected (0.29 sec)
Records: 6 Duplicates: 0 Warnings: 0
mysql> desc student;
+--------+---------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+---------------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| mingzi | char(12) | YES | | NULL | |
| sex | enum('男','女') | NO | | 男 | |
| cid | tinyint(3) unsigned | NO | | 1 | |
+--------+---------------------+------+-----+---------+-------+
4 rows in set (0.06 sec)
- 刪除主鍵,
alter table 表名 drop primary key;
注意:刪除主鍵之前必須先要?jiǎng)h除主鍵的自增鱼鼓,否則會(huì)報(bào)錯(cuò)拟烫。
mysql> alter table student drop primary key;
Query OK, 6 rows affected (0.42 sec)
Records: 6 Duplicates: 0 Warnings: 0
mysql> desc student;
+--------+---------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+---------------------+------+-----+---------+-------+
| id | int(11) | NO | | NULL | |
| mingzi | char(12) | YES | | NULL | |
| sex | enum('男','女') | NO | | 男 | |
| cid | tinyint(3) unsigned | NO | | 1 | |
+--------+---------------------+------+-----+---------+-------+
4 rows in set (0.04 sec)
14. 有如下表,寫出顯示各班及格和不及格人數(shù)的sql
+----+------+-----+-----+-------+
| id | name | sex | cid | score |
+----+------+-----+-----+-------+
| 1 | 小明 | 男 | 1 | 100 |
| 2 | 小紅 | 女 | 2 | 30 |
| 3 | 小剛 | 男 | 1 | 66 |
| 4 | Lucy | 女 | 3 | 90 |
| 5 | 李雷 | 男 | 1 | 30 |
| 6 | Lily | 女 | 2 | 77 |
+----+------+-----+-----+-------+
mysql> select cid,sum(if(score>=60,1,0)) 及格,sum(if(score<60,1,0)) 不及格 from student group by cid;
+-----+------+--------+
| cid | 及格 | 不及格 |
+-----+------+--------+
| 1 | 2 | 1 |
| 2 | 1 | 1 |
| 3 | 1 | 0 |
+-----+------+--------+
3 rows in set (0.00 sec)
如果這篇文章對(duì)你有幫助迄本,不妨點(diǎn)個(gè)贊哦
(˙?˙)?--?