1)约束
①primary key(主键约束)提示:一张表只能有一个主键,且主键不能重复,也不能为null
②foreign key(外键约束)例如:foreign key (userid) references users(id)③not null(非空约束)
④unique(唯一约束)提示:如果数据都为null时,不违反唯一约束
⑤check (check约束)提示:mysql不支持check约束
⑥auto_increment(自增约束)
⑦default(默认值约束)
2)数据类型
------- 数值类型
① tinyint
JDBC中对应的方法 getByte()
② smallint
JDBC中对应的方法 getShort()
③ int
JDBC中对应的方法 getInt()
④ bigint
JDBC中对应的方法 getLong()
⑤ float(m,d)、double(m,d)(m表示有效位,d表示小数点后面有几位)
JDBC中对应的方法 getFloat()、getDouble()
⑥numeric(m,d)用于表示小数,或者整数。不带参数时表示整数
------- 逻辑类型
① bit(只能存储0和1,默认为1)
JDBC中对应的方法 getBoolean、getBytes()
------- 时间与日期类型
① date
JDBC中对应的方法 getDate()
② time
JDBC中对应的方法 getTime()
③ timestamp(自动更新为最后一次修改的时间)
JDBC中对应的方法 getTimestamp()
--字符串类型
① 字符串类型:char(定长,速度快)、varchar(可变长度,省空间)
JDBC中对应的方法 getString()
②大数据类型: blob(用于保存二进制数据),text(用于保存字符串数据)
JDBC中对应的方法 getBlob()、getClob
3) 函数
①合计函数
count
avg
sum
min
max
②日期函数
current_date
current_time
current_timestamp
now
③数字函数
ceil
floor
round
power
mod
sqrt
④字符串函数
lower
replace
substr
length
rpad
initcap
Count(列名)返回某一列,行的总数
统计一个班级共有多少学生?
select count(*) from exam;
统计数学成绩大于75的学生有多少个?
select count(*) from exam where math>75;
统计总分大于230的人数有多少?
select count(*) from exam where ifnull(math,0)+ifnull(chinese,0)+ifnull(english,0)>230;
Sum函数返回满足where条件的行的和
统计一个班级数学总成绩?
select sum(math) from exam;
统计一个班级语文、英语、数学各科的总成绩
select sum(math),sum(english),sum(chinese) from exam;
统计一个班级语文、英语、数学的成绩总和
select sum(ifnull(chinese,0)+ifnull(math,0)+ifnull(english,0)) from exam;
统计一个班级语文成绩平均分
select sum(chinese)/count(*) from exam;
AVG函数返回满足where条件的一列的平均值
求一个班级数学平均分?
select avg(math) from exam;
求一个班级总分平均分?
select avg(ifnull(math,0)+ifnull(chinese,0)+ifnull(english,0)) from exam;
Max/min函数返回满足where条件的一列的最大/最小值
求班级最高分和最低分(数值范围在统计中特别有用)
select max(ifnull(math,0)+ifnull(chinese,0)+ifnull(english,0)) from exam;
select min(ifnull(math,0)+ifnull(chinese,0)+ifnull(english,0)) from exam;