sql输出带颜色的字段_带你走进MySQL数据库(MySQL入门详细总结一)
導讀:關于MySQL用三篇文章帶你進入MySQL的世界。
文章目錄
- 1.MySQL
- 2.MySQL的使用
- 3.MySQL概述
- 4.導入數據
- 5.sql語句
- 1.查詢
- 2.排序(升序,降序)
- 3.分組函數
- 4.group by和having
1.MySQL
MySQL開源免費,MySQL 是一個關系型數據庫管理系統,由瑞典 MySQL AB 公司開發,目前屬于 Oracle 公司。MySQL 是一種關聯數據庫管理系統,關聯數據庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度并提高了靈活性。。MySQL 是最流行的關系型數據庫管理系統,在 WEB 應用方面 MySQL 是最好的 RDBMS(Relational Database Management System:關系數據庫管理系統)應用軟件之一。
1.免安裝版MySQL的安裝
2.安裝版MySQL的安裝
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腳本?
- 當一個文件的擴展名為.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.查詢
1.簡單的查詢語句(DQL)
- 語法格式: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%’;
*找出名字有下劃線的?(用下劃線轉義)
selecct ename from emp where ename like ‘%_%’;
*找出名字中最后一個是T的?
select ename from emp where like ‘%T’;
2.排序(升序,降序)
1.按照工資升序,找出員工名和薪資?(默認升序)select
ename,salfrom
emporder 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.分組函數
另稱:多行處理函數。
- 一.那什么是單行處理函數呢?
輸入一行,輸出一行。 - 計算每個員工的年薪?
select ename ,(8000+NULL)*12 as yearsal from emp;(數據庫中數學表達式中有NULL,結果一定是NULL) - ifnull()空處理函數怎么用?
ifnull(可能為null的數據,被當作什么處理):屬于單行處理函數。
select ename ,ifnull(comn,0)as comm from emp;二.分組函數(多行處理函數)1.count 計數2.sum 求和3.avg 平均值4.max 最大值5.min 最小值
一共就這五個。
注意:所有的分組函數都是對“某一組”數據操作。 - 找出工資總和?
select sum(sal) from emp; - 找出最高工資?
select max(sal) from emp; - 找出平均工資?
select avg(sal) from emp; - 找出總人數?
select count(*) from emp;
select count(ename) from emp; - 輸入多行,最終輸出為一行。
- 分組函數自動忽略NULL。(不會統計)
所以:select sum(sal) from emp where sal is not nul;是沒有必要的。
select count (comm)from emp;(comm自定義字段,含義:津貼) - 找出工資高于平均工資的員工?
- select ename,sal from emp where sal>avg(sal);//這種寫法是錯誤的。
原因:**SQL語句當中有一個語法規則,分組函數不可以直接使用在where字句當中。**因為 group by是在where之后執行的。所以說還沒有分組,不能用分組函數,沒有group by 語句也自成一組,即有缺省的group by。因此:解決問題的方法為:
第一步:找出平均工資
select avg(sal) from emp;
第二步:找出高于平均工資的員工。
select ename,sal,from emp where sal >2073.xx
綜合起來:select ename ,sal from emp where sal>(select avg(sal) from emp);
±------±--------+
| ename | sal |
±------±--------+
| JONES | 2975.00 |
| BLAKE | 2850.00 |
| CLARK | 2450.00 |
| SCOTT | 3000.00 |
| KING | 5000.00 |
| FORD | 3000.00 |
±------±--------+ - count()和count(具體的某個字段),他們有什么區別。count():不是統計某個字段中數據的個數,而是統計總記錄條數。(和某個字段無關)count(comm):表示統計comm字段中不為NULL的數據總數量。
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
empgroup 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;//效率較低
第二種方法:
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;
總結
以上是生活随笔為你收集整理的sql输出带颜色的字段_带你走进MySQL数据库(MySQL入门详细总结一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python settings模块安装_
- 下一篇: python点操作符语法_最基础的pyt