錶框mysql mysql 表的操作

2021-10-19 04:48:37 字數 3333 閱讀 2554

mysql **式

語法:create table 表名(

欄位名1 型別[(寬度) 約束條件],

欄位名2 型別[(寬度) 約束條件],

欄位名3 型別[(寬度) 約束條件]

注意:1. 在同一張表中,欄位名是不能相同

2. 寬度和約束條件可選

3. 欄位名和型別是必須的

表的資料型別

整數型別:tinyint smallint mediumint int bigint

為該型別指定寬度時,僅僅只是指定查詢結果的顯示寬度,與儲存範圍無關,儲存範圍如下其實我們完全沒必要為整數型別指定顯示寬度,使用預設的就可以了預設的顯示寬度,都是在最大值的基礎上加1

浮點型別:float double

型別大小範圍(有符號)範圍(無符號)用途

tinyint

1 位元組

(-128,127)

(0,255)

小整數值

smallint

2 位元組

(-32 768,32 767)

(0,65 535)

大整數值

mediumint

3 位元組

(-8 388 608,8 388 607)

(0,16 777 215)

大整數值

int或integer

4 位元組

(-2 147 483 648,2 147 483 647)

(0,4 294 967 295)

大整數值

bigint

8 位元組

(-9 233 372 036 854 775 808,9 223 372 036 854 775 807)

(0,18 446 744 073 709 551 615)

極大整數值

float

4 位元組

(-3.402 823 466 e+38,-1.175 494 351 e-38),0,(1.175 494 351 e-38,3.402 823 466 351 e+38)

0,(1.175 494 351 e-38,3.402 823 466 e+38)

單精度浮點數值

double

8 位元組

(-1.797 693 134 862 315 7 e+308,-2.225 073 858 507 201 4 e-308),0,(2.225 073 858 507 201 4 e-308,1.797 693 134 862 315 7 e+308)

0,(2.225 073 858 507 201 4 e-308,1.797 693 134 862 315 7 e+308)

雙精度浮點數值

decimal

對decimal(m,d) ,如果m>d,為m+2否則為d+2

依賴於m和d的值

依賴於m和d的值

小數值日期型別

表示時間值的日期和時間型別為datetime、date、timestamp、time和year。

型別大小

(位元組)範圍格式用途

date

1000-01-01/9999-12-31

yyyy-mm-dd

日期值time

'-838:59:59'/'838:59:59'

hh:mm:ss

時間值或持續時間

year

1901/2155

yyyy

年份值datetime

1000-01-01 00:00:00/9999-12-31 23:59:59

yyyy-mm-dd hh:mm:ss

混合日期和時間值

timestamp

1970-01-01 00:00:00/2038

結束時間是第 2147483647 秒,北京時間 2038-1-19 11:14:07,格林尼治時間 2023年1月19日 凌晨 03:14:07

yyyymmdd hhmmss

混合日期和時間值,時間戳

字串型別

指char、varchar

注意:char和varchar括號內的引數指的都是字元的長度

char型別:定長,簡單粗暴,浪費空間,訪問速度快

字元長度範圍:0-255(乙個中文是乙個字元,是utf8編碼的3個位元組)

儲存:儲存char型別的值時,會往右填充空格來滿足長度

例如:指定長度為10,存》10個字元則報錯,存<10個字元則用空格填充直到湊夠10個字元儲存

檢索:在檢索或者說查詢時,查出的結果會自動刪除尾部的空格,除非我們開啟pad_char_to_full_length sql模式

varchar型別:變長,精準,節省空間,訪問速度慢

字元長度範圍:0-65535(如果大於21845會提示用其他型別 。mysql行最大限制為65535位元組,字元編碼為utf-8

儲存:varchar型別儲存資料的真實內容,不會用空格填充,如果'ab ',尾部的空格也會被存起來

強調:varchar型別會在真實資料前加1-2bytes的字首,該字首用來表示真實資料的bytes位元組數(1-2bytes最大表示65535個數字,正好符合mysql對

row的最大位元組限制,即已經足夠使用)

如果真實的資料<255bytes則需要1bytes的字首(1bytes=8bit 2**8最大表示的數字為255)

如果真實的資料》255bytes則需要2bytes的字首(2bytes=16bit 2**16最大表示的數字為65535)

檢索:尾部有空格會儲存下來,在檢索或者說查詢時,也會正常顯示包含空格在內的內容

列舉型別與集合型別

欄位的值只能在給定範圍中選擇,如單選框,多選框

enum 單選只能在給定的範圍內選乙個值,如性別 *** 男male/女female

set 多選 在給定的範圍內可以選擇乙個或乙個以上的值(愛好1,愛好2,愛好3...)

完整性約束

not null - 不可空  de****t 預設值為

unqiue  唯一性

聯合唯一:create table service(id int primary key auto_increment,name varchar(20),host varchar(15) not null,port int not null,unique(host,port));

primary key:單單從約束角度去看,primary key就等同於not null unique

強調(******)

1、一張表中必須有,並且只能有乙個主鍵

2、一張表中都應該有乙個id欄位,而且應該把id欄位做成主鍵

聯合主鍵  create table t19(ip char(15),port int,primary key(ip,port));

MySQL MySQL資料庫表的join操作

1.引入 我們的開發需求中,會經常使用到倆張資料庫表的關聯操作,根據我們不同的需求,需要對這倆張表進行不同的操作。無論我們怎麼樣操作,其結果都是這倆張表裡面的內容。我們通過join的操作,可以獲取資料庫表裡面的任何內容。下面,我們根據倆張資料庫表進行理解。2.建立測試資料庫表 1 建立員工表 emp...

雜湊表mysql MySQL中雜湊表

也稱為雜湊表 由直接定址表改進而來.先看直接定址表 當關鍵字的全域u比較小時,直接定址是一種簡單而有效的技術。加入某應用要用到乙個動態集合,其中每個元素都有乙個取自全域u 的關鍵字。同時假設沒有兩個元素具有相同的關鍵字 用乙個陣列 即直接定址表 t 0.m 1 表示動態集合,其中每個位置 或稱槽或桶...

mysql mysql分表和表分割槽詳解

為什麼要分表和分割槽?日常開發中我們經常會遇到大表的情況,所謂的大表是指儲存了百萬級乃至千萬級條記錄的表。這樣的表過於龐大,導致資料庫在查詢和插入的時候耗時太長,效能低下,如果涉及聯合查詢的情況,效能會更加糟糕。分表和表分割槽的目的就是減少資料庫的負擔,提高資料庫的效率,通常點來講就是提高表的增刪改...