2018-07-29學習mysql小結

来源:https://www.cnblogs.com/bkytep/archive/2018/07/29/9385049.html
-Advertisement-
Play Games

此前在校學習期間,只是知道資料庫很重要,但是並未主動去學習瞭解。現在的學習過程中學了一遍mysql,就簡單的做一個總結吧。 首先記住三個概念: 1.資料庫(Database)是按照數據結構來組織、存儲和管理數據的建立在電腦存儲設備上的倉庫。 2.SQL :結構化查詢語言(Structured Qu ...


    此前在校學習期間,只是知道資料庫很重要,但是並未主動去學習瞭解。現在的學習過程中學了一遍mysql,就簡單的做一個總結吧。

    首先記住三個概念:

    1.資料庫(Database)是按照數據結構來組織、存儲和管理數據的建立在電腦存儲設備上的倉庫。   

    2.SQL :結構化查詢語言(Structured Query Language)

    3.MySQL:關係型資料庫管理系統

    database中存儲著各種數據,sql語句用於從database中找出我們需要的數據,mysql是一種應用軟體,通過語句對database進行操作。

    MySQL我使用的是5.6版本,通過管理員身份打開cmd後,啟用mysql服務為:net start mysql56,關閉服務為:net stop mysql56。登錄:mysql -h localhost -u root -p     回車後輸入密碼:123456(用戶名和密碼在安裝時進行設置)


    下麵將會從四個方面進行總結:

    1.數據定義語言(DDL)

    2.數據操作語言(DML)

    3.數據查詢語言(DQL)

    4.函數

    本篇小結大部分是語句格式,如果需要代碼實現的截圖,以及部分額外知識點標註,可以下載安裝xmind軟體後,下載雲盤裡的思維導圖進行查看。

鏈接:https://pan.baidu.com/s/18a3gY9Rzu7TOox-Tkgq-_w 密碼:qrie

ximd內容如下:


 

數據定義語言(DDL):

1.建表:

create table 表名(                                                    create table test(

          列名稱1 數據類型 ,                                                           id int,

          列名稱2 數據類型,                                                            name char(10),

          .........                                                                                    ......

          列名稱n 數據類型);                                                       birthday date);

常用的數據類型:整數(int,tinyint,smallint),小數(float,decimal),字元串(char,varchar),時間(date,time)

2.約束:

primary key(主鍵):約束唯一標識資料庫表中的每條記錄

foreign key(外鍵):foreign key就是表與表之間的某種約定的關係,從一個表指向另一個表

unique:約束用於限制加入表的數據的類型

建表時可在數據類型後添加:

create table test(id int primary key);

create table test(id int,primary key(id);

或者建表時未添加,後面需要時再添加:

alter table test add primary key(id);

刪除主鍵:alter table test drop primary key;

unique的用法與primary key 相同。

外鍵的用法:

create table t1(id int primary key,name char(10));

create table t2(id int primary key,pri_id int,name char(10),

constraint i foreign key(pri_id) references t1(id));

意思為:把t2中的pri_id 作為外鍵,指向t1中的主鍵id

刪除外鍵:constraint i,把外鍵命名成i,方便了我們刪除外鍵

alter table t2 drop foreign key i; 

3.欄位屬性

1.unsigned(無符號型),只能用在數值型欄位

2.zerofill(自動補零),只能用在數值型欄位,前導零,同時該欄位自動式UNSIGNED

3.AUTO_INCREMENT(自動增長),寄生於主鍵

4.NOT NULL:強制約束列不守NULL值,即不添加數值就無法插入數據

5.預設值(default):給數據一個預設值(系統預設值是NULL),不能與auto_increment同時用於一個欄位上

寫法均為:create table test(id int 欄位屬性);

 


DML(數據操作語言):

1.索引:

創建:create index 索引名 on 表名(欄位);            create index i on test(id);

刪除:drop index 索引名;                                        drop index i;

2.對數據操作:

insert(插入):

插入單獨數據:insert into 表名 欄位1、欄位2... values(值1、值2...);

插入預設數據:insert inro 表名 values(值1、值2...);

insert into test(id,name) values(008,'周星星');

update(修改、更新):修改(更新)數據:update 表名 set 欄位=新值 where 列名稱=某值

update test set name='詹姆斯' where id=008;

修改多條數據:

update test set name=case id

when 001 then 'qwe'

when 002 then 'asd'

end

where id in(001,002)

replace(批量更新數據)(也可用於數據添加):replace into 表名(欄位1、欄位2...) values(值1、值2...)

replace into test(id,name) values(002,'777');

未添加的數據會預設為null

批量更新(通過update):

insert into test(id,name) values(001,'i am 001'),(002,'i am 002')

on duplicate key update

id=values(id),name=values(name);

delete刪除數據(一條):delete from 表名 where 條件

delete from test where id=001;

 

3.對錶操作

修改表名:alter table 舊表名 rename as 新表名;

alter table test rename as father;

修改欄位的數據類型:alter table 表名 modify 欄位名 數據類型

alter table test modify id char(10);

修改欄位名:alter table 表名 change 欄位名 新欄位名 數據類型; 

alter table test change name address char(50);

增加欄位:alter table 表名 add 欄位名1 數據類型

alter table test add address char(30);

刪除欄位:alter table 表名 drop 欄位名;

alter table test drop address;

 


DQL(數據查詢語句insert):

1.交叉查詢:select 表1.欄位,表2.欄位 from 表1,表2;

多表聯合查詢:select 表1.欄位,表2.欄位 from 表1,表2 where 表1.id=表2.id;

select * from t1,t2 where t1.id=t2.id;

2.查詢不重覆的數據:select distinct 欄位 from 表名;

select distinct id from test;

3.取別名alias:select * from 表名 as 別名;

自連接:select b.* from shop as a,shop as b where a.name='包子' and a.price

把shop表取別名為a,b,通過a和b進行自己數據的對比

4.limit(偏移量):

查詢前n條數據:select *from 表名 limit n;

查詢前n條數據後的i條數據:select *from 表名 limit n,i;

5.in(在where後規定多個值):select 欄位 from 表名 where 欄位 in(值1,值2);

select * from test where id in(1,2,3);

6.like(用於where子句中搜索列中的指定模式):select 欄位 from 表名 where 欄位 like 表達式;

例如搜索王姓青年:

select *from test where name like'王%';

%:表示0~多個字元

_:表示一個字元

7.order by(排序):select 欄位 from 表名 order by 欄位(排序方式) [desc](使用倒序排列)

select * from test order by id desc;

表示通過id從大到小進行排序顯示

8.join連接:

inner jor(內連接),left join(左連接),right join(右連接)

full join(全連接)(mysql不支持全連接)

格式都相同:select 欄位 from 表1 inner/left/right join 表2 on 表1.欄位=表2.欄位;

9.union(聯合查詢):select *from 表1 union select *from 表2;

 


函數:

1.合集函數:操作面向一系列的值,並返回一個單一的值

寫法都相同:

查詢某列的平均值:select avg(欄位) from 表名;

返回某列的行數:select count(欄位) from 表名;

查詢某列最大值:select max(欄位) from 表名;

查詢某列最小值:select min(欄位) from 表名;

返回某列總和:select sum(欄位) from 表名;

分組顯示總和:select sum(欄位) from 表名 group by 欄位;

2.標量函數:操作面向某個單一的值,並返回基於輸入值的一個單一的值

寫法也都相同:

ucase(把欄位的值轉換為大寫):select ucase(欄位) from 表名;

lcase(把欄位的值轉換為小寫):select lcase(欄位) from 表名;

mid(提取字元):mid(欄位,起始,結束):

select mid(name,2,3) from test;

表示從name列的第二個數據開始,每個數據只顯示3位

len(返迴文本長度):select length(欄位) from 表名;

round(把數值四捨五入,並保留相應小數位):select round(欄位,數字) from 表名;

now()(查詢當前時間):select now() from 表名;(有幾個數據就出現幾個)

 


    此文章雖然是自己的學習小結,而且還是身為初學者的我寫的,但也希望更多的朋友能看到我的文章,如果有不足之處或疑問,歡迎到留言區留言。


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

-Advertisement-
Play Games
更多相關文章
  • 本篇文章主要介紹SqlServer使用時的註意事項。 想成為一個高級程式員,資料庫的使用是必須要會的。而資料庫的使用純熟程度,也側面反映了一個開放的水平。 下麵介紹SqlServer在使用和設計的過程中需要註意的事項。 SqlServer註意事項 Sql事務啟動語句 開始事務:BEGIN TRANS ...
  • 系列目錄 一、安裝MySql 二、安裝並破解Navicat 三、沒有my.in配置文件怎麼辦 四、設置MySql的大小寫敏感 五、重置MySql登陸密碼 這一篇可以說是我的踩坑的血淚史了。。。 MySql在Windows下預設是大小寫不敏感的,當表名中有大寫字母的時候,MySql會直接把它轉化成小寫 ...
  • 本文通過大量圖片來分析和描述分庫、分表以及資料庫分區是怎樣進行的。 1.sharding前的初始數據分佈 在本文中,我打算用高考考生相關信息作為實驗數據。請無視表的欄位是否符合現實,也請無視表的設計是否符合範式。 3張表: 考生表,存放全國所有高考考生信息,假設34個省、(直轄)市、(自治區、特別行 ...
  • if exists(select * from sys.objects where name='存儲過程名稱')drop proc 存儲過程名稱goCREATE proc 存儲過程名稱@tableName varchar(8000), --表名、視圖名@indexCol varchar(50) = ...
  • 占座 ...
  • exec sp_configure 'show advanced options',1 reconfigure exec sp_configure 'Ad Hoc Distributed Queries',1 reconfigure SELECT * into T_System_Organizati ...
  • 對於許多數據科學家來說,數據操作起始於Pandas或Tidyverse。從理論上看,這個概念沒有錯。畢竟,這是為什麼這些工具首先存在的原因。然而,對於分隔符轉換等簡單任務來說,這些選項通常可能是過於重量級了。 有意掌握命令行應該在每個開發人員的技能鏈上,特別是數據科學家。學習shell中的來龍去脈無 ...
  • 在數據遷徙的時候需要使源和目標資料庫的字元集、版本等信息統一…… 這裡是對一個資料庫的設置,需要在兩邊進行同樣的操作。 SYS@PROD1> select userenv('language') from dual; USERENV('LANGUAGE') AMERICAN_AMERICA.ZHS1 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...