mySQL基本命令指令碼
一、基本命令
1、啟動服務
格式:net start 服務名稱;
示例:net start mysql57;
2、停止服務
說明:以管理員身份執行cmd
格式:net stop 服務名稱;
示例:net stop mysql57;
3、連線資料
格式:mysql -u 使用者名稱 -p
示例:mysql -u root -p
輸入密碼
4、退出登入(斷開連線)
quit或exit
5、檢視版本(連線後執行)
示例:select version();
6、顯示當前時間
示例:select now();
7、遠端連線
格式:mysql -h ip地址 -u 使用者名稱 -p
輸入對方mysql密碼
二、資料庫操作
1、建立資料庫
格式:create database 資料庫名 charset=utf8;
示例:create database William charset=utf8;
2、切換資料庫
格式:use 資料庫名;
示例:use William;
3、刪除資料庫
格式:drop database 資料庫名;
示例:drop database William;
4、檢視當前使用的資料庫
格式:select database();
三、表操作
1、檢視資料庫中所有表
格式:show tables;
2、建立表
格式:create table 表名(列及型別)
說明:auto_increment(自增長),primary key(主鍵),not null(不為空)
示例:create table student(id int auto_increment primary key,name varchar(20) not null,age int not null,sex bit default 1,address varchar(20));
3、刪除表
格式:drop table 表名;
示例:drop table student;
4、查看錶結構
格式:desc 表名;
示例:desc student;
5、檢視建表語句
格式:show create table 表名;
示例:show create table student;
6、重命名錶
格式:rename table 原表名 to 新表名;
示例:rename table student to newstudent;
7、修改表
格式:alter table 表名 add|change|drop 列名 型別;
示例:alter table newstudent add isdelect bit default 0;
四、資料操作
1、增
a、全列插入
格式:insert into 表名 values(...);
說明:主鍵列是自動增長的,但是在全列插入時需要佔位,通常使用0,
插入成功以後以實際資料為準。
示例:insert into newstudent values(0,"william",23,1,"徐州",0);
b、預設插入
格式:insert into 表名(列1,列2,...) values(值1,值2,...);
示例:insert into newstudent(name,age,address) values("王子",22,"宿遷市");
c、同時插入多條資料
格式:insert into 表名 values(...),(...),...;
示例:insert into newstudent values(0,"李小",20,0,"南京",1),(0,"李鵬",23,1,"蘇州",0);
2、刪
格式:delete from 表名 where 條件;
說明:沒有條件是全部刪除,慎用。
示例:delete from newstudent where id=4;
3、改
格式:update 表名 set 列1=值1,列2=值2,...where 條件;
說明:沒有條件是全部列修改,慎用。
示例:update newstudent set age=30 where id=3;
4、查
查詢表中全部資料
格式:select * from 表名;
示例:select * from newstudent;
五、查詢
1、基本語法
格式:select * from 表名
說明:from關鍵字後使表名,表示資料來源於這張表;
select後面寫表中的列名,如果是*表示在結果集中顯示錶中的所有列;
在select後面的列名部分,可以使用as為列面起別名,這個別名顯示在結果集中;
如果要查詢多個列,之間使用逗號分割;
示例:select name,age from newstudent;
select name as a,age from newstudent;
2、消除重複行
說明:在select後面,列前面使用distinct可以消除重複的行
格式:select distinct 列名 from 表名;
示例:select distinct sex from newstudent;
3、條件查詢
a、語法
select * from 表名 where 條件
b、比較運算子
等於 =
大於 >
小於 <
大於等於 >=
小於等於 <=
不等於 !=或<>
需求:查詢id大於4的所有資料
示例:select * from newstudent where id>4;
c、邏輯運算子
and 並
or 或
not 非
需求:查詢id大於4的女生
示例:select * from newstudent where id>4 and sex=0;
d、模糊查詢
like
%表示任意多個任意字元
_表示表示一個任意字元
需求:查詢姓李的同學
示例:select * from newstudent where name like "李%";
e、範圍查詢
in 表示在一個非連續的範圍內
between...and... 表示在一個連續的範圍內
需求:查詢編號是5、7的學生
示例:select * from newstudent where id in (5,7);
需求:查詢編號為3-7的學生
示例:select * from newstudent where id between 3 and 7;
f、空判斷
注意:null與""是不同的
判斷空:is null
判斷非空:is not null
需求:查詢沒有地址的同學
示例:select * from newstudent where address is null;
g、優先順序
小括號、not、比較運算子、邏輯運算子
and比or的優先順序高,如果同時出現並希望先選or,需要結合()來使用
4、聚合
為了快速得到統計資料,提供了5個聚合函式
a、count(*) 表示計算總行數,括號中可以寫*和列名
b、max(列) 表示求此列的最大值
c、min(列) 表示求此列的最小值
d、sum(列) 表示求此列的和
e、avg(列) 表示求此列的平均值
需求:查詢學生總數
示例:select count(*) from newstudent;
需求:查詢女生年齡的平均值
示例:select avg(age) from newstudent where sex=0;
5、分組
按照欄位分組,表示此欄位相同的資料會被放到一個集合中。
分組後,只能查詢出相同的資料列,對於有差異的資料列無法顯示在結果集中。
可以對分組後的資料進行統計,進行聚合運算。
語法:select 列1,列2,聚合...from 表名 group by 列1,列2,...;
需求:查詢男女生總數
示例:select sex,count(*) from newstudent group by sex;
分組後的資料篩選:
語法:select 列1,列2,聚合...from 表名 group by 列1,列2,...having 列1,列2,...聚合
示例:select sex,count(*) from newstudent group by sex having sex=0;
where與having的區別:
where是對from後面指定的表進行篩選,屬於對原始資料的篩選;
having是對group by的結果進行篩選;
6、排序
語法:select * from 表名 order by 列1 asc|desc,列2 asc|desc,...;
說明:
a、將資料按照列1進行排序,若果某些列1的值相同,則按照列2進行排序
b、預設按照從小到大的順序排序
c、asc降序
d、升序
需求:按照年齡排序
示例:select * from newstudent order by age asc,id asc;
7、分頁
語法:select * from limit start,count;
說明:start索引送0開始
示例:select * from limit 0,5;
六、關聯
建表語句:
1、create table class(id int auto_increment primary key,name varchar(20) not null,stuNum int not null);
2、create table students(id int auto_increment primary key,name varchar(20) not null,sex bit default 1,classid int not null,foreign key(classid) references class(id));
3、插入資料
insert into class values(0,"電子2152",45),(0,"電子2151",46);
insert into students values(0,"王子",1,1),(0,"小芳",0,2);
需求:查詢學生所在班級
示例:
select students.name,class.name from class inner join students on class.id=students.classid;
select students.name,class.name from class left join students on class.id=students.classid;
分類:
1、表A inner join 表B:表A與表B匹配的行會出現在結果集中。
2、表A left join 表B: 表A與表B匹配的行會出現在結果集中,外加表A中獨有的資料,
未對應的資料使用null填充。
3、表A right join 表B:表A與表B匹配的行會出現在結果集中,外加表B中獨有的資料,
未對應的資料使用null填充。