關係型資料庫之MySQL基礎總結_part1

来源:https://www.cnblogs.com/gdhzdbh/archive/2019/03/14/10529562.html
-Advertisement-
Play Games

一:資料庫的操作語言的種類 MySQL 是我們最常使用的關係型資料庫,對於MySQL的操作的語言種類又可以分為:DDL,DML,DCL,DQL 二:對於資料庫的常用命令 1)命令視窗進行登錄 2)命令視窗修改登錄密碼 3)根據IP進行遠程連接MySQL 4)對於資料庫信息相關操作 5)建表語句 6) ...


一:資料庫的操作語言的種類

MySQL 是我們最常使用的關係型資料庫,對於MySQL的操作的語言種類又可以分為:DDL,DML,DCL,DQL

DDL:是資料庫的定義語言:主要對於資料庫信息的一些定義
  如:create, drop, alter ,truncate
DML:是資料庫的操作語言:主要是對於資料庫表中的內容進行操作
  如:update, insert, delete   不包含查詢
DCL:是資料庫的控制語言:主要指的是事務的控制以及用戶的許可權的設置
  如:grant,revoke,if…else,while,begin transaction
DQL:是資料庫 的查詢語言:主要對數據的查詢 
  如:select

 二:對於資料庫的常用命令

  1)命令視窗進行登錄

mysql -u 用戶名  -p  進行登錄操作
mysql -u用戶名 -p密碼也可以

  2)命令視窗修改登錄密碼

1,停止SQL的服務,打開cmd 輸入:services.msc
2,在cmd下輸入mysqld --skip-grant-tables,不用關閉視窗
3,重新打開cmd視窗 ,輸入mysql -u root -p,就可以免密登錄
4,進入到指定的資料庫,use mysql
5,update user set password=password('新密碼')WHERE user='用戶名'
6,用任務管理器,結束mysqld的進程,
7,啟動MySQL的服務,密碼就已經修改成功

   3)根據IP進行遠程連接MySQL

mysql [-h 連接的主機ip -P埠3306)] -u 用戶名 -p 密碼 
例如:mysql -h 127.0.0.1 -P 3306 -u root -p

  4)對於資料庫信息相關操作

1,查詢所有的資料庫:show databases;
2,查詢當前資料庫的編碼表信息:show create database 資料庫名;
3,創建資料庫:create database 資料庫名; create database 資料庫名  character set 編碼方式;
4,刪除資料庫:drop  database 資料庫名;
5,修改資料庫的編碼格式:alert database 資料庫名 character set 字元集;
6,切換資料庫:use  資料庫名;
7,查看正在使用的資料庫:select database();

     5)建表語句

create table 表名(
列名  數據類型,
列名  數據類型,
....
列名  數據類型
);
varchar:會自動適應長短,節省空間
char的長度是固定的,根據設置的長度與數據的內容自動空格補充,性能好,如果長度固定可以使用char,比如身份證或者手機號
數值型可以不用指定,使用預設的長度

  6)對錶的相關操作

1,查詢資料庫下所有的表:show tables;
2,查詢建表語句與字元集:show create table 表名;
3,查詢表結構與字元集:desc 表名;
4,查詢表的列信息:show columns from 表名;
5,增加列:alert table 表名 add 列 類型 約束;
6,修改現有列的信息:alert table 表名 modify 列 類型 約束;
7,修改現有列的名稱:alert table 表名 change 舊名   新名 類型 約束;
8,刪除現有列:alert table 表名  drop 列名;
9,修改表名:rename  table  舊名 to 新名;
10,修改表的字元集:alert  table 表名 character  set  字元;
11,數據表的刪除:drop table 表名;
12,對舊表的複製:create table 新的表名 as select *from 舊的表名;
13,刪除列上的所有的約束:Alter table 表名 drop index 列名;

  7)對錶中記錄相關操作

1,增加語句
insert into 表名 (欄位1.欄位2....)values(值1,值2....);
1、值與列一一對應。有多少個列,就需要寫多少個值。如果某一個列沒有值。可以使用null。表示插入空。
2、值的數據類型,與列被定義的數據類型要相匹配。並且值的長度。不能夠超多定義的列的長度。
3、字元串:插入字元類型的數據,必須寫單引號。在mysql中,使用單引號表示字元串。
4、date 時間類型的數據也可以直接使用單引號表示: ‘yyyyMMdd’ ,’yyyy-MM-dd’,’yyyy/MM/dd’ 。
5、在插入數據的時候, 如果某些列可以為null, 或者是自動增長的列, 或者有預設值的, 在插入的時候可以省略. 或者編寫null, 實現自動增長.
6、如果給表中的所有列插入數據, 這時可以省略表後面的列名, 直接寫values.
在進行插入的時候,要保證客戶端與伺服器端的編碼格式保持一致,可以使用
show variables like 'character%';進行查詢所有客戶端與服務端的字元集
當不一致時的修改方法:
第一種: set names gbk ; 臨時將客戶端的字元集設置為gbk
第二種:配置mysql/my.ini 文件
註意:CMD視窗使用的編碼格式是GBK,當添加的時候省略前面的列欄位的時候,後面要根據表的順序一一對應的值進行書寫
2,修改語句
update 表名  set 列=值,列=值 where ......
當不加修改條件的時候,會修改該列的所有的內容
當是數值列的時候,可以對原值進行操作:update user  set age=age+2 where ....
= 表示等於,>  表示 大於,<  表示 小於,>=  表示大於等於,<=  表示小於等於,<>  表示不等   
3,刪除語句(DML)
delete from 表名 where....
如果沒有where 就是刪除所有的記錄,delete刪除的是行
4,Truncate語句(DDL)
truncate  table 表名;
先刪表在建表,性能好;

三:表中相關的約束

約束:主要對列的內容做限制
意義:保證數據的有效性和完整性。可以確保資料庫滿足業務規則。
主鍵約束:primary key ,一個表中只有一個主鍵,是唯一的,不能為空的主鍵
唯一約束:unique,內容不可以重覆,可以為null(null不算重覆),一張表可以有多個唯一約束
非空約束:not null 不允許為空,可以有多個非空約束
外鍵約束: foreign key,
在創建表的時候創建外鍵,直接在最後寫foreign key (列) references 主表(主鍵)
創建完表進行添加,alert table 從表名 add foreign key(列) references 主表(主鍵)
外鍵的註意點:
l  如果從表要去添加一個外鍵約束。要求主表被引用的欄位是主鍵或者唯一的。通常使用主鍵。
l  如果要刪除主表中的數據。要求在從表中這個數據,要沒有被引用,才可以去刪除。
l  如果要向從表中去添加數據。要求在主表中,要有對應的數據。才可以去添加。
l  如果要刪除表。要先刪除從表。然後去刪除主表。
l  新建表的時候。需要先去創建主表,然後去創建從表。

四:運算符的介紹

 

不等於的運算方式:
1,where  列!=值;
2,where 列<>值;
3,where  not 列=值;
在兩個數之間的比較
1,where 列 between 值1 and 值2;包含邊界
2,where 列>=值1 and 列 <= 值2;
多查詢:in   where 列 in(1,2,3);
模糊查詢:like
where  列 like ' 劉_';表示兩個字的模糊
where 列 like '劉%'; 表示的是多個查詢
空查詢:is null;is not null;ifnull(列名,'預設值,類型保持一致')
  

五:其他(distinct,as,order by ,group by)

去重查詢:distinct  
select distinct 列名 from 表名 [where 條件];
當多個欄位的時候會失效;網上說多個欄位的時候會將多個欄位拼接進行去重
別名查詢:as
排序查詢:order by
select  * from 表名  order by 列 desc|asc;預設asc(升序)
多個欄位的時候,首先第一個欄位排序,當第一個重覆的時候,就用第二個排序
分組查詢:group by
group by是對列進行分組,當有多個欄位的時候就會對多個欄位進行分組,分組的內容是按兩個欄位或者這多個欄位都相同的進行分組
註意點:
 1,select的內容,只能是聚合函數或者是group by 後面的欄位
 2,當有多個欄位的時候就會對多個欄位進行分組,分組的內容是按兩個欄位或者這多個欄位都相同的進行分組
3,分組之後再進行過濾的話,只能使用having,having之後可以加聚合函數

 六:聚合函數

1,計數count(列或者數字):統計多少行,當為null的行不統計
2,求和sum(列名):統計該列所有的值的和,null自動排除sum僅對數值類型的列起作用,否則會報錯。
sum(列1+列2+列3):這種寫法,會先進行一行進行求和,然後在把所有行相加,當null進行+列的時候還是null,sum會忽略null的值,容易造成數據的不准確,寫成sum(ifnull(列1,0))+sum(ifnull(列2,0))+sum(ifnull(列3,0))
3,平均查詢avg():對於null的數據也會自動排除,所以要加上ifnull(列,值)進行配合,avg()不能與sum()一起使用
4,求最大值max(列),求最小值min(列);
會自動忽略掉null

七:SQl的執行順序

(1)from 
(2) where 
(3)group by(開始使用select中的別名,後面的語句中都可以使用)
(4) avg,sum.... 
(5)having 
(6) select 
(7) distinct 
(8) order by 

  

 

                                                                                         謝謝!

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • SPI(Serial Peripheral Interface--串列外設介面)匯流排系統是一種同步串列外設介面,它可以使MCU與各種外圍設備以串列方式進行通信以交換信息。SPI匯流排可直接與各個廠家生產的多種標準外圍器件相連,包括FLASHRAM、網路控制器、LCD顯示驅動器、A/D轉換器和MCU等。 ...
  • 確實很實用 https://www.cnblogs.com/ggll611928/p/7451558.html ...
  • 最近,有一位同事,咨詢我mysql的一點問題, 具體來說, 是如何很快的將一個mysql導出的文件快速的導入到另外一個mysql資料庫。我學習了很多mysql的知識, 使用的時間卻並不是很多, 對於mysql導入這類問題,我更是頭一次碰到。詢問我的原因,我大致可以猜到,以前互相之間有過很多交流,可能 ...
  • 1.nvl(exp1,exp2)該函數是處理表達式中的空值: 假設表達式exp1是空值,則該函數返回表達式exp2的值, 假設表達式exp1沒有是空值,則該函數返回表達式exp1的值。 2.nvl2(exp1,exp2,exp3)該函數決定exp1是空值和非空值時返回哪個表達式:假設exp1為空值, ...
  • Centos6.5安裝MySQL5.6 1. 查看系統狀態 2.創建需要下載rpm軟體包的目錄 3. 查看系統中是否有已經存在的MySQL 如果有需要卸載 用這個查找 用這個卸載 4. 下載MySQL 5.6安裝包 分別執行下麵的三條命令 如果下載的速度太慢,也可以使用window下載後傳輸到虛擬機 ...
  • 使用redis已幾年有餘,之前寫過Redis關於master-slave(主從)同步原理的文章。這裡介紹下安裝過程,因為前前後後有些命令也記不住了,所以此篇文章和之前文章一樣起個備註記錄作用,也供屏幕前的你參考。如果喜歡麻煩點贊 -_- 環境: 說明: 個人比較喜歡yum安裝(rpm包安裝),因為比 ...
  • SELECT name, type_desc FROM sys.all_sql_modules s INNER JOIN sys.all_objects o ON s.object_id = o.object_id WHERE definition LIKE '%關鍵字%' ORDER BY typ... ...
  • 1、查看Oracle當前版本 如圖所示: 2、切換到Oracle用戶 如圖所示: 3、進入sqlplus(此時尚未登錄oracle) 如圖所示: 4、以管理員登錄Oracle 如圖所示: 5、查看當前用戶 如圖所示: 6、查看資料庫當前模式 如圖所示: 7、立即關閉Oracle 如圖所示: 講解: ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...