第十六章、淺識資料庫

来源:https://www.cnblogs.com/demiao/archive/2019/09/23/11573205.html
-Advertisement-
Play Games

[TOC] 第十六章、淺識資料庫 資料庫配置 資料庫修改信息 用戶操作 表的修改 創建表的完整語法 資料庫表的引擎:驅動數據的方式 資料庫優化 資料庫的模式 mysql支持的數據類型 整型 浮點型 字元串:資料庫優化 char效率要高於varchar 時間 枚舉與集合 約束 ...


目錄

第十六章、淺識資料庫

資料庫配置

# 通過配置文件統一配置的目的:統一管理 服務端(mysqld) 、客戶端(client)
#       配置了 mysqld(服務端) 的編碼為utf8,那麼再創建的資料庫,預設編碼都採用utf8

# 配置流程
# 1)在mysql安裝根目錄下,創建配置文件:my.ini
#       mac下配置文件名叫 my.cnf

# 2)設置配置文件內容並保存
[mysqld]  # 伺服器配置
port=3306  # 可以修改資料庫預設埠(如果資料庫埠被其他軟體占用)
character-set-server=utf8  # 編碼格式
collation-server=utf8_general_ci  # 排序方式(預設跟編碼格式走)

[client]  # mysql自己的客戶端叫[mysql],配置[client]即配置了[mysql],也配置了其他存在方式的客戶端,比如Navicat可視化客戶端
default-character-set=utf8  # 編碼格式

# 3)重啟資料庫服務

資料庫修改信息

# 修改字元編碼
mysql>: alter database 資料庫名 charset=編碼格式;

用戶操作

# 為特定的資料庫分配有該資料庫 操作許可權 的用戶
mysql>: grant 許可權們 on 資料庫.表 to 用戶名@'ip地址' identified by '密碼';

# 1)all:所有許可權
# 2)oldboy.*:oldboy資料庫下所有表
# 3)oldboy@'localhost':本機可以通過oldboy用戶登入
# 4)identified by 'Oldboy123':密碼為Oldboy123
eg>: grant all on oldboy.* to oldboy@'localhost' identified by 'Oldboy123';

# 1)select,delete,update,insert,drop,alter:指定的許可權
# 2)oldboy.*:oldboy資料庫下所有表
# 3)oldboy@'localhost':本機可以通過oldboy用戶登入
# 4)identified by 'Oldboy123':密碼為Oldboy123
eg>: grant select,delete,update,insert,drop,alter on oldboy.* to oldboy@'localhost' identified by 'Oldboy123';

表的修改

修改表名
mysql>: alter table 舊表 rename 新表;

修改欄位名
mysql>: alter table 表名 change 舊欄位 新欄位 類型(長度);

修改欄位屬性
mysql>: alter table 表名 modify 欄位 新類型(長度);

創建表的完整語法

mysql>: create table 表名 (
    屬性名1 類型(長度) 約束,
    ...
    屬性名n 類型(長度) 約束
) engine=引擎 default charset=utf8;

資料庫表的引擎:驅動數據的方式 - 資料庫優化

mysql>: create table t11(id int)engine=innodb;
mysql>: create table t12(id int)engine=myisam;
mysql>: create table t13(id int)engine=blackhole;
mysql>: create table t14(id int)engine=memory;

資料庫的模式

mysql 5.7 以後預設都是安全模式

mysql支持的數據類型

整型

'''類型
tinyint:1位元組 -128~127 *
smallint:2位元組 -32768 ~ 32767
mediumint:3位元組
int:4位元組 -2147483648~2147483647 *
bigint:8位元組
'''
'''約束 *
unsigned:無符號
zerofill:0填充
'''

# 建表
mysql>: create table tb1(x tinyint, y smallint, z int(6));

# 插入數據
mysql>: insert into tb1 values(128, 32768, 32768);
    
# 結果:127,32767,32768
# 結論:整型的長度由所占位元組(取值範圍)決定,可以自定義長度,但是不影響所占位元組(取值範圍)
#    所有整型變數的長度一般都省略不寫

# 整型約束
mysql>: create table tb2(x tinyint unsigned);  # 0~255
mysql>: insert into tb2 values(256), (-1);    # 255, 0
    
# 0填充約束
mysql>: create table tb3(x tinyint unsigned zerofill);
mysql>: insert into tb3 values(10);  # 010

浮點型

'''類型
float:4位元組,3.4E–38~3.4E+38 *
double:8位元組,1.7E–308~1.7E+308
decimal:M,D大值基礎上+2
'''
'''寬度:
限制存儲寬度
(M, D) => M為位數,D為小數位
float(255, 30):精度最低,最常用
double(255, 30):精度高,占位多
decimal(65, 30):字元串存,全精度
'''

# 建表:
mysql>: create table tb4 (age float(256, 30)); # Display width out of range for column 'age' (max = 255)
mysql>: create table tb5 (age float(255, 31)); # Too big scale 31 specified for column 'age'. Maximum is 30.
mysql>: create table tb5 (age float(65, 30)); # 在合理取值範圍
    
create table t12 (x float(255, 30));
create table t13 (x double(255, 30));
create table t14 (x decimal(65, 30));

字元串:資料庫優化 - char效率要高於varchar

'''類型
char:定長
varchar:不定長
'''
'''寬度
限制存儲寬度
char(4):以4個字元存儲定長存儲數據
varchar(4):數據長度決定字元長度,為可變長度存儲數據
'''

# 建表:
mysql>: create table ts1 (s1 char(4), s2 varchar(4));
mysql>: insert into ts1 values('adcde', 'xyzabc');

時間

'''類型
year:yyyy(1901/2155)
date:yyyy-MM-dd(1000-01-01/9999-12-31)
time:HH:mm:ss
datetime:yyyy-MM-dd HH:mm:ss(1000-01-01 00:00:00/9999-12-31 23:59:59)
timestamp:yyyy-MM-dd HH:mm:ss(1970-01-01 00:00:00/2038-01-19 ??)
'''

# 建表:
mysql>: create table td1 (my_year year, my_date date, my_time time);
mysql>: insert into td1 values(1666, '8888-8-8', '8:8:8');  # 時間需要在取值訪問內
mysql>: create table td2 (my_datetime datetime, my_timestamp timestamp);   
mysql>: insert into td2 values('2040-1-1 1:1:1', '2040-1-1 1:1:1');  # 時間需要在取值訪問內   
mysql>: insert into td2(my_datetime) values('2040-1-1 1:1:1');  # 時間需要在取值訪問內 

枚舉與集合

# 枚舉與集合:為某一個欄位提供選項的 - 枚舉只能單選(1個),集合可以多選(0-n個)

# 建表
# enum、set預設值為NULL
mysql>: create table tc1 (name varchar(20), sex enum('男', '女', '哇塞'), hobbies set('男', '女', '哇塞'));
mysql>: insert into tc1 values('ruakei', '哇塞哇塞', '未知');  
    
# enum、set手動設置預設值 '男' 與 '哇塞'
mysql>: create table tc2 (name varchar(20), sex enum('男', '女', '哇塞') default '男', hobbies set('男', '女', '哇塞') default '哇塞');
mysql>: insert into tc2 values('ruakei', '哇塞哇塞', '未知');  
mysql>: insert into tc2(name) values('ruakei');
    
# 對sex、hobbies兩個欄位賦值錯誤,系統預設用空字元串填充(非安全模式),安全模式拋異常
# 如果對出sex、hobbies兩個欄位外的其他欄位進行賦值,這兩個欄位會才有預設值

# 註:對set類型的欄位進行賦值,用一個字元串,字元串內部用,將多個選項隔開,且不能添加空格等其他額外字元
mysql>: insert into tc2 values('ruakei_1', '女', '男,女,哇塞');  

約束

"""
primary key:主鍵,唯一標識,表都會擁有,不設置為預設找第一個 不空,唯一 欄位,未標識則創建隱藏欄位
foreign key:外鍵
unique:唯一性數據, 該條欄位的值需要保證唯一,不能重覆

auto_increment:自增,只能加給key的int類型欄位輔助修飾

not null:不為空 - 針對一些欄位,如註冊時的用戶名,出生人的性別等,這些需求下的欄位,只不能設置為Null,必須要對其賦值
default:預設值 - 對有預設值意外的欄位進行賦值時,有預設值的欄位會被賦預設值

unsigned:無符號 - 存儲的數字從0開始
zerofill:0填充 - 存整數時數據長度小於取值範圍長度,會在數字左方用0填充
"""

mysql>: create table td1 (x int, y int default 0, z int default 100);

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

-Advertisement-
Play Games
更多相關文章
  • 一、cd 這是一個非常基本,也是大家常用的命令,用於切換當前目錄,他的參數就是要切換的目錄的路徑,可以是絕對路徑,也可以是相對路徑。 1 cd /home/keshengtao/ 絕對路徑 2 cd ./path cd ../path 相對路徑 二、絕對/相對路徑 絕對路徑:從根目錄開始的文件位置 ...
  • 這篇文章主要通過分析高通recovery目錄下的recovery.cpp源碼,對recovery啟動流程有一個巨集觀的瞭解。 當開機以後,在lk階段,如果是recovery,會設置boot_into_recovery=1,然後讀取recovery.img鏡像,把recovery.img的地址和ramd ...
  • 一、ping命令 二、ipconfig命令 ipconfig實用程式可用於顯示當前的TCP/IP配置的設置值。這些信息一般用來檢驗人工配置的TCP/IP設置是否正確。 三、arp命令(地址轉換協議) 四、traceroute命令 五、route命令 六、nslookup命令 七、nbtstat命令 ...
  • Linux基礎知識之文件許可權(一) Linux優點之一就是它擁有多用戶多任務的環境,在提供文件共用的同時也能保證用戶文件的安全性。所以,設置文件的許可權管理變得尤為重要。 Linux基礎知識之文件許可權(一) 1. 基礎許可權 1.1許可權講解 1.2 許可權更改 chgrp:改變文件的所屬群組 chmod ...
  • 什麼是布隆過濾器?它實際上是一個很長的二進位向量和一系列隨機映射函數。把一個目標元素通過多個hash函數的計算,將多個隨機計算出的結果映射到二進位向量的位中,依次來間接標記一個元素是否存在於一個集合中。布隆過濾器可以做什麼?布隆過濾器可以用於檢索一個元素是否在一個集合中。它的優點是空間效率和查詢時間 ...
  • 平時遇到的死鎖,絕大多數情況下,都可以根據當時的場景進行重現,然後具體分析解決,下文這個死鎖幾次嘗試測試模擬,均沒有成功重現在嘗試用profile跟蹤加鎖順序之後,大概可以推斷到當時死鎖發生的原因,但是仍有無法重現,為了避免不必要的麻煩,這裡用測試表的方式,儘可能還原嘗試的場景,來做進一步的分析。死 ...
  • ## SQL Server 命令式操作 - 首先 sql server 的基本操作分為三類 - CREATE (創建資料庫) - ALTER(修改資料庫) - DROP(刪除資料庫) **CREATE**創建資料庫 ```CREATE DATABASE TEST1 ##資料庫名稱 ON primar ...
  • 1.Playbook劇本小結 1.什麼是playbook,playbook翻譯過來就是“劇本”,那playbook組成如下 play: 定義的是主機的角色task: 定義的是具體執行的任務playbook: 由一個或多個play組成,一個play可以包含多個task任務 簡單理解為: 使用不同的模塊 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...