MySQL數據類型/屬性/增刪改查(14)

来源:https://www.cnblogs.com/xiukang/archive/2018/04/18/8569966.html
-Advertisement-
Play Games

MySQL數據類型 日期類型 ·date date數據類型負責存儲日期信息(1000-01-01到9999-12-31)可以使用數字和字元串插入(20180809或"2018-08-09")非數字或字母使用分隔符 ·datetime datetime數據類型負責存儲日期和時間信息的組合(1000-0 ...


MySQL數據類型

  • 日期類型

·date

date數據類型負責存儲日期信息(1000-01-01到9999-12-31)
可以使用數字和字元串插入(20180809或"2018-08-09")非數字或字母使用分隔符

·datetime

datetime數據類型負責存儲日期和時間信息的組合(1000-01-01 00:00:00到9999-12-31 23:59:59)
可以使用數字和字元串插入(20180809122556或"2018-08-09 12:25:56")

·time

time數據類型負責存儲時間信息(-838:59:59到838:59:59)

·timestame

timestame自動獲取當前的日期和時間

  • 數值數據類型

·bool和boolean

bool和boolean只是tinyint(1)的別名

·tinyint

tinyint數據類型是MySQL排名第五的整數範圍(無符號值:0~255 有符號值:-128~127)

·smallint

smallint數據類型是MySQL排名第四的整數範圍(無符號值:0~65535 有符號值:-32768~32767)

·mediumint

mediumint數據類型是MySQL排名第三的整數範圍(無符號值:0~16777215 有符號值:-8388608~8388607)

·int

int數據類型是MySQL排名第二的整數範圍(無符號值:0~4294967295 有符號值:-2147483648~2147483647)

·bigint

bigint數據類型是MySQL排名第一的整數範圍(無符號值:0~18446744073709511615 有符號值:-9233372036854755808~9233372036854755807)

·decimal

decimal數據類型是存儲為字元串的浮點數(無符號值:2.2250738585072014E-308~1.7976931348623157E+308 有符號值:-1.7976931348623157E+308~2.2250738585072014E-308)

·double

double數據類型是雙精度浮點數(無符號值:2.2250738585072014E-308~1.7976931348623157E+308 有符號值:-1.7976931348623157E+308~2.2250738585072014E-308)

·float

float數據類型是單精度浮點數(無符號值:1.175494351E-38~3.402823466E+38 有符號值:-3.402823466E+38~-1.175494351E-38)

浮點型比如:double(M,D) M存儲數值的個數,D小數的位數

 

  • 字元串數據類型

·char

char數據類型為MySQL提供了固定的長度,支持最大255個字元,如果插入的字元不足占用length指定的長度,剩餘部分用空格填充

·varchar

varchar數據類型是MySQL的可變長度,支持長度為65536個字元,會保留尾部的空白部分

·longblob(longtext非二進位)

longblob數據類型是MySQL以二進位字元串表示形式,支持長度4294967259個字元

·mediumblob(mediumtext非二進位)

mediumblob數據類型是MySQL二進位字元串表示形式,支持長度16777215個字元

·blob(text非二進位)

blob數據類型是MySQL二進位字元串表示形式,支持長度65535個字元

·tinyblob(tinytext非二進位)

tinyblob數據類型是MySQL二進位字元串表示形式,支持長度255個字元

MySQL屬性

  • primary key

主鍵,只能出現一次

創建自動增加主鍵

create table xiu (
    id smallint not null auto_increment
)

創建單欄位主鍵

create table xiu (
    id varchar(255),
    primary key(id)
)

創建多欄位主鍵

create table xiu (
    id varchar(255) not null,
    age  varchar(255) not null,
    primary key(id,age)
)
  • not null

不能為空

  • auto_increment

自動增長

  • binary

區分大小寫

  • unique

只能出現一次,null可以多次出現

  • national

確保使用預設字元集

  • default

確保沒有任何值可用的情況下,賦予某個常量值

  • zerofill

前導,用0填充

  • unsigned

設置負號

操作資料庫

  • 查看資料庫
show databases;//查看所有資料庫
  • 添加資料庫
create database xiu;//添加名為xiu的資料庫
  • 刪除資料庫
drop database xiu;//刪除名為xiu的資料庫
  • 預設資料庫
use xiu;//預設為xiu資料庫

操作資料庫表

  •  添加表
create table xiu (
    id tinyint primary key auto_increment,//主鍵,自增
    name varchar(20) not null,//不能為空
    age int not null//不能為空
)
  • 查詢表
show create table xiu;//查詢xiu表
  • 重命名
rename table xiu to kang;//將xiu表重命名為kang表
  • 刪除表
drop table xiu;//刪除xiu表

操作資料庫欄位

  • 添加一個列
alter table xiu add column kang varchar(10);
  • 修改一個列
alter table xiu change kang kang varchar(10) not null;
  • 刪除一個列
alter table xiu drop birdate;
  • 重命名一個列
alter table kang change age sex varchar(10);

數據的操作

  • 添加一條數據
insert into xiu values(1,"name","age");
  • 指定欄位添加值
insert into xiu (name,age) values ("name","age");//因為主鍵是自增,所以可以不用添加id欄位
  • 查看數據
select * from xiu;//*代表查詢所有欄位,也可以指定欄位查詢
  • 修改數據
update xiu set name="user" where id=1;//將id=1的數據的name欄位的值修改為"user"
  • 刪除數據
delete from xiu where id = 1;//刪除id為1的數據

 添加查詢

  • 欄位與值相等

=

 (查詢xiu表的數據,條件為name="user")

select * from xiu where name = "user";
  • 同時滿足兩個條件

and

(查詢xiu表的數據,同時滿足這兩個條件name="user",age=18)

select * from xiu where name="user" and age=18;
  • 滿足任意條件
or (查詢xiu表的數據,滿足其中一個條件name="user",age=18)
select * from xiu where name="user" or age=18;
  • 該欄位與值相等
in (查詢xiu表的數據,滿足其中任一條件age=24,age=18)
select * from xiu where age in(24,18);
  • 該欄位與值不相等

not in

(查詢xiu表的數據,不滿足其中任一條件age=24,age=18)

select * from xiu where age not in(24,18);
  • 該欄位滿足是該值,主要判斷空值
 is (查詢xiu表的數據,條件為age=null)
select * from xiu where age is null;
  • 該欄位不滿足該值 is not 值

 (查詢xiu表的數據,條件為age!=null)

select * from xiu where age is not null;
  • 模糊查詢需要通配符

like

‘_’:表示占一位 

‘%’:表示占零位或者多位

 (查詢xiu表的數據,條件為name值的第二個字元為s)

select * from xiu where name like("_s%");
  • 模仿查詢,需要通配符‘_’‘%’

not like

 (查詢xiu表的數據,條件為name值的第二個字元不為s)

select * from xiu where name not like("_s%");
  • 範圍查詢

between

 (查詢xiu表的數據,條件為age的值的範圍是10-30的數)

select * from xiu where age between 10 and 30;
  • 去除重覆

distnct

(查詢xiu表的name欄位,條件為刪除重覆的name值)

select distinct name from xiu;
排序
  • 升序 

order by ... asc

 (查詢xiu表的數據,按照age從小到大排序)

select * from xiu order by age asc;
  • 降序

order by ... desc

 (查詢xiu表的數據,按照age從大到小排序)

select * from xiu order by age desc;
截取 limit (查詢xiu表的數據,獲取第一條數據開始的三條的數據)
select * from xiu limit 0,3;
聚合函數
  • avg平均值
  • max最大值
  • min最小值
  • sum和
  • count(空值不計數)數據條數
(獲取xiu表中name欄位有多少條數據)
select count(name) from xiu;
分組 group by where後不能直接添加聚合函數  (將xiu表按欄位age進行分組,然後獲取每個組最大的id)
select max(id) from xiu group by age;
過濾 having (獲取每個組最大的id,且id不能為2)
select * from xiu group by age having id != 2;
 
  • where與having的區別
where在group by之前,針對每一行的數據 having在group by之後,針對每一組的數據     多表查詢 (查詢xiu表的id欄位和kang表的name欄位)
select xiu.id,kang.name from xiu,kang; 
  • as(臨時名)

as可以預設不寫

select x.id,k.name from xiu as x,kang as k;
子查詢 in滿足集合中任意一個條件即可 not in不滿足集合中的條件 =any相當於in <any小於集合中的最大值 >any大於集合中的最小值 !=any不等於集合中的值 =all等於集合中的所有值 <all小於集合中的最小值 >all大於集合中的最大值 !=all相當於not in  (查詢kang表成績有80分的姓名,然後根據姓名在xiu表中查詢id)
select id from xiu where name in(select name from kang where sum = 80); 
連接查詢 :多表的操作
  • 內連接  inner join(inne可以省略)
on    表示連接時就判斷,不生成笛卡爾集
select * from xiu inner join kang on xiu.name = kang.name;
where 表示先生成笛卡爾集,在進行過濾
select * from xiu inner join kang where xiu.name = kang.name;
using 前提 擁有相同的欄位名
select * from xiu inner join kang using (name);
  • 外鏈接  outer join(outer可以省略)外連接必須添加條件
左連接  沒有連接成功,左表數據保留,右表用空值代替         左表名 left outer join 右表名 on/using 條件 右連接  沒有連接成功,左表用空值代替,右表數據保留         左表名 right outer join 右表名 on/using 條件   笛卡爾連接 連接時沒有添加條件 一張表的數據與另外一張表的所有數據連接   外鍵約束 foreign key(從表欄位)references 主表名(主表主鍵)   外鍵的查詢 show create table 表名   外鍵的刪除 alter table 表名 drop foreign key 外鍵名   外鍵的添加 alter table 表名 add foreign key(從表欄位)references 主表名(主表主鍵)   主表更新 on update   主表刪除 on delete   允許的級聯 cascade 如果主表被更新或刪除,那麼從表也會執行相應操作 set null如果表名刪除或更新,那麼從表變成null restrict拒絕主表的相關操作 預設值
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1、安裝Charles,示例版本為4.0.1 2、Proxy Proxy Settings 3、MacOS Terminal ifconfig 獲取本機IP地址,如192.168.1.14。 按照上一步驟的設置,代理地址就是192.168.1.14:8888 4、手機(iOS系統),設置 無線區域網 ...
  • 1.寫在最前 本文基於 Linux Kernel 2.6.20 的源代碼,分析的是本版本linux的進程模型和其O(1) 調度器的基本演算法。 源碼瀏覽地址: https://elixir.bootlin.com/linux/v2.6.20/source/kernel 2.關於進程 2.1進程的定義 ...
  • FATFS 版本:Nov 09 14 R0.10c 在 FATFS 已經移植好的基礎上,首先打開 ffconf.h 配置文件,找到如下圖配置項: 可以將此值從 0 改為 1 使用 static working buffer on the BSS,但官方不建議這麼做,會產生線程安全問題(Always ...
  • 首次搭建自己的網站,在本地wamp服務上沒有任何錯誤,但是同步到阿裡雲上就報錯了,是什麼原因呢? 原來,首次搭建網站要給予某些目錄許可權,否則許可權無法運行,肯定報錯的。我是把Application下的目錄全部給與了777許可權。 chmod -R 777 /home/wwwroot/xiaokai/Ap ...
  • 常見HTTP狀態碼大全1xx(臨時響應)表示臨時響應並需要請求者繼續執行操作的狀態代碼。代碼 說明http狀態碼 100 (繼續) 請求者應當繼續提出請求。 伺服器返回此代碼表示已收到請求的第一部分,正在等待其餘部分。http狀態碼 101 (切換協議) 請求者已要求伺服器切換協議,伺服器已確認並準 ...
  • 轉載自https://www.linuxidc.com/Linux/2017-03/142299.htm Ubuntu 16.04 LTS 降級安裝GCC 4.8 Ubuntu 16.04 LTS 降級安裝GCC 4.8 由於gcc在5.x版本修改了ABI,導致新版本gcc編譯的二進位文件放在老的環 ...
  • 簡介: SSL 協議的3個特性: 保密:通過SSL鏈接傳輸的數據是加密的 鑒別:通信雙方的身份鑒別,通常是可選的,但至少有一方需要驗證(通常是服務端) 完成性:傳輸數據的完整性檢查 從性能角度考慮,加密是一項計算昂貴的處理,因此儘量不要講整個Web採用SSL鏈接,實際部署中,選擇有必要進行安全加密的 ...
  • 本文內容: 什麼是字元集?什麼是校對集? 查看字元集和校對集 設置字元集和校對集 mysql中的中文數據問題 首發日期:2018-04-19 什麼是字元集?什麼是校對集? 字元集是字母和符號的集合,每一個字元編碼都由字元集決定。 校對集是字母和符號的校對標準。校對集影響著字元的排序和搜索。 查看字元... ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...