六三、MySQL基本命令
一.基本命令
- 啟動服務: net start mysql
- 停止服務:net stop mysql
- 連結伺服器:
- mysql -u root -p 輸入密碼
- 退出 exit quit \q
- 檢視版本:select version();
- 顯示當前時間: select now();
- 遠端連線
- mysql -h ip -u 使用者名稱 -p
- 輸入對應的密碼
二.資料庫操作
建立資料庫
- create database 資料庫名 charset=utf8;
刪除資料庫
- drop database 資料庫名
切換資料庫
- use 資料庫名
檢視當前選擇的資料庫
- select database();
- 檢視mysql中所有的資料庫名:show databases; || show schemas;
三.表操作
檢視當前資料庫中所有的表
- show tables;
建立表
- cerate table 表名(列及型別);
- 說明:auto_increment 自增 primary key 主鍵 not null 不為空
- eg:create table student(id int auto_increment primary key,name varthar(20) not null,age int not null,gender bit default 1,address varchar(20),isDelete bit default 0);
刪除表
- drop table 表名;
查看錶結構
- desc 表名;
檢視建表語句
- show create table 表名;
重命名錶
- rename table 原表名 to 新表名
修改表
- alter table 表名 add|change|drop 列名 型別;
四.資料操作
增
a. 全列插入 :insert into 表名 values(值);
- 說明: 主鍵自動增長,但是字啊全列插入式需要站位,通常使用0 ,插入成功以後以實際資料為準;
-
b. 預設插入:insert into 表名(列1,列2,。。。) values(值1,值2)
- eg: insert into stu (name,age,address) values(‘小米’,20,’雲南’);C. 同時插入多條資料:insert into 表名 values(…),(),(),…
- eg:insert into stu values(0,’tom1’,18,0,’深圳’,1,0),(0,’tom2’,18,0,’ 深圳’,1,0),(0,’tom3’,18,1,’深圳’,1,0)刪
- delate from 表名 where 條件; (不寫條件全部刪除)
- eg: delate form stu where id=3;
改
- update 表名 set 列1=值1,列2=值2,… where 條件;(不寫條件全部修改)
- eg:update stu set age=99, address=’昆明’ where id=3;
查
- 查詢表中的全部資料:select * from 表名;
五.查
基本語法:select * from 表名;
消除重複行:select distinct 值 form 表名;
條件查詢
a.語法: select * from 表名 where 條件;
b.比較運算子: = < > >= <= !=
c.邏輯運算子: and or not
d.模糊查詢: like %:表示任意多個字元 _:表示一個任意字元
eg:select * from stu where name like “tom%”;
e.範圍查詢:
in 表示在一個非連續的範圍內 eg:select * from stu where id in (1,3,4)
between … and … 表示在一個連續的範圍內 eg:select * from stu where id between 1 and 5;
f.空判斷:null 與 ‘’不同 判斷空:is null 判斷非空:is not null
g.優先順序:()>not>比較運算子>邏輯運算子 and>or聚合:為了快速得到統計資料,提供了5個聚合函式
a. count() 表示聚酸總行數,/列名 eg:select count(*) from stu;
b. max(列) 求此列的最大值 eg: select max(id) from stu where gender=0;
c. min(列) 求此列的最小值
d. sum(列) 求此列的和 eg: select sum(age) from stu where gender=1;
e. svg(列) 求此列的平均值分組:安照欄位分組,表示此欄位相同的資料會被放到一個聚合中
分組後,只能查詢到相同的資料列,有差異的資料列無法顯示到結果中 可對分組後的資料統計- select 列1,列2,聚合。。。 from 表名 group by 列1,列2,… having 列1,列2,…,聚合。。。
- 查詢男女各多少:select gender,count(*) from stu group by gender;
- 查詢出的男女集中在查男生: select gender,count(*) from stu group by gender having gender;
排序: select * form 表名 order by 列1 asc|desc ,列2 asc|desc ,……;
a. 將資料按照列1 進行排序,如果某些列1的值相同,則按照列2,進行排序
b. 預設從小到大排序
c. asc升序 desc降序
eg:按年齡排序 select * from stu order by age , id desc;分頁:select * from 表名 limit start,count;
- select * from stu where age=18 limit 0,1;
六、關聯
建表語句;
- a. create table class(id int auto_increment primary key,name varchar(20) not null,stuNum int not null);
- b. create table stus (id int auto_increment primary key,name varchar(20) not null,gender bit default 1,classId int not null,foreign key(classId) references class(id));
插入資料 insert into class values(0,”py1”,55),(0,”py2”,60),(0,”py3”,77);
,(1,"bbb",0,2);
- 查詢stus 與 class 關聯 select stus.id,stus.name,class.name from class inner join stus on class.id=stus.classId;
分類
a. 表a inner join 表b —表a與表b匹配的行會出現在結果中
b. 表a left join 表b —表a與表b匹配的行會出現在結果中,外加表a中獨有的資料,未對應的資料使用null填充
c. 表a right join 表b —表a與表b匹配的行會出現在結果中,外加表b中獨有的資料,未對應的資料使用null填充