MySql筆記(一)

来源:https://www.cnblogs.com/qzdd/archive/2020/01/19/12214625.html
-Advertisement-
Play Games

每天給自己一個希望,努力做好自己,不為明天煩惱,不為昨天嘆息。當夢想還在,告訴自己:努力,就總能遇見更好的自己! [toc] MySql筆記(一) 1、創建資料庫以及刪除 1.創建資料庫語法:(命令行視窗操作) ~~~~sql CREATE DATABASE DATABASENAME ~~~~ 示例 ...


目錄

每天給自己一個希望,努力做好自己,不為明天煩惱,不為昨天嘆息。當夢想還在,告訴自己:努力,就總能遇見更好的自己!

MySql筆記(一)

1、創建資料庫以及刪除

1.創建資料庫語法:(命令行視窗操作)

CREATE DATABASE DATABASENAME

示例:創建名為MySQLTest的資料庫

CREATE DATABASE MySQLTest;

2.刪除資料庫語法:(命令行視窗操作)

DROP DATABASE DATABASENAME

示例:刪除名為MySQLTest的資料庫

DROP DATABASE MySQLTest;

2、Sql常用數據類型

1.整數類型:tinyint(微小的整數),smallint(小的整數),int(普通的整數),bigint(大的整數)
存儲的空間不同:tinyint只有一個位元組,smallint有兩個位元組,int有四個位元組,bigint有8個位元組

2.小數點的數據類型:定點數(decimal(p,s))和浮點數float(p,s)四個位元組,double(p,s)八個位元組。
定點數的小數點是固定的,而浮點數的小數點是不固定的,區別:定點數的小數點是固定的所以他的小數精度準確,
而浮點數的小數點是不固定的,所以浮點數的小數點的精度沒有定點數的精度準確度高。但是浮點數表示的範圍更大

3.日期/時間類型:date(某個日期,不包含時間), time(一天當中某一個點數) datetime(連日期帶時間)

4.文本類型:char(固定長度的文本) ,varchar , text(是存儲大文本的數據類型)

5.二進位的數據類型:bit(如果使用了bit類型,系統就會將數據存儲為二進位的形式)

3、創建數據表以及範式

(1.資料庫設計基本步驟(分四個階段):
1.需求分析階段:分析客戶的業務和數據處理需求
2.概要設計階段:將需求設計成資料庫的E-R模型圖,確認需求信息的正確和完整
3.詳細設計階段:將E-R模型圖轉換為多張表,進行邏輯設計,並應用數據量設計的三大範式進行審核
4.代碼編寫階段:選擇具體資料庫進行物理實現,並編寫代碼實現前端應用

例子:
模型QQ游戲大廳項目
1.需求分析:系統要記錄哪些信息?中國象棋,撲克游戲和玩家的信息,分數信息等
2.數據表:游戲表,玩家表,分數表
3.每個表的欄位
游戲表 玩家表 分數表
1.編號 1.QQ號 1.游戲編號
2.名稱 2.昵稱 2.玩家QQ
3.類型 3.性別 3.得分
4.難度 4.生日
5.手機號

​ 將這些數據用E-R做一個模型實體關係圖

用長方形符號表示實體,一般是名詞
用圓形符號表示屬性,一般是名詞
用三角形符號表示關係,一般是名詞

2 範式:設計關係資料庫時,遵從不同的規範要求,設計出合理的關係型資料庫,
這些不同的規範要求被稱為不同的範式,各種範式呈遞次規範,越高的範式資料庫冗餘越小

3 Dr E,F,codd最初定義了規範化的幾個級別,範式用以定義具有最小的冗餘的表結構
第一範式(1st NF)
如果每列都說不可再分的最小數據單元(也稱為最小的原子單元),側滿足第一範式(1NF)
第一範式的目標是確保每列的原子性

示例:
    玩家QQ    地址                         玩家QQ  國家   城市
    12301    中國北京   -》修改為   12301  中國   北京
    12302    美國紐約                       12302  美國   紐約

第二範式(2nd NF)
如果一個關係滿足1NF,並且除了主鍵以為的其他列,都完全依賴於該主鍵,側滿足第二範式(2NF)
第二範式要求每個表只描述一件事情

示例:                                                 游戲
    游戲                                 欄位            值
    欄位           值                    游戲編號        1
    游戲編號       1             游戲名稱       3D撞球
    游戲名稱      3D撞球   -》修改為     游戲類型        體育  
    游戲類型      體育             游戲難度         1
    游戲難度       1               
    勝者得分      100                              難度獎勵
                         欄位            值 
                         游戲難度        1
                         勝者得分       100

第三範式(3rd NF)
如果一個關係滿足2NF,並且除了主鍵以外的其他列都不傳遞依賴於主鍵列,側滿足第三範式(3NF)
第三範式要求表中不存在冗餘欄位

示例:             
    分數表                                   分數表                                  
欄位           值            欄位             值
游戲編號       1                         游戲編號           1 
玩家QQ        12301        -》修改為     玩家QQ            12301     
玩家昵稱      悟空              得分             2760
得分          2760  

(2.使用客戶端創建數據表
步驟:
1.打開鏈接,選擇資料庫
2.右鍵選擇新建表
3.填寫表各個欄位的名稱,數據類型,勾選是否允許空
4.保存表

(3.使用命令行的方式創建數據表
步驟:
1.從命令行視窗登錄MySQL
2.使用CREATE TABLE語句創建表
語法公式:

CREATE TABLE table_name{
        col_name1 col_type[not null].
        col_name1 col_type[not null].
        ...
}

4、為隊列添加約束

(1.主鍵約束
1.約束的概念和作用(約束就是檢查官,檢查數據是否有重覆的內容)
2.主鍵約束作用:保證實體完整性
3.PRIMARY KEY是檢查兩條表中的語句是否有重覆
示例:為玩家表的玩家QQ列添加主鍵約束

    create table users(
    user_qq varchar(20) not null PRIMARY KEY,
    user_name varchar(50) not null,
    user_sex char(2) not null,
    user_birthday date not null,
    user_mobile char(11) not null
)

(2.外鍵約束
1.外鍵約束作用,保證引用完整性
2.references關鍵字的意思是引用的意思。
示例:為分數表添加外鍵約束

create table scores(
    user_qq varchar(20) not null
    references users(user_qq),
    gno int not null,
    score int not null 
)

(3.檢查約束
1.檢查約束作用,保證域完整性
2.check()關鍵字的意思是游戲編號等要大於0,否則錯誤
例如:為游戲表添加檢查約束

    create table games(
    gno int not null check(gno>0),
    gname varchar(50) not null,
    gtype varchar(20) not null 
)

(4.預設約束
1.作用:保證域完整性
2.DEFAULT'男'

(5.自增列
1.作用:保證實體完整性
2.AUTO_INCREMENT是自增列的關鍵字
例:為游戲表添加自增列

CREATE TABLE Games(
    GNO INT NOT NULL AUTO_INCREMENT,
    GName varchar(50) NOT NULL,
    GType varchar(20) NOT NULL
}

5、查看表數據

查看表的基本結構
語法:DESCRIBE/DESC TABLE_NAME

結果含義:
    Field:欄位名
    Type:欄位類型
    NULL:是否可以為空
    Key:是否編製索引
    Default:預設值
    Extra:附加信息,如自增列

查看表的詳細結構
語法:SHOW CREATE TABLE TABLE_NAME
格式化結果:SHOW CREATE TABLE TABLE_NAME\G

6、修改數據表

修改表名
語法:ALTER TABLE OLD_NAME RENAME TO NEW_NAME

示例:
    ALTER TABLE GAMES RENAME TO QQ_GAME

修改欄位名
語法:ALTER TABLE TABLE_NAME CHANGE OLD_NAME NEW_NAME NEW_TYPE

示例:
    ALTER TABLE GAMES CHANGE GNO GAME_ID VARCHAR(20)

修改欄位數據類型
語法:ALTER TABLE TABLE_NAME MODIFY COL_NAME NEW_TYPE

示例:
    ALTER TABLE GAMES MODIFY GNO VARCHAR(20)

添加和刪除欄位
添加欄位語法:ALTER TABLE TABLE_NAME ADD NEW_COL_NAME NEW_TYPE
刪除欄位語法:ALTER TABLE TABLE_NAME DROP COL_NAME

增補約束
添加主鍵語法:ALTER TABLE TABLE_NAME ADD CONSTRAINT CON_NAME PRIMARY KEY(COL_NAME)

示例:ALTER TABLE USERS ADD CONSTRAINT PK_USERS_USERQQ PRIMARY KEY(USERQQ)

添加外鍵語法:ALTER TABLE F_TABLE ADD CONSTRAINT  CON_NAME FOREIGN KEY(F_COL)REFERENCES M_TABLE(M_COL)

示例:ALTER TABLE SCORES ADD CONSTRAINT FK_SCORES_GAMES FOREIGE KEY(GNO)REFERENCES GAMES(GNO)

添加檢查約束語法:ALTER TABLE TABLE_NAME ADD CONSTRAINT CON_NAME CHECK(EXP)

示例:ALTER TABLE GAMES ADD CONSTRAINT CK_GAMES_GNO CHECK(GNO>0)

添加預設值語法:ALTER TABLE TABLE_NAME ALTER COL_NAME SET DEFAULT VALUE

示例:ALTER TABLE USERS ALTER USER_SEX SET DEFAULT'男'

7、刪除數據

刪除無關聯數據表
語法:DROP TABLE [IF EXISTS] TABLE_NAME1,TABLE_NAME2

示例:DROP TABLE SCORES

刪除有關聯數據表
先解除關聯關係語法:ALTER TABLE F_TABLE_NAME DROP FOREIGN KEY CON_NAME
刪除表:DROP TABLE TABLE1,TABLE2

8、插入數據

為所有列都插入值
語法:INSERT[INTO] TABLE_NAME VALUES(V1,V2...Vn)
特點--列值同數,列值同序

示例;INSERT INTO USERS VALUES('12301'.'周天'.'男','1982-02-01','1371111222')

為特定列插入值
語法:INSERT[INTO] TABLE_NAME(COL1,COL2...COLn)VALUES(V1,V2...Vn)
特點:指定順序,列值對應

示例:INSERT INTO USERS(USER_QQ,USER_NAME,USER_MOBILE)VALUES('20020106','叮噹','13834561278')

一次性插入多條記錄
語法:INSERT[INTO] TABLE_NAME[(COL1,COL2...COLn)]VALUES(V1,V2...V1n),(V21,V22...V2n),(V23,V23...V3n)

示例:INSERT[INTO] USERS(USER_QQ,USER_NAME,USER_BIRTHDAY,USER_MOBILE)
    VALUES('20020106'.'周天','1980-07-08','1371111555'),('20025564'.'立飛','1983-09-08','1382111555')

9、修改數據

修改全部數據
語法:UPDATE TABLE_NAME SET{COL_NAME=EXPRESSION}[...n]
示例1:把所有玩家的性別都改為男性
UPDATE USERS=SET USER_SEX='男'

示例2:把所有玩家的所有游戲分數都增加100分
    UPDATE SCORES SET SCORE=SCORE+100

修改特定數據
語法:UPOATE TABLE_NAME SET{COL_NAME=EXPRESSION}[...n]
WHERE CONDITION_EXPRESSION

示例:把QQ為'12302'的玩家性別都改為女性
        UPDATE USERS SET USER_SEX='女'
        WHERE USER_QQ='12302'
#### 10、刪除數據

使用DELETE命令刪除數據表中的數據
語法:DELETE[FROM] TABLE_NAME
[WHERE CONDITION_EXPRESSION]

示例:刪除玩家表中所有女性玩家的信息
        DELETE FROM USERS WHERE USER_SEX='女'

使用TRUNCATE TABLE刪除數據
語法:TRUNCATE TABLE TABLE_NAME

示例:清空分數表中所有信息
        TRUNCATE TABLE SCORES

11、刪除數據

查詢和提取數據的過程
1.客戶端與伺服器交互

​ 2.語法:SELECT COL1,COL2,...COLn
​ FROM TABLE1,TABLE2...TABLEn
​ [WHERE CONDITIONS][GROUP BY GROUP_BY_LIST]
HAVING CONDITIONS[ASC|DESC]]

​ 3.SELECT的意思是:我要查詢或者顯示出哪幾個列的結果
​ FROM的意思是:這些列來源於哪些表
​ WHERE的意思是:符合部分條件的語句就寫上WHERE
​ GROUP BY的意思是:把查詢的結果進行分組
​ HAVING的意思是:統計結果
​ ORDER BY的意思是:把查詢的結果進行排序

12、刪除數據

1.查詢表的全部行和列

示例:查詢玩家表中全部的行和列
    SELECT USER_QQ,USER_NAME,USER_SEX,USER_BIRTHDAY,USER_MOBILE 
    FROM USERS

​ 簡便的查詢表的全部行和列的方法
​ 語法:SELECT *FROM USERS

2.查詢表的部分列
示例:從玩家表中查詢玩家QQ和昵稱
SELECT USER_QQ,USER_NAME FROM USERS

3.別名的使用
示例:從玩家表中查詢玩家QQ和昵稱,並顯示為“玩家QQ”和“玩家昵稱”
SELECT USER_QQ AS'玩家QQ',USER_NAME AS'玩家姓名'
FROM USERS

4.DISTINCT關鍵字
作用:消除結果集中的重覆行
示例:顯示參與了游戲的玩家QQ,要求參與了多個游戲的玩家不重覆顯示QQ號
語法: SELECT DISTINCT USER_QQ FROM SCORES

5.LIMIT關鍵字
作用:指定結果集中數據的顯示範圍
示例:顯示玩家表中第三至第5條數據
語法:SELECT * FROM USERS LIMIT2,3


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

-Advertisement-
Play Games
更多相關文章
  • Everspin在磁存儲器設計,製造和交付給相關應用方面的知識和經驗在半導體行業中是獨一無二的。在平面內和垂直磁隧道結(MTJ)STT-MRAM位單元的開發方面處於市場領先地位。包括40nm,28nm及更高工藝在內的先進技術節點上進行了全包交鑰匙的300mm大批量平面內和垂直MTJ ST-MRAM生 ...
  • 1. Spring Cloud版本命名方式 大多數Spring項目以“主版本號.次版本號.增量版本號.里程碑版本號”的形式命名版本。 主版本號表示項目的重大重構; 次版本號表示新特性的添加和變化; 增量版本號一般表示Bug修複; 里程碑版本號表示某版本號的里程碑; 例如Spring Framewor ...
  • Proxmox VE 簡介 "Proxmox Virtual Environment" ,或 Proxmox VE,是來自德國的開源虛擬化方案。軟體和社區支持都是免費的,企業用戶則可以通過訂閱制獲得付費商業支持。前幾年我曾瞭解過 Proxmox VE,當時 PVE 的重心還在容器化(OpenVZ 和 ...
  • 電腦科學里的巨集(Macro),是一種批量批處理的稱謂。一般說來,巨集是一種規則或模式,或稱語法替換 ,用於說明某一特定輸入(通常是字元串)如何根據預定義的規則轉換成對應的輸出(通常也是字元串)。這種替換在預編譯時進行,稱作巨集展開。 發現定義中有意思的點在於這個“語法替換”,。 當巨集定義值本身為常量時 ...
  • 我們知道linux中一個思想:一切皆文件,那麼在我們安裝完postgresql資料庫後,她長什麼樣呢?本文帶著你一起揭開她的面紗,看看postgresql的文件佈局。 說明:由於安裝測試的版本是10.5這裡可以參考官方文檔:https://www.postgresql.org/docs/10/sto ...
  • 參考:https://www.postgresql.org/docs/current/install-procedure.html 完事開頭難!!!如果想瞭解一門技術,看文檔必不可少,實操更不可少,這篇博文記錄了自己學習postgesql的測試安裝文檔,由於對pg的參數瞭解甚少,目前使用的預設的參數 ...
  • postgresql 作為官方號稱的最先進的開源資料庫,從今天(2020-1-19)起開始系統的學習一下,記錄自己學習的點點滴滴。 ...
  • 一幅畫,一次瞬間的回眸,就在那次畫展上,那個眼神,溫柔的流轉,還是那乾凈的皮鞋,一塵不染,俊朗的眉宇性感的唇,悄悄走近,牽手一段浪漫 [toc] MySQL筆記(二) 13、條件查詢 1.普通條件查詢 語法:SELECT COL_LIST FROM TABLE_NAME [WHERE CONDITI ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...