日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

sql输出带颜色的字段_带你走进MySQL数据库(MySQL入门详细总结一)

發布時間:2024/9/15 数据库 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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入门详细总结一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。