第六天MySQL

来源:https://www.cnblogs.com/jane315/archive/2020/05/09/12861095.html
-Advertisement-
Play Games

DDL語言庫與表的管理(創建、修改、刪除)、一些常見的數據類型(整形、浮點|定點、日期,字元) ...


 

2020 5/9

 

二十二、DDL(數據定義語言)->用於庫和表的管理

一、 庫的管理

a)        創建

b)       修改

c)        刪除

二、 表的管理

a)        創建: create

b)       修改: alter

c)        刪除: drop

#庫的管理

1.庫的創建

語法:

create database [if not exists] 庫名;(if not exists->是為了提高容錯性,沒有就創建、有的就不創建)

如:CREATE  DATABASE if not exists books;

 

2.庫的修改(基本上不修改,若想修改庫名,則需要在服務端的data里修改)

修改庫的字元集:

ALTER DATABASE 庫名 CHARACTER SET 字元集;

如:

ALTER DATABASE books CHARACTER SET gbk;

3.庫的刪除

DROP DATABASE IF EXISTS庫名;

如:DROP DATABASE IF EXISTS books;

 

#表的管理

 

1.表的創建

語法:

create table(if not exists) 表名(

        列名 類型[(長度) 約束],

        列名 類型[(長度) 約束],

        列名 類型[(長度) 約束],

        …

        列名 類型[(長度) 約束]

);

 

案例:

CREATE TABLE emp5(

       id INT(7),

       First_name VARCHAR(25),

       Last_name VARCHAR(25),

       Dept_id INT(7)

); (可使用if not exists來提高容錯性)

查看表結構:

 

 

2.表的修改

①     修改列名

②     修改列的類型或約束

③     添加新列

④     刪除列

⑤     修改表名

語法:

alter table 表名 change|modify|drop|add column 列名 【列類型 約束】;

 

#修改列名

語法:

ALTER TABLE 表名 CHANGE COLUMN舊列名 新列名 新類型(一定要加上);

案例:把Last_name欄位名稱改為last_name;

ALTER TABLE emp5 CHANGE COLUMN Last_name last_name VARCHAR(30);

#修改列的類型或約束

語法:ALTER TABLE 表名 CHANGE COLUMN列名 新類型或約束;

案例:修改了last_name欄位的長度

ALTER TABLE emp5 MODIFY COLUMN last_name VARCHAR(49);

#添加新列

語法:

ALTER TABLE 表名 ADD 新列名 新類型【約束】;

案例:向表中添加新列test_column,類型自定義

ALTER TABLE emp5 ADD COLUMN test_column VARCHAR(25);

#刪除列

語法:

ALTER TABLE emp5 ADD COLUMN test_column VARCHAR(25);

案例:刪除表中的test_column欄位

ALTER TABLE emp5 DROP COLUMN test_column;

語法:

ALTER TABLE 表名 RENAME [TO] 新表名;

案例:把表名重命名為emp6;

ALTER TABLE emp5  RENAME TO emp6;

 

3.表的刪除

語法:

drop table 表名;

案例:

DROP TABLE 【if exists】emp6;(可使用if exists來提高容錯性)

  1. 表的複製

#僅僅複製表的結構(使用LIKE關鍵字)

CREATE TABLE employees2 Like employees;

 

 

 

#複製表的數據+結構(使用子查詢)

CREATE TABLE employee3

SELECT * FROM employees;

 

 

#只複製部分表的數據(使用帶篩選條件的子查詢)

CREATE TABLE employee4

SELECT * FROM employees

WHERE employee_id>150;

 

#僅僅複製某些欄位(不攜帶數據)

CREATE TABLE employee5

SELECT job_id,department_id FROM employees

WHERE 1=0;(只要where後的篩選條件不成立,那麼就不會接待數據)

 

 

 

二十三、常見的數據類型

分類:

數值型:

       整形

       小數:

              浮點型

              定點型

字元型:

       較短的文本:char、varchar

       較長的文本:text、bolb(較長的二進位數據)

#整形

類型                     tinyint  smallint    mediumint   int/integer    bigint

所占位元組大小         1         2             3                  4                  8

特點:

①     如果不設置有符號還是無符號,則預設為有符號,如果想設置為無符號,則需要添加unsigned關鍵字

②     如果要插入的數據超出了整形的範圍,會報出out of range異常,並且插入臨界值

③     如果不設置長度,則系統會有預設的長度

④     類型中的長度欄位代表的是顯示數據的最大寬度,若數據小於該長度則會用0在左邊填充,但必須搭配zerofull關鍵字使用(此時預設為無符號整形)

 

#小數

1.浮點型

a)        float(M,D)

b)       double(M,D)

2.定點型

a)        dec(M,D)

b)       decimal(M,D)

特點:

①     M代表的是整數和小數部分的總長度,D代表的是小數部位的長度,若超過範圍則插入臨界值

②     M和D度可以省略,如果是float和double,則會根據插入的數值來決定精度,如果是decimal,則M預設為10,D預設為0

③     定點型的精度較高,如果需要求插入的數值類型精度較高如貨幣元素那則可以考慮使用

使用原則:所選擇的類型越簡單越好,能保存的數值的類型越小越好

 

#字元型

1.較短的文本

char(M)

varchar(M)

binary和varbinary(包含二進位文本字元串)

enum->枚舉類型,要求插入的值必須屬於列表中指定的值之一

set->集合類型,和Enum類型類似,裡面可以保存0~64個成,一次可以選取多個成員

2.較長的文本

text

bolb(較長的二進位數據)

特點:

①     關於char 和varchar

                 寫法                      M的意思                                                  特點                   空間的耗費

char        char(M)          最大的字元數(可以省略,預設為1)      固定長度的字元              高

varchar    varchar(M)    最大的字元數(不可省略)                       可變長度的字元              低

關於固定與可變長度,那“數字”舉例,char會給它分配M個字元大小的空間,而varchar 就給它分配2個空間,長度隨輸入的值變化

 

#日期型

 

date:只保存日期

time:只保存時間

year:只保存年

                            位元組         範圍             時區等的影響

datetime                8          1000-9999              受

timestamp             4           1970-2038            不受

 

具體如下:

CREATE TABLE tab_date(

                     t1 DATETIME,

                     t2 TIMESTAMP

);#創建表

 

INSERT INTO tab_date VALUES(now(),now());

SELECT * FROM tab_date;

 

 

 

show VARIABLES like 'time_zone';

set time_zone ='+9:00';#改變時區

 

可發現改變時區後,t2的值發生變化,受到了時區的影響

 


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

-Advertisement-
Play Games
更多相關文章
  • Linux常用命令大全(非常全!!!) 最近都在和Linux打交道,感覺還不錯。我覺得Linux相比windows比較麻煩的就是很多東西都要用命令來控制,當然,這也是很多人喜歡linux的原因,比較短小但卻功能強大。我將我瞭解到的命令列舉一下,僅供大家參考: 系統信息 arch 顯示機器的處理器架構 ...
  • linux進程,這塊太難了,太多命令,太多新概念.作為初學者戰戰兢兢.同時也在匍匐前進. ...
  • Linux內核在啟動時會列印出內核記憶體空間的佈局圖,下麵是ARM Vexpress平臺列印出來的記憶體空間佈局圖: 這部分信息列印是在mem_init()函數中實現的。 編譯器在編譯目標文件並且鏈接完成之後,就可以知道內核映像文件最終的大小,接下來打包成二進位文件,該操作由 控制,其中也劃定了內核的內 ...
  • 常用選項: -i #直接修改目標文件內容. -n #取消預設輸出. 實例: #刪除 sed -i '/content/d' temp.txt #刪除中temp.txt匹配content內容的行. sed -i '/^$/d' temp.txt #刪除文件中所有空行. sed -i 'nd' temp ...
  • public static class QueryableExtension { public static IQueryable<T> Paged<T>(this IQueryable<T> query, Expression<Func<T, object>> expression, OrderB ...
  • 十四、讀寫分離 Atlas架構 1、安裝軟體 2、修改配置 3、啟動atlas 4、測試 5、管理atlas 6、擴展——atlas 自動分表 ...
  • 十三、mysql高可用 1、普通主從複製架構存在的不足 高可用? 業務不間斷的工作。 用戶的體驗不出來業務斷點。 普通主從環境,存在的問題: 2、企業高可用解決方案: MMM(過時) MHA(目前推薦) PXC、Galera Cluster(出現很多年,企業很少用) 5.7.17 MGR 、Inno ...
  • 十二、mysql主從複製 1、主從複製原理 1.主從複製的前提: 1.1兩台mysql實例(多台物理機,或者多實例) 1.2主庫要開啟二進位日誌 1.3主庫要提供複製相關用戶,replication slave,一個比較特殊的許可權。 1.4從庫需要將和主庫相差的數據,進行追加 一般情況下可以人為備份 ...
一周排行
    -Advertisement-
    Play Games
  • 基於.NET Framework 4.8 開發的深度學習模型部署測試平臺,提供了YOLO框架的主流系列模型,包括YOLOv8~v9,以及其系列下的Det、Seg、Pose、Obb、Cls等應用場景,同時支持圖像與視頻檢測。模型部署引擎使用的是OpenVINO™、TensorRT、ONNX runti... ...
  • 十年沉澱,重啟開發之路 十年前,我沉浸在開發的海洋中,每日與代碼為伍,與演算法共舞。那時的我,滿懷激情,對技術的追求近乎狂熱。然而,隨著歲月的流逝,生活的忙碌逐漸占據了我的大部分時間,讓我無暇顧及技術的沉澱與積累。 十年間,我經歷了職業生涯的起伏和變遷。從初出茅廬的菜鳥到逐漸嶄露頭角的開發者,我見證了 ...
  • C# 是一種簡單、現代、面向對象和類型安全的編程語言。.NET 是由 Microsoft 創建的開發平臺,平臺包含了語言規範、工具、運行,支持開發各種應用,如Web、移動、桌面等。.NET框架有多個實現,如.NET Framework、.NET Core(及後續的.NET 5+版本),以及社區版本M... ...
  • 前言 本文介紹瞭如何使用三菱提供的MX Component插件實現對三菱PLC軟元件數據的讀寫,記錄了使用電腦模擬,模擬PLC,直至完成測試的詳細流程,並重點介紹了在這個過程中的易錯點,供參考。 用到的軟體: 1. PLC開發編程環境GX Works2,GX Works2下載鏈接 https:// ...
  • 前言 整理這個官方翻譯的系列,原因是網上大部分的 tomcat 版本比較舊,此版本為 v11 最新的版本。 開源項目 從零手寫實現 tomcat minicat 別稱【嗅虎】心有猛虎,輕嗅薔薇。 系列文章 web server apache tomcat11-01-官方文檔入門介紹 web serv ...
  • 1、jQuery介紹 jQuery是什麼 jQuery是一個快速、簡潔的JavaScript框架,是繼Prototype之後又一個優秀的JavaScript代碼庫(或JavaScript框架)。jQuery設計的宗旨是“write Less,Do More”,即倡導寫更少的代碼,做更多的事情。它封裝 ...
  • 前言 之前的文章把js引擎(aardio封裝庫) 微軟開源的js引擎(ChakraCore))寫好了,這篇文章整點js代碼來測一下bug。測試網站:https://fanyi.youdao.com/index.html#/ 逆向思路 逆向思路可以看有道翻譯js逆向(MD5加密,AES加密)附完整源碼 ...
  • 引言 現代的操作系統(Windows,Linux,Mac OS)等都可以同時打開多個軟體(任務),這些軟體在我們的感知上是同時運行的,例如我們可以一邊瀏覽網頁,一邊聽音樂。而CPU執行代碼同一時間只能執行一條,但即使我們的電腦是單核CPU也可以同時運行多個任務,如下圖所示,這是因為我們的 CPU 的 ...
  • 掌握使用Python進行文本英文統計的基本方法,並瞭解如何進一步優化和擴展這些方法,以應對更複雜的文本分析任務。 ...
  • 背景 Redis多數據源常見的場景: 分區數據處理:當數據量增長時,單個Redis實例可能無法處理所有的數據。通過使用多個Redis數據源,可以將數據分區存儲在不同的實例中,使得數據處理更加高效。 多租戶應用程式:對於多租戶應用程式,每個租戶可以擁有自己的Redis數據源,以確保數據隔離和安全性。 ...