一 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'));