第十六章、淺識資料庫

来源: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
  • Dapr Outbox 是1.12中的功能。 本文只介紹Dapr Outbox 執行流程,Dapr Outbox基本用法請閱讀官方文檔 。本文中appID=order-processor,topic=orders 本文前提知識:熟悉Dapr狀態管理、Dapr發佈訂閱和Outbox 模式。 Outbo ...
  • 引言 在前幾章我們深度講解了單元測試和集成測試的基礎知識,這一章我們來講解一下代碼覆蓋率,代碼覆蓋率是單元測試運行的度量值,覆蓋率通常以百分比表示,用於衡量代碼被測試覆蓋的程度,幫助開發人員評估測試用例的質量和代碼的健壯性。常見的覆蓋率包括語句覆蓋率(Line Coverage)、分支覆蓋率(Bra ...
  • 前言 本文介紹瞭如何使用S7.NET庫實現對西門子PLC DB塊數據的讀寫,記錄了使用電腦模擬,模擬PLC,自至完成測試的詳細流程,並重點介紹了在這個過程中的易錯點,供參考。 用到的軟體: 1.Windows環境下鏈路層網路訪問的行業標準工具(WinPcap_4_1_3.exe)下載鏈接:http ...
  • 從依賴倒置原則(Dependency Inversion Principle, DIP)到控制反轉(Inversion of Control, IoC)再到依賴註入(Dependency Injection, DI)的演進過程,我們可以理解為一種逐步抽象和解耦的設計思想。這種思想在C#等面向對象的編 ...
  • 關於Python中的私有屬性和私有方法 Python對於類的成員沒有嚴格的訪問控制限制,這與其他面相對對象語言有區別。關於私有屬性和私有方法,有如下要點: 1、通常我們約定,兩個下劃線開頭的屬性是私有的(private)。其他為公共的(public); 2、類內部可以訪問私有屬性(方法); 3、類外 ...
  • C++ 訪問說明符 訪問說明符是 C++ 中控制類成員(屬性和方法)可訪問性的關鍵字。它們用於封裝類數據並保護其免受意外修改或濫用。 三種訪問說明符: public:允許從類外部的任何地方訪問成員。 private:僅允許在類內部訪問成員。 protected:允許在類內部及其派生類中訪問成員。 示 ...
  • 寫這個隨筆說一下C++的static_cast和dynamic_cast用在子類與父類的指針轉換時的一些事宜。首先,【static_cast,dynamic_cast】【父類指針,子類指針】,兩兩一組,共有4種組合:用 static_cast 父類轉子類、用 static_cast 子類轉父類、使用 ...
  • /******************************************************************************************************** * * * 設計雙向鏈表的介面 * * * * Copyright (c) 2023-2 ...
  • 相信接觸過spring做開發的小伙伴們一定使用過@ComponentScan註解 @ComponentScan("com.wangm.lifecycle") public class AppConfig { } @ComponentScan指定basePackage,將包下的類按照一定規則註冊成Be ...
  • 操作系統 :CentOS 7.6_x64 opensips版本: 2.4.9 python版本:2.7.5 python作為腳本語言,使用起來很方便,查了下opensips的文檔,支持使用python腳本寫邏輯代碼。今天整理下CentOS7環境下opensips2.4.9的python模塊筆記及使用 ...