導讀: 「誰未曾渾身是傷,誰未曾彷徨迷惘」你好我是夢陽辰!歡迎走進MySQL的世界!html
帶你走進MySQL數據庫(MySQL入門詳細總結二)mysql
帶你走進MySQL數據庫(MySQL入門詳細總結三)算法
1.MySQL
MySQL開源免費,MySQL 是一個關係型數據庫管理系統,由瑞典 MySQL AB 公司開發,目前屬於 Oracle 公司。MySQL 是一種關聯數據庫管理系統,關聯數據庫將數據保存在不一樣的表中,而不是將全部數據放在一個大倉庫內,這樣就增長了速度並提升了靈活性。。MySQL 是最流行的關係型數據庫管理系統,在 WEB 應用方面 MySQL 是最好的 RDBMS(Relational Database Management System:關係數據庫管理系統)應用軟件之一。
1.免安裝版MySQL的安裝
2.安裝版MySQL的安裝sql
2.MySQL的使用
MySQL的登陸:
1.在doc窗口下輸入:mysql -uroot -p加密碼。(也能夠敲回車後輸入密碼,這樣密碼不可見)。
2.MySQL服務默認端口號:3306。
3.修改root密碼:
4.卸載MySQL數據庫
- 雙擊原來的安裝包,而後點擊remove。卸載。
- 手動刪除Program File中的MySQL目錄。
- 手動刪除 ProgramDate目錄(通常爲隱藏)中的MySQL目錄。
3.MySQL概述
1.sql,DB,DBMS分別是什麼?他們之間是什麼關係?編程
- DB:DataBase(數據庫,數據庫實際上在硬盤上以文件的形式存在)
- 數據庫(Database)是按照數據結構來組織、存儲和管理數據的倉庫。
2.什麼是表?
- 表:table
- 表是數據庫的基本組成單元,全部的數據都以表格的形式組織,目的是可讀性強。
- 一個表包括行和列:
行:被稱爲數據/記錄(data)
列:被稱爲字段。(column)
- 每一個字段應該包括哪些屬性?
字段名,數據類型,相關的約束。
如:學號(int) 姓名(varchar)
- RDBMS 即關係數據庫管理系統(Relational Database Management System)的特色:
1.數據以表格的形式出現
2.每行爲各類記錄名稱
3.每列爲記錄名稱所對應的數據域
4.許多的行和列組成一張表單
5.若干的表單組成database
RDBMS 術語
在咱們開始學習MySQL 數據庫前,讓咱們先了解下RDBMS的一些術語:
- 數據庫: 數據庫是一些關聯表的集合。
- 數據表: 表是數據的矩陣。在一個數據庫中的表看起來像一個簡單的電子表格。
- 列: 一列(數據元素) 包含了相同類型的數據, 例如郵政編碼的數據。
- 行:一行(=元組,或記錄)是一組相關的數據,例如一條用戶訂閱的數據。
- 冗餘:存儲兩倍數據,冗餘下降了性能,但提升了數據的安全性。
- 主鍵:主鍵是惟一的。一個數據表中只能包含一個主鍵。你可使用主鍵來查詢數據。
- 外鍵:外鍵用於關聯兩個表。
- 複合鍵:複合鍵(組合鍵)將多個列做爲一個索引鍵,通常用於複合索引。
- 索引:使用索引可快速訪問數據庫表中的特定信息。索引是對數據庫表中一列或多列的值進行排序的一種結構。相似於書籍的目錄。
- 參照完整性: 參照的完整性要求關係中不容許引用不存在的實體。與實體完整性是關係模型必須知足的完整性約束條件,目的是保證數據的一致性。
3.MySQL主要學習SQL語句,SQL語句怎麼分類呢?
- DQL(數據查詢語言):查詢語句,凡是select語句都是DQL.
- DML(數據操做語言):insert delete update,對錶當中的數據進行增刪改。
- DDL(數據定義語言):create drop(刪除) alte(修改),對錶結構的增刪改。
- TCL(事物控制語言):commit提交事務,rollback回滾事務。
- DCL(數據控制語言):qrant受權,revoke撤銷權限。
4.導入數據
第一步:登陸mysql數據庫管理系統。(mysql -uroot -p)
第二步:查看有哪些數據庫
show databases;命令。(不是SQL語句,屬於MySQL命令)
±-------------------+
| Database |
±-------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
±-------------------+
第三步:建立屬於咱們本身的數據庫
create database xingkong;(這個是mysql命令)
第四步:使用xingkong數據庫
use xingkong;(mysql命令)
第五步:查看當前使用的數據庫有哪些表格(mysql命令)
show tables;(查看exam數據庫中的表:show tables from exam;)
第六步:初始化數據
source 路徑和文件名稱;(這裏自定義了一個數據庫,一下出現的代碼都是基於此)
5.xingkong.sql,這個文件以sql結尾,這樣的文件被稱爲「sql腳本」。
什麼是sql腳本?windows
- 當一個文件的擴展名爲.sql,而且該文件中編寫了大量的sql語句,咱們稱這樣的爲sql腳本。
- 注意:直接使用source命令能夠執行sql腳本。
- sql腳本中的數據量太大的時候,沒法打開,請使用source命令完成初始化。
6.刪除數據庫:
drop database xingkong;
7.查看錶結構:
desc dept;部門表(自定義表)
desc emp;員工表(自定義表)
desc salgrade;工資等級表(自定義表)
8.表中的數據:
select * from emp;
select *from dept;
9. 查看當前用的數據庫:
select database();
select version();版本
10.經常使用命令
- \c 命令 結束一條語句。
- exit 命令,退出mysql;
11.查看建立表的語句:
show create table emp;
5.sql語句
1.查詢
- 語法格式:select 字段名1,字段名2,字段名3,…from 表名;
- 提示:任何一個sql語句以「;」結尾。
- sql語句不區分大小寫。(但對錶中存儲的數據就不同,mysql語法嚴格)
*** 查詢的時候字段能夠參與數學運算:**
select ename,sal*12 as (新名字) from emp;(ename,sal 爲字段,emp爲表)名字若是爲中文須要用單引號括起來。(as關鍵字能夠省略)
- 字符串使用單引號括起來。
- 查詢全部字段?
select * from emp;(emp爲自定義的表),效率較低。
2.條件查詢
- 語法格式:selcet 字段,字段,… from 表名 where 條件;條件爲字符串須要單引號括起來。
執行順序爲:from,而後where,最後select;
不等於:<>符合。或!=。
- select ename ,sal from emp where sal between 11 and 500;
between …and 使用的時候必須左小右大,也可使用在字符串方面。數字【左閉右閉】。
select ename from emp where ename between ‘a’ and ‘c’;首字母【左閉右開】。
- 在數據庫中NULL不是一個之,表明什麼也沒有,不能用等號衡量,只能使用 is null 或者 is not null;(0和null表示的東西不同)
- 找出工做崗位是xxx和xxxx的員工:
用or:select ename,job from emp where job = ‘xxx’ or job=‘xxxx’;能夠加小括號來搞定優先級。
where job in (‘xxx’,‘xxxx’);不是一個區間,直接是一個值。
not in 表示不在。
- 模糊查詢like?
找出名字當中含有嘉的?(模糊查詢需掌握兩個特殊的符號,一個是%,一個是_)
%表明任意多個字符,_表明任意一個字符。
如:*查找含A的(ename爲自定義字段,emp爲自定義表)
select ename from emp where ename like ‘%O%’;
*查找名字第二個字母是A的?
select ename from emp where ename like ‘_A%’;
*找出名字有下劃線的?(用下劃線轉義)
select ename from emp where ename like ‘%\ _%’;
*找出名字中最後一個是T的?
select ename from emp where like ‘%T’;
2.排序(升序,降序)
1.按照工資升序,找出員工名和薪資?(默認升序)
select
ename,sal
from
emp
order by
sal;
注意:默認爲升序,指定升序:asc,指定降序desc
select ename, sal from emp order by sal desc;
2.按照工資的降序排列,當工資相同的時候,按照名字的升序排序。
select ename,sal from emp order by sal desc,ename asc;
多個排序,靠前面的字段更加劇要,去主導做用,後面的字段可能都用不上。
3.找出工做崗位是xxxx的員工,而且要求按照薪資的降序排列。
select
ename,job,sal
from
emp
where
job =‘xxxx’
order by
sal desc;
order by是最後執行的。先from,後where,再select,最後order by.數據結構
3.分組函數
4.group by和having
group by:按照某個字段或者某些字段進行分組。
having :having 是對分組以後的數據進行再次過濾。
二者必須聯合使用。
案例:找出某個崗位的最高薪資?
1.先進行分組。
- select max(sal) from emp group by job;
注意:分組函數通常和group by聯合使用,這也是爲何他被稱爲分組函數的緣由。
- 任何一個分組函數count sum avg max min)都是在group by 語句執行結束以後纔會執行的。當一條sql語句沒有group by 的話,整張表就會自成一組。
- 當一條語句中有group by 時,select後面只能跟分組函數,和分組字段。
案例:找出每一個部門,不一樣工做崗位的最高薪資?(兩個字段聯合分組)
select
deptno,job,max(sal)
from
emp
group by
deptno,job;
- 找出每一個部門的最高薪資,要求顯示薪資大於2500的數據。
第一步:找出每一個部門的最高薪資
select max(sal) ,deptno from emp group by deptno;
第二部:找出薪資大於2900
select max(sal) ,deptno from emp group by deptno having max(sal)>2900;//效率較低(較高的mysql版本不能用)
第二種方法:
select
max(sal) deptno
from
emp
where
sal>2900
group by
deptno;//效率較高
案例:找出每一個部門的平均工資,要求顯示薪資大於2000的數據。
第一步:找出每一個部門的平均工資。
select deptno ,avg(sal) from emp group by deptno;
第二步:要求顯示薪資大於2000的數據。
select deptno,avg(sal) from emp group by deptno having avg(sal) >2000;
- select語句總結
- 關於查詢結果集的去重?
在select後加distinct關鍵字去除重複記錄。
distinct關鍵字只能出如今全部字段的最前面。(否則不均衡啊)若是有多個字段,聯合起來去重。
如:select distinct deptno ,job from emp;
結果:
±-------±----------+
| deptno | job |
±-------±----------+
| 20 | CLERK |
| 30 | SALESMAN |
| 20 | MANAGER |
| 30 | MANAGER |
| 10 | MANAGER |
| 20 | ANALYST |
| 10 | PRESIDENT |
| 30 | CLERK |
| 10 | CLERK |
±-------±----------+
- 統計崗位的數量?
select count(distinct job) from emp;
- 關注公衆號【輕鬆玩編程】回覆關鍵字「電子書」,「計算機資源」,「Java從入門到進階」,」JavaScript教程「,「算法」,「Python學習資源」,「人工智能」等便可獲取學習資源。