mysql--數據庫表的創建及基礎命令

今日目標

  1. 表的創建

  2. 數據庫的數據類型

  3. 表的約束

  4. 表結構的修改和調整

  5. 數據庫的權限管理

  6. 單表的數據的CRUD

sql的一些規范

SQL的分類

SQL腳本注意點

SQL的注釋

ISO提出SQL官方注釋:

1、多行注釋

/* */

2、當行注釋

-- 注釋 注意,空格是必不可少的!!!

MySQL自身提供一種注釋

后面寫注釋

數據庫相關內容的補充

# 查出數據庫創建的一些信息
show create database db_name;
?
# 如果在命令行中,返回SQL很長,導致換行,看起來不太方便時
show create database db_name\G

show指令可以使用模糊查詢

show xxx xxx xx [like 'xx%xxx'];
?

數據編碼校驗集

CREATE DATABASE  [if not exists ] `db_zm`  DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci 

表的創建

基本語法:

create table  [if not exists ] t_name(column1 type [約束條件,]column2 type [約束條件,]……columnN type [約束條件]
)[engine=innodb];

表結構的查詢

desc t_name;
describe t_name;
show columns from user;

查詢創建表的SQL

show create table t_name;

數據庫的數據類型

數據類型

數值型:int,float, double

Number 類型:

數據類型描述
TINYINT(size)-128 到 127 常規。 0 到 255 無符號*。在括號中規定最 大位數。
SMALLINT(size)-32768 到 32767 常規。 0 到 65535 無符號*。在括號中 規定最大位數。
MEDIUMINT(size)-8388608 到 8388607 普通。 0 to 16777215 無符號*。在 括號中規定最大位數。
INT(size)-2147483648 到 2147483647 常規。 0 到 4294967295 無 符號*。在括號中規定最大位數。
BIGINT(size)-9223372036854775808 到 9223372036854775807 常規。 0 到18446744073709551615 無符號*。在括號中規定最大位 數。
FLOAT(size,d)帶有浮動小數點的小數字。在括號中規定最大位數。在 d 參數中規定小數點右側的最大位數。
DOUBLE(size,d)帶有浮動小數點的大數字。在括號中規定最大位數。在 d 參數中規定小數點右側的最大位數。
DECIMAL(size,d)作為字符串存儲的 DOUBLE 類型,允許固定的小數點。

字符串

Text 類型:

數據類型描述
CHAR(size)保存固定長度的字符串(可包含字母、數字以及特殊字 符)。在括號中指定字符串的長度。最多 255 個字符。
VARCHAR(size)保存可變長度的字符串(可包含字母、數字以及特殊字 符)。在括號中指定字符串的最大長度。最多 255 個字 符。 注釋:如果值的長度大于 255,則被轉換為 TEXT 類型。
TINYTEXT存放最大長度為 255 個字符的字符串。
TEXT存放最大長度為 65,535 個字符的字符串。
BLOB用于 BLOBs (Binary Large OBjects)。存放最多 65,535 字節的數據。
binary存儲較小的二進制數據
MEDIUMTEXT存放最大長度為 16,777,215 個字符的字符串。
MEDIUMBLOB用于 BLOBs (Binary Large OBjects)。存放最多 16,777,215 字節的數據。
LONGTEXT存放最大長度為 4,294,967,295 個字符的字符串。
LONGBLOB用于 BLOBs (Binary Large OBjects)。存放最多 4,294,967,295 字節的數據。
ENUM(x,y,z,etc.)允許你輸入可能值的列表。可以在 ENUM 列表中列出最大 65535 個值。如果列表中不存在插入的值,則插入空值。 注釋:這些值是按照你輸入的順序存儲的。 可以按照此格式輸入可能的值: ENUM('X','Y','Z')
SET與 ENUM 類似, SET 最多只能包含 64 個列表項,不過 SET 可存儲一個以上的值。

時間和日期

數據類型描述
DATE()日期。格式: YYYY-MM-DD 注釋:支持的范圍是從 '1000-01-01' 到 '9999-12-31'
DATETIME()日期和時間的組合。格式: YYYY-MM-DD HH:MM:SS 注釋:支持的范圍是'1000-01-01 00:00:00' 到 '9999-12- 31 23:59:59'
TIMESTAMP()時間戳。 TIMESTAMP 值使用 Unix 紀元('1970-01-01 00:00:00' UTC) 至今的描述來存儲。格式: YYYY-MM-DD HH:MM:SS<br/>注釋:支持的范圍是從 '1970-01-01 00:00:01' UTC 到 '2038-01-09 03:14:07' UTC
TIME()時間。格式: HH:MM:SS 注釋:支持的范圍是從 '-838:59:59' 到 '838:59:59'
YEAR()2 位或 4 位格式的年。<br/>注釋: 4 位格式所允許的值: 1901 到 2155。 2 位格式所允許 的值: 70 到69,表示從 1970 到 2069
內容回顧:
  1. 回顧了第一天的相關知識

  2. SQL腳本的注釋

  3. 編碼相關的知識

  4. 數據庫表的創建

  5. 數據庫的數據類型

表的約束

create database 數據庫名稱 default charset="utf8mb4";
create database 數據庫名稱 default charset set utf8mb4;
?
create table `表名稱` (`字段` 該字段的類型 [約束條件,]`字段` 該字段的類型 [約束條件,]-- ……`字段` 該字段的類型 [約束條件]
);
?
// char(20)

MySQL8.0數據庫,存在如下約束條件

1、主鍵約束

2、外鍵約束【需要在后面講解】

3、唯一約束

4、非空約束

5、默認值約束

6、檢查約束

主鍵約束

主鍵(primary key):數據庫中一個獨立無二的字段,該字段不允許數據重復,是一條記錄的唯一標識符。

主鍵約束:強制規范這個字段,特點:不能重復、而且不能為空

非空約束

非空約束(not null):不允許為空,對應就是允許為空(is null)。

默認值約束

default 值,表示如果在插入數據庫,沒有這個字段對應的值,會插入對應的默認值

唯一約束

unique:該字段,不能存在相同的值

檢查約束

檢查約束:SQL標準中檢查很早就出現了,但是MySQL在8.0之前沒有檢查約束(寫上也不報錯,但是也不生效),在8.0之后,MySQL真正實現了檢查約束。

create table user(id int primary key auto_increment,name varchar(255) not null unique,age int default 18,gender varchar(10) check(gender in ("男", "女")),address varchar(255)
)

修改表結構

alter 指令,該指令,主要用來修改已存在的一種數據庫對象的結構

主要使用在調整和修改表結構

  • 增加列

  • 刪除列

  • 修改列類型或者條件

  • 修改列名稱

alter table 表名稱 add 字段名稱 類型 [約束條件];
?
ALTER TABLE 表名稱 drop 字段名稱;
?
ALTER TABLE 表名稱 modify 字段 新類型 [新的約束];
?
ALTER TABLE 表名稱 change 舊字段名稱 新的字段名稱  新類型 [新的約束];
?
# 修改表名稱
ALTER TABLE 表名稱 rename 新名稱;
RENAME TABLE 表名 TO 新表名;

復制表信息

復制表結構

方法一:在create table語句的末尾添加like子句,可以將源表的表結構復制到新表中,語法格式如下。
create table 新表名 like 源表
?
# 注意:會完整的復制表結構,并且連約束也會復制
# 表的數據不會復制

復制表結構和數據

方法二:在create table語句的末尾添加一個select語句,可以實現表結構的復制,甚至可以將源表的表
記錄拷貝到新表中。下面的語法格式將源表的表結構以及源表的所有記錄拷貝到新表中。
create table 新表名 select {*|字段 [, 字段...]} from 源表
?
# 注意:約束中的主鍵和唯一約束復制不了

快速插入數據

方法三:如果已經存在一張機構一致的表,復制數據
insert into 表 select {*|字段 [, 字段...]} from 原表;

用戶管理和權限問題

grant來管理權限

在MySQL8.0之前,grant是集授權、創建用戶、修改密碼到等一系列權限于一身的一個命令。

??grant 權限列表 ?on 庫名.表名 to 用戶名@'客戶端主機' [identified by '密碼' ?with option參數];grant all on *.* TO ljh@'%' indentify by 'ljh';

在8.0之后,主要用來授權,像修改密碼、創建用戶、刪除用戶。

# 創建用戶
create user [if not exists] 用戶名稱@‘localhost’ identified by 密碼;
?
create user if not exists ljh@'%' identified by 'ljh';
?
grant all on db_zm.* to ljh@'%';flush privileges;

撤銷權限

revoke指令

方法1:create和grant結合help CREATE USER;命令:CREATE USER <'用戶名'@'地址'> IDENTIFIED BY ‘密碼’;查看用戶權限: help SHOW GRANTS;命令:show grants ?for '用戶名'@'地址';授權:help GRANT;
?
方法2:直接grant收回權限:REVOKE刪除用戶:DROP USER username
 ? ?生產環境授權用戶建議:
  1、博客,CMS等產品的數據庫授權select,insert,update,delete,create庫生成后收回create權限2、生產環境主庫用戶授權select,insert,update,delete3、生產環境從庫授權select
?
?
創建用戶方法(推薦使用方法三):
方法一:CREATE USER語句創建
CREATE USER user1@’localhost’ IDENTIFIED BY ‘123456’;
    
方法二: INSERT語句創建
INSERT INTO mysql.user(user,host, authentication_string,ssl_cipher,x509_issuer,x509_subject)VALUES('user2','localhost',password('ABCabc123!'),'','','');

刷新權限:?

FLUSH PRIVILEGES;
    ?
方法三: GRANT語句創建
 GRANT SELECT ON *.* TO user3@’localhost’ IDENTIFIED BY ‘123456’;FLUSH PRIVILEGES;
    
語法格式:
grant 權限列表 ?on 庫名.表名 to 用戶名@'客戶端主機' [identified by '密碼' ?with option參數];
??      如:
 grant select on testdb.* to common_user@'%' grant insert on testdb.* to common_user@'%' ?grant update on testdb.* to common_user@'%' ?grant delete on testdb.* to common_user@'%' grant select, insert, update, delete on testdb.* to common_user@'%'grant create on testdb.* to developer@'192.168.0.%'; ?grant alter ?on testdb.* to developer@'192.168.0.%'; ?grant drop ? on testdb.* to developer@'192.168.0.%'; ?grant all ? ?on *.* to dba@localhost; -- dba 可以管理 MySQL 中的所有數據庫 ?show grants; ?-- 查看當前用戶(自己)權限show grants for dba@localhost; ?grant all on *.* to ? dba@localhost; # 移除權限# revoke 跟 grant 的語法差不多,只需要把關鍵字 “to” 換成 “from” 即可revoke all on *.* from dba@localhost; with_option參數GRANT OPTION: 授權選項MAX_QUERIES_PER_HOUR: 定義每小時允許執行的查詢數MAX_UPDATES_PER_HOUR: 定義每小時允許執行的更新數MAX_CONNECTIONS_PER_HOUR: 定義每小時可以建立的連接數MAX_USER_CONNECTIONS: 定義單個用戶同時可以建立的連接數??   

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/13617.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/13617.shtml
英文地址,請注明出處:http://en.pswp.cn/web/13617.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

微信小程序抓取數據包(Proxifier聯動burpsuite)

1、打開bp&#xff0c;確保開啟127.0.0.1&#xff1a;8080監聽地址。 2、點擊setting--proxy&#xff0c;點擊impor CA certificate&#xff0c;生成bp的證書。 保存到桌面為1.cer&#xff0c;文件后綴為cer就OK了&#xff0c;前綴任意 3、安裝證書&#xff0c;雙擊打開剛剛生成…

BERT系列算法解讀

1.bert訓練的方法 為了訓練BERT模型&#xff0c;主要采用了兩種方法&#xff1a;掩碼語言模型&#xff08;Masked Language Model, MLM&#xff09;和下一個句子預測&#xff08;Next Sentence Prediction, NSP&#xff09;。 方法一&#xff1a;掩碼語言模型&#xff08;Mask…

公共Mono模塊筆記

一、公共Mono的主要作用 讓不繼承MonoBehaviour的腳本也能 1.利用幀更新或定時更新處理邏輯 2.利用協同程序處理邏輯 3.可以統一執行管理幀更新或定時更新相關邏輯(不管你是否繼承MonoBehaviour) 二、基本原理 1.通過事件或委托 管理 相關更新函數&#xff08;如AddUpdateLis…

優化電源設計:反激二極管選擇與注意事項

反激二極管也被稱為續流二極管、緩沖二極管、抑制二極管、鉗位二極管或換向二極管&#xff0c;是一種電子元件&#xff0c;通常應用在開關電源和其他涉及電感性負載的電路中。它的主要功能是保護電路&#xff0c;防止感性負載在開關斷開時產生的反激電壓&#xff08;或反電動勢…

DOS學習-目錄與文件應用操作經典案例-xcopy

新書上架~&#x1f447;全國包郵奧~ python實用小工具開發教程http://pythontoolsteach.com/3 歡迎關注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目錄 一.前言 二.使用 三.案例 一.前言 xcopy命令是DOS系統中一個強大的文件和目錄復制工具&…

MySQL——表的約束

表約束 一、概念 ? 表中一定要有各種約束&#xff0c;通過各種約束使得未來插入到數據庫中的數據是合法的&#xff0c;在語法上是沒有問題的&#xff1b; ? 約束本質就是通過技術手段&#xff0c;倒逼著程序員插入正確的數據&#xff0c;換句話說就是&#xff0c;插入進來…

6個精品免費wordpress模板下載

要找到視覺效果非常出色的WordPress模板&#xff0c;我們可以從多個角度來考慮。根據《Smashing WordPress Themes: Making WordPress Beautiful》一書&#xff0c;WordPress不僅僅是一個博客平臺&#xff0c;它還能被用來創建各種風格的網站&#xff0c;從企業網站到攝影畫廊等…

洗地機哪個牌子好?全面評測多款口碑洗地機

洗地機的出現&#xff0c;讓人們擺脫了每天打掃衛生的繁瑣&#xff0c;因為它只需輕輕一推&#xff0c;就能把掃地、拖地、擦地的活全做了&#xff0c;干垃圾濕垃圾統統都能一次清理干凈&#xff0c;操作簡單&#xff0c;更輕松。本文主要分享一些挑選洗地機的技巧&#xff0c;…

python報錯ImportError: The _imagingft C module is not installed

前言 以下解決方案來自gpt&#xff0c;但親測有效&#xff0c;uu們可放心食用 解決方法 ImportError: The _imagingft C module is not installed 錯誤通常表明你的Python環境中缺少用于處理圖像字體的模塊。這可能是由于Pillow&#xff08;PIL的分支&#xff09;庫未正確安…

大數據運維學習筆記之Ambari——筑夢之路

原則&#xff1a;分布式存儲和分布式計算分開 今天就到這里啦。

c語言如何向文件寫入字符串

c語言里向文件寫入字符串&#xff0c;用到fputs語句 fputs&#xff08;str,fp&#xff09;是將str字符數組里的內容寫入到fp指針指向的文件 #include<stdio.h>int main() {FILE *fp;char s[100];fpfopen("ddd.txt","w");fputs("good time\n&q…

PostgreSQL 的pg_rman 和 Oracle 的 RMAN 對比

PostgreSQL 的pg_rman和 Oracle 的 RMAN 對比 PostgreSQL 的pg_rman 和 Oracle 的 RMAN&#xff08;Recovery Manager&#xff09;都是數據庫備份和恢復管理工具&#xff0c;分別用于 PostgreSQL 和 Oracle 數據庫。盡管它們的目的和某些功能類似&#xff0c;但在許多方面也存…

【HarmonyOS4學習筆記】《HarmonyOS4+NEXT星河版入門到企業級實戰教程》課程學習筆記(十)

課程地址&#xff1a; 黑馬程序員HarmonyOS4NEXT星河版入門到企業級實戰教程&#xff0c;一套精通鴻蒙應用開發 &#xff08;本篇筆記對應課程第 17 節&#xff09; P17《16.Ark-狀態管理Prop Link Provide Consume》 將上一節寫出的代碼進行功能模塊封裝&#xff1a;1、任務…

【退役之重學Java】關于 Nacos 注冊中心

一、下載&#xff0c;安裝 見官網 二、配置 流程&#xff1a; 建module&#xff0c;pom&#xff0c;yml&#xff0c;主啟動&#xff0c;業務類 三、功能 負載均衡&#xff1a; Nacos 整合 Ribbon&#xff0c;可以使用 RestTemplate Nacos整合了Ribbon后&#xff0c;可以使用Res…

一個通過ADC采集NTC熱敏電阻的溫度傳感器

前言: 如何設計一個電路,使用具有逐次逼近寄存器(SAR)模數轉換器(ADC)的熱敏電阻直接監測溫度呢?溫度傳感電路需要使用負溫度系數(NTC)熱敏電阻與電阻器串聯形成分壓器,監測-25C至100C的溫度范圍。分壓器具有產生與監測的溫度成反比的輸出電壓的效果。電阻器分壓器的…

如何徹底搞懂迭代器(Iterator)設計模式?

說起迭代器&#xff08;Iterator&#xff09;&#xff0c;相信你并不會陌生&#xff0c;因為我們幾乎每天都在使用JDK中自帶的各種迭代器。那么&#xff0c;這些迭代器是如何構建出來的呢&#xff1f;就需要用到了今天內容要介紹的迭代器設計模式。在日常開發過程中&#xff0c…

查找效率滿分的算法—— “二分查找” 算法 (Java版)

本篇會加入個人的所謂魚式瘋言 ??????魚式瘋言:??????此瘋言非彼瘋言 而是理解過并總結出來通俗易懂的大白話, 小編會盡可能的在每個概念后插入魚式瘋言,幫助大家理解的. &#x1f92d;&#x1f92d;&#x1f92d;可能說的不是那么嚴謹.但小編初心是能讓更多人…

removeAttribute和removeAttributeNode有什么區別(代碼舉例說明)

removeAttribute 和 removeAttributeNode 都是用于從 HTML 元素中移除屬性的 DOM 方法&#xff0c;但它們在用法和接受的參數上有一些區別。 removeAttribute removeAttribute 是一個元素&#xff08;Element&#xff09;對象的方法&#xff0c;它接受一個字符串參數&#xf…

深入了解Nginx(一):Nginx核心原理

一、Nginx核心原理 本節為大家介紹Nginx的核心原理,包含Reactor模型、Nginx的模塊化設計、Nginx的請求處理階段. &#xff08;本文源自微博客,且已獲得授權&#xff09; 1.1、Reactor模型 Nginx對高并發IO的處理使用了Reactor事件驅動模型。Reactor模型的基本組件包含時間收集…

華為OBS命令行簡單使用

華為OBS&#xff08;Object Storage Service&#xff09;是一種云存儲服務&#xff0c;提供了高可靠、高性能、安全的數據存儲能力。通過使用OBS的命令行工具obsutil&#xff0c;用戶可以方便地進行文件上傳、下載、刪除等操作&#xff0c;而無需依賴圖形界面。下面&#xff0c…