mysql學習筆記之建表(1)

2021-10-08 16:56:14 字數 4254 閱讀 5216

目錄

一、資料型別

1.字元型 

2.數值型

3.日期型

二、約束

1.      5個約束

2.自增長

三、表1.建立

2.修改表列

1)對錶重新命名

2)新增列

3)修改列

4)刪除列

3.增刪約束 

1)新增約束

2)刪除約束    

4.複製表

複製結構和資料

5.刪除表

mysql不區分英文的大小寫。

use test;
char(10) : 固定10個字元長度

varchar(10) : 最多10個字元長度

text :文本級別的長度

bit : 1~8,1位元組.按位觸發。

enum: 2b,最多2^16個成員列舉。

set : 8*8,8b,最多64個成員插入集合。

tinyint, ≈'char',乙個位元組

smallint,≈short,2個位元組

mediumint,3個位元組

int,    ≈'int',4個位元組.

bigint, ≈'long long',8個位元組。

1.預設是有符號。使用無符號時,加unsigned

2.若插入數字超出範圍(上|下),則顯示的是臨界值。

3.int(7) zerofill,預設是無符號7位數,不夠時用『0』填充。

float(m,d),浮點型

double(m,d),雙精度浮點型

dec(m,d),    定點型

其中,m表示總位數,d為小數字數。

date 年月日

time 時分秒

year 年

month

datetime ,date+time;表示的時間從1000-01-01年開始

timestamp:表示的時間到2023年,且更能反映當地時區。

show variables like 'time_zone';

set time_zone = '+9:00';

set time_zone = 'system';

primary key :主鍵,該列值非空而且唯一。表中主鍵至多乙個

not null:非空,該列值必填

unique: 唯一鍵,該列值不能重複

default:該列值不填就是預設的值

foreign key:外來鍵。指向主表(被引用)的主鍵或唯一鍵,將2個表某行對應起來。

且可使用 on delete cascade | set null 來指示,主表被刪時該行是否保留。

使用方法(見表建立):

對列新增約束:僅外來鍵不可以。

對錶新增約束:主鍵、唯一鍵、外來鍵可以。

auto_increment:應用於數值型的主鍵或唯一鍵,且表中至多乙個

預設從1開始,步長為1.

自定義步長:set auto_increment_increment = 3;

#建表先建庫

create database if not exists test2; #建

show variables like '%character%';

alter database test2 character set gbk; #修改字符集

drop database if exists test2; #刪庫(+跑路....)

主表(被引用)

create table major(

id int primary key,

major_name varchar(20)

);

從表

drop table if exists mystuinfo; #可防止空刪

create table mystuinfo(

id int primary key auto_increment,

cname varchar(20) not null,

seat int unsigned unique,

age int  default 18,

gender enum('male','female'),

curriculum_name set('語','數','外','政','史','地','物','化','生'),

schooldate date,

majorid int,

constraint majorid_to_major 

foreign key (majorid) references major(id) on delete cascade

);

檢視:

desc mystuinfo;
alter table sutdent rename to mystuinfo;
可用first|after指定位置

alter table mystuinfo add column provice varchar(5) after schooldate;
修改列名和屬性

alter table mystuinfo change column seat seatno smallint;

僅修改屬性

alter table mystuinfo modify column schooldate year;

alter table mystuinfo drop column provice;
可以在修改列屬性時一併進行(僅外來鍵不可以)

alter table mystuinfo modify column provice varchar(5) not null;

也可以add 3種鍵值(主鍵、唯一鍵、外來鍵可以)

alter table mystuinfo add primary key (id) ;

alter table mystuinfo add constraint majorid_to_major 

foreign key (id) references major(id) on delete cascade;

對於非空、預設、自增長,可以使用modify再改一次

alter table mystuinfo modify column provice varchar(5);

檢視鍵值,並用drop刪除

show index from mystuinfo;

alter table mystuinfo drop primary key;  

alter table mystuinfo drop index seat;    

alter table mystuinfo drop foreign key majorid_to_major;

select,like

複製結構

create table stu1 like mystuinfo; #複製全部字段

create table stu2 select id,cname,age,gender from mystuinfo where 0;

#複製部分字段

create table stu3 select * from mystuinfo; #複製全部

create table stu4 select id,cname from mystuinfo where age>18;

drop table mystuinfo;

drop table if exists mystuinfo; #可防止空刪

學習Mysql有感 建表(1)

建表就是乙個宣告列的過程,所以想要建好表,首先要掌握列型別1.整型 可能有些同學對位元組和位概念不是很懂,咋們就拿tinyint舉個栗子 tinyint 1位元組,8位 那麼它的儲存的有符號位範圍就是 128 127,無符號範圍就是0 255 那麼這些值是咋來的呢?這裡8位就對應二進位制的8位 00...

MySql 學習筆記建表操作

資料庫建 表語句 簡單認知 mysql預設埠號是 3306 mysql的超級使用者叫 root 使用cmd 首先cd到mysql的bin目錄下 在cmd中啟動mysql服務 net start mysql 在cmd中登入mysql mysql u root p password p埠號 h伺服器名稱...

MySQL學習之建表規範

資料型別盡量用數字型別,數字型別的比字元型別的要快很多,比如使用int unsigned儲存ip 大資料字段最好剝離出單獨的表,以便影響效能 使用varchar,代替char,這是因為varchar會動態分配長度資料型別盡量小,這裡的盡量小是指在滿足可以預見的未來需求的前提下的,但是有不能太小,所以...