一 MySQL數據庫安裝和使用;
1.地址欄中輸入cmd進入命令窗口,輸入net start mysql80,查看mysql服務是否開啟。net stop mysql80
2.環境變量中,選擇path,將安裝目錄復制(C:\Program Files\MySQL\MySQL Server 8.0\bin)到path,點擊確定
3.在cmd中進入安裝目錄,輸入cd C:\Program Files\MySQL\MySQL Server 8.0\bin,回車
4.輸入mysql -uroot -p 提示需要輸入密碼。登錄成功,
5.可使用show databases;命令來查看數據表
6.Mysql的連接認證基本語法:
Mysql.exe/mysql -h主機地址 -P端口號 -u用戶名 -p密碼 例:mysql -h127.0.0.1 -uroot -p密碼 -P3306
quit命令可以退出MySQL
二 mysql數據類型;
1.數值類型 int:4個字節; integer:與int同義詞; float:4個字節; double:8個字節
2.字符串類型 char:固定長度字符串; varchar:可變長度字符串;
3.日期型 Date:YYYY-MM-DD; Datetime:YYYY-MM-DD HH:MM:SS Time: HH:MM:SS
MySQL支持選擇在該類型關鍵字后面的括號內指定整數值顯示寬度(例如,int(4))顯示寬度並不限制可以在列內保存的值范圍,也不限制超過列的指定寬度的值的
顯示。
三 數據庫定義語言;
1.創建數據庫: create database 數據庫名;使用數據庫; use 數據庫名
2.創建學生表
create table student(
id int(10為顯示寬度並不影響數據的真實長度)整數型 primary key (主鍵是不允許重復)auto_increment(自動生成的數),
name varchar(8)可變型字符串。名字長度不固定顯示8個字符,
sex char(1)性別固定 只有男 女 所以說固定1個字符的變量
score float(6,2)
);
show tables 顯示表
3.刪除表
drop table 表名
4.刪除數據庫
drop database 數據庫名
5.修改表
查看表數據 select * from 表名 ;insert into 表名(變量1,變量2)values("值1","值2);
修改表的結構:
增加列
alter table 表名 add 列名 數據類型(長度)
修改列的數據類型
alter table 表名 modify 列名 數據類型(長度)
修改列的名稱
alter table 表名 change 願列名 新列名 數據類型(長度)
刪除列
alter table 表名 drop 列名
四 數據操作語言
1.向表中插入數據 insert into 表名(變量1,變量2)values("值1","值2);
inert to student(表名)(name,age)values("張三",20);
2.修改表中數據 update 表名 set 字段2=值1,字段2=值2,。。[where]
update student(表名)set age=20(字段=值) where id=1(某個字段=值所在的那一行)
3.刪除表中的數據 delete from 表名 [where]
4.刪除表的所有內容 delete from 表名
五 數據查詢語言
1.單表查詢
select ... from 表名 [where] ....[group by]...[having]..[order by asc/desc]
A 查詢整張表的內容 例;select * from 表名;
B 查詢表的部分數據:
1.查詢部分列 如查詢部門表里 編號 姓名 薪水 字段:
select 編號,姓名,薪水 from 部門表;
2.查詢部分行 如查詢部門表里薪水>2500的部門員工;
select * from 部門表 where 薪水>2500;
3.查詢部分行和列 如查詢部門表里薪水>2500 員工的編號,姓名,薪水;
select 編號,姓名,薪水 where 薪水>2500;
C 查詢結果進行排序:
1.升序 如對部門表里的薪水進行升序排列
select * from 部門表 order by 薪水 asc;
2.降序 如對部門表里的薪水進行升序排列
select * from 部門表 order by 薪水 desc;
2.模糊查詢
只能與字符一起使用的like關鍵字;
like 加 通配符進行排序
a. 從部門表里查詢姓名以M開頭的員工信息
select * from 部門表 where 姓名 like "%M%" ;%表示任意字符任意多個
b. 從部門表里查詢姓名以M開頭員工信息
select * from 部門表 where 姓名 like “M%”;
c. 從部門表里查詢姓名的第二個字母是M的員工信息
select * from 部門表 where 姓名 like "_M%" ;_代表一個字符
區間范圍的 between...and....;在給定的值中進行選擇的;
a. 從部門表里查詢薪水在2000-3000之間的員工信息
select * from 部門表 where 薪水 between 2000 and 3000;
也可以加上排序看起來更整齊
select * from 部門表 where 薪水 between 2000 and 3000 order by 薪水 asc;
in 在指定的值中進行選擇
a. 從部門表里職位字段的值中選擇出是經理,職員的信息
select * from 部門表 where 職位 in(“職員”,“經理”);
也可以加上排序
select * from 部門表 where 職位 in("職員",“經理”)order by 職位;如果沒有指定asc 或者是 desc 會默認的是升序;
3.分組函數 也叫做聚合函數
count()行總數統計 sum()求和 avg()平均數 max()最大 min()最小
a. 從部門表統計符合某些條件的信息如:
統計部門表里總共員工的數量;
select count(*) from 部門表;
統計部門表里客服的員工總數;
select count(*) from 部門表 where 部門="客服";
統計部門表里職位為經理的員工總數;
select count(*) from 部門表 where 職位=”經理“;
b. 從部門表里查詢員工的總薪水
部門所有員工總薪水數
select sum(薪水) from 部門表
查詢部門表里客服員工總薪水
select sum(薪水) from 部門表 where 部門=”客服“;
查詢部門表里經理總薪水
select sum(薪水) from 部門表 where 職位=”經理“;
c. 從部門表里查詢員工的平均水平
部門所有人平均薪水
select avg(薪水) from 部門表
查詢部門表里客服員工平均薪水
select avg(薪水) from 部門表 where 部門=”客服“;
d 從部門表里查詢員工的 薪水max()最多 薪水min()最少
查詢部門表里客服員工最多薪水
select max(薪水) from 部門表
查詢部門表里客服員工最多薪水
select max(薪水) from 部門表 where 部門=”客服“;
查詢部門表里客服員工最少薪水
select min(薪水) from 部門表
查詢部門表里客服員工最多薪水
select min(薪水) from 部門表 where 部門=”客服“;
4.分組 group by....[having] 與我們上面的分組函數一起使用;having只能配合group by 一起使用
統計各部門總人數
select 部門(這里是為了配合顯示更直觀) count(*) from 部門表 group by 部門;
統計各部門總人數,但是人數少於4人不顯示
select 部門(這里是為了配合顯示更直觀) count(*) from 部門表 group by 部門 having count(*)>3;
5.表連接查詢 遵循99標准連接查詢
A. inner join 內連接查詢 select ... from 表1 inner join 表2 on 連接條件 [where];
表的主從關系和約束,例如一個員工信息表里員工所在的部門都是編號,而另一張部門信息表里存有部門編號、名稱等信息。員工信息表里部門編號必須和部門信息表里部
門編號是一致的。否則的話連接報錯。這里的部門信息表是主鍵 員工信息表是外鍵
如從員工信息表里查找員工的編號 名稱 薪水 部門的名稱而不是顯示員工的編號。查詢方式如下
select 編號,名稱,薪水,部門名稱(部門信息表里的字段) from 員工信息表 inner join 部門信息表 on 員工信息表.部門編號=部門信息表.部門編號;
從員工信息表里查找員工的編號 名稱 薪水大於3000 部門的名稱而不是顯示員工的編號
select 編號,名稱,薪水,部門名稱(部門信息表里的字段) from 員工信息表 inner join 部門信息表 on 員工信息表.部門編號=部門信息表.部門編號 where 薪水>3000;
從員工信息表里查找員工的編號 名稱 薪水大於3000 部門的名稱而不是顯示員工的編號,在排序;
select 編號,名稱,薪水,部門名稱(部門信息表里的字段) from 員工信息表 inner join 部門信息表 on 員工信息表.部門編號=部門信息表.部門編號
where 薪水>3000 order by 薪水;
B. left/right join 外連接查詢 select ... from 表1 left/righ 表2 on 連接條件 [where];
例如一個員工信息表里員工所在的部門都是編號,而另一張部門信息表里存有部門編號、名稱等信息。員工信息表里部門編號必須和部門信息表里部門編號是一致的
但是部門表里有一部分編號的信息員工信息表是沒有用到的。
如要從員工信息表里查找員工的編號 名稱 薪水 部門的名稱而不是顯示員工的編號,並且沒有員工的部門名稱也要顯示出來查詢方式如下;
select 編號,名稱,薪水,部門名稱(部門信息表里的字段) from 員工信息表 rigth join 部門信息表 on 員工信息表.部門編號=部門信息表.部門編號;
”“”上面的rigth join 后面的是主表。因為我們要顯示所有部門名稱,而員工信息里沒有使用全部部門,所以部門信息表示作為主表來連接的。left join所不
同的是在left 前面是做為主表的。區別只是主表的位置不同,其它的都是一樣的