一 SQL語句html
1. 數據庫級別(*)mysql
2.數據表級別(*)c++
create table '表名'('Field名' 'Field類型' '是否爲空' 默認值,'Field名' 'Field類型' '是否爲空' 默認值)engine=innodb charset=utf8;sql
例:數據庫
建立表tb2成功。spa
create table '表名'('Field名' 'Field類型' '是否爲空' 默認值 auto_increment primary key,'Field名' 'Field類型' '是否爲空' 默認值)engine=innodb charset=utf8; auto_increment表明自增(只能數值類型,所引,主鍵,一張表只能由一個自增列),加它時後面必定要由primary key(一張表只能由一個主鍵,不能爲NULL,通常狀況下把自增列設爲主鍵,能夠兩列一塊兒做爲主鍵,查找速度很是快)code
例:htm
能夠看到,我只查了num的值,可是id的value是隨着遞增的。blog
a. delete from '數據表'與truncate table '數據表'的區別排序
(1) 用delete from tb2;清空數據表tb2後,而後從新插入兩行數據,結果:
能夠看到id是在原來的基礎上遞增的。
(2) truncate table tb2; 而後再從新插入數據,結果:
能夠看到表中id列是從1開始遞增了。
b. 外鍵
把兩個表中的兩列進行了關聯,加了約束。
(1) 建立friInfo的表:
建立department的表:
向department表中插入數據,顯示:
將friInfo表中的departmentId和department表中的id創建關聯:
fk_f_d是外鍵的名字;外鍵創建成功。
咱們看看可否在friInfo表中的departmentId中插入在department表id列中沒有的數字,結果:
提示咱們不能夠插入數據,那咱們插入符合要求的,結果:
能夠看到插入成功。
friInfo表中的departmentId列的數據只能從department中的id列選取。
(2)能夠在建立表的時候直接添加約束
例:
create table department(
id int not null auto_increment primary key,
name varchar(20))engine=innodb default charset=utf8;
create table friInfo(
id int not null auto_increment primary key,
name varchar(20),
departmentId int,
constraint fk_f_d foreign key(departmentId) referneces department(id))engine=innodb default charset=utf8;
3.數據行級別(****)
增:a. insert into '表名'('列名','列名') values('值','值'),('值','值'), ('值','值'); 一次插入多條數據;
b. insert into '表名'('列名','列名') select '列名','列名' from '表名'; 把另外一個表的兩列中的數據插入到表的列中;
刪:delete from '表名' where '列名'='值'; 將某一列中某一值的一行數據刪掉; '列名'>'值', '列名'<值', '列名'!='值' 均可以;
改:update '表名' set '列名1'='值1' where '列名2'='值2' and ...; 把'列名2'='值2的'列名1'的值改成'值1';
查:select '列名1', '列名2' from '數據表名' where '列名'='值'; 顯示錶中'列名'='值'的那行中 '列名1'和'列名2'數據;
其餘:條件,通配符,限制,排序,分組,連表,組合。參考https://www.cnblogs.com/wupeiqi/articles/5713315.html
二 SQL基本數據類型
1. 數字
(1) bit(m) 二進制位,m表示二進制位的長度,範圍1~64,默認m=1
(2) tinyint 至關於c++中的int8類型,默認是有符號的,建立無符號:tinyint unsigned;注意:布爾類型用 tinyint(1)表示;
(3) smallint 至關於c++中的int16類型;
(4) int 至關於c++中的int32類型;
(5) bigint 至關於c++中的int64類型;
(6) decimal(m[,d]) 精確的小數,m是數字總個數(負號不算),最大值65,d是小數點後個數,最大值30;
(7) float(m,d) 單浮點數,m是數字總個數,d是小數點後數字個數;數值越大越不許確;
(8) double(m,d) 雙浮點數,m是數字總個數,d是小數點後數字個數;數值越大越不許確;
2.字符串
(1) char(m) 固定長度的字符串,最大長度255字符,m表明字符串長度,即便數據小於m,也會佔用m個字符;
(2) varchar(m) 可變長度的字符串,最大長度255字符,m表明字符串長度,只要小於m長度的字符串均可以保存在數據類型中;相比於char類型效率較低;
(3) text 保存變長的大字符串,最大長度65535個字符;
(4) mediumtext 保存變長的大字符串,最大長度16777215個字符;
(5) longtext 保存變長的大字符串,最大長度4294967295個字符;
(6) TinyBlog、Blog、MediumBlog、LongBlog 二進制數據;
3.時間
(1) date: YYYY-MM-DD;
(2) time: HH:MM:SS;
(3) datetime: YYYY-MM-DD HH:MM:SS;
(4) year: YYYY;
(5) timestamp: YYYYMMDD HHMMSS;
4.枚舉
至關於c++中的枚舉。
用法:
create table studentInfo(
name varchar(20),
age int,
class ENUM('class1', 'class2', 'class3')
)engine=innodb default charset=utf8;
insert into studentInfo(name,age,class) values('a',19,'class1'),('b',20,'class2'),('c',21,'class3');
5.集合
能夠設置多個值。
用法:
create table teacher(
name varchar(20),
course SET('math', 'sports', 'english')
)engine=innodb default charset=utf8;
insert into teacher(name,course) values('a', ('math', 'sports')), ('b', ('english', 'sports')), ('c', ('math', 'english'));