mysql列型別 列約束

2021-08-28 18:03:14 字數 3534 閱讀 5421

mysql伺服器端資料的邏輯結構:

server=>database=>table=>row=>column

1.常用的sql語句:

(1)增:insert into

表 values(值, 值, ...);

(2)刪:delete  from  表;

(3)改:update

表 set 列=值, ...,列=值 ;

(4)查:select  *  from 表;

2.mysql中的列型別

(1)數值型別   —— 可用引號括起來也可以不用

整數數值型別:student(  age tinyint  )

tinyint:微整數,佔1位元組,-128~127

smallint:小整數,佔2位元組,-32768~32767

int:整數,佔4個位元組, -2147483648~2147483647

bigint:大整數,佔8個位元組,.....

小數數值型別:  product( price decimal(7, 4) )  //一共7位,其中4位小數字

float(m,d):單精度浮點型,佔4位元組,3.4e38,計算時可能產生四捨五入

double(m,d):雙精度浮點型,佔8位元組 1.8e30,計算時可能產生四捨五入

decimal(m,d):定點小數,不會產生精度捨入

布林數值型別:   product( isonsale bool)

bool,布林/真假型別只能取值為true/false。注意:mysql資料庫中沒有真正意義上的布林型別,true等同於1,false等同於0

(2)日期時間型別  —— 必須用引號括起來

date:日期型別,形如'2017-5-10'

time:時間型別,形如'22:08:5'  

datetime:日期/時間型別,形如'2017-10-25 22:8:5'

(3)字串型別  —— 必須用引號括起來   emp(resume ...)

char(m):定長字串,比varchar操作速度更快,m不能超過255

varchar(m):變長字串,比char更能節約空間,m不能超過65535

text(m):大型變長字串,m不能超過2g

3.mysql中的列約束

constraint:約束,資料庫中某列上的資料往往必須符合某種規範,如編號不能重複、年齡必須在一定範圍、密碼有長度限制、員工所在部門必須真的存在......類似的限制/規範就稱為「列約束」

(1)主鍵約束 —— primary  key

宣告為主鍵的列上,不能出現重複值,也不能出現null值,所有的記錄會自動按照主鍵列上值由小到大排序 —— 因此乙個表中至多只能有乙個主鍵列。

(2)非空約束 —— not null

宣告為非空的列,不能出現null,但可以出現重複值。

(3)唯一約束 —— unique

宣告為唯一約束的列,不能出現重複的值,但可以出現null,且允許多個null出現(兩個null值是不等的)

(4)檢查約束 —— check

檢查約束可以檢查新插入的資料是否滿足指定的條件,如:

student( age int check(age>=18  and  age<=60)  )

mysql不支援此約束!

(5)預設值約束 —— default

student(sid int, *** char(1) default '

男' ); 

使用預設值的方式

1)insert into student values(10, default);

2)insert into student(sid) values(20);

(6)外來鍵約束 —— foreign key...references

4.mysql中使用自增列

id int primary key auto_increment

自增列:只能用於整數列,且必須是主鍵列。自增列無需手工賦值,會自動採用1/2/3....數列,在當前最大值基礎上+1。

注意:sql標準中沒有此關鍵字,它是mysql所專有的!

例子:set names utf8;

#丟棄資料庫

drop database if exists tedu;

#建立資料庫

create database tedu charset=utf8;

#進入資料庫

use tedu;

#建立部門表

create table dept(

did intprimary key,

dname varchar(32) unique not null,

empcount int

);insert into dept values('10','研發部','3');

insert into dept values('20','市場部i','1');

insert into dept values('30','市場部ii','2');

#建立員工表

create table emp(

eid int primary key,        #主鍵列

ename varchar(4),

salary decimal(8,2)default 99999.99,

birthday date default '1990-1-1',

deptid int,   

foreign key(deptid) references dept(did)

);insert into emp 

values(1,'丁丁', 8000, default, 10);

insert into emp(eid,ename,salary,deptid) 

values(6,'噹噹', 5000, 10);

insert into emp 

values(3,'豆豆', 3000, '1998-1-3', 10);

insert into emp 

values(4,'丫丫', 7000, '1998-1-4', 20);

insert into emp 

values(5,'明明', 9000, '1998-1-5', 30);

insert into emp 

values(2,'白白', 8500, '1998-1-6', null);

MySQL列型別和列上約束

1.常用sql命令 新增資料 insert into 表名 values 刪除資料 delete from 表名 刪除所有的記錄行,慎用!delete from 表名 where 列 值 刪除滿足條件的行 修改資料 update 表名 set 列 值,列 值 刪除所有記錄行,慎用 update 表名...

mysql 列約束 MySQL 列級約束和表級約束

一,六大約束 not null 非空 primary key 主鍵 unique 唯一 check 檢查約束,mysql 不支援,語法不報錯但無效果 foreign key 外來鍵.限制兩表關係,通常在從表引入外來鍵約束,引入主表中某列的值,保證從表該字段的值必須 於主表關聯列的值 default預...

MYSQL中列約束

mysql可以對要插入的資料進行特定的驗證,只有滿足條件才允許插入,否則被認為非法的插入。例如編號不能出現重複,性別只能是男或者女,工資只能是正數 create table t3 id int 列約束 1 主鍵約束 primary key 宣告了主鍵約束的列上不允許插入重複的值,乙個表中只能有乙個主...