一、数据库定义语言DDL
二、数据库操作语言DML
三、数据库查询语言DQL
四、数据库控制语言DCL
表中涉及到的类型!! 添加修饰符!
int:整型 -2 31 2 31 4个字节!
integer 类型 4个字节!
tinyint 整数类型 -128 127 1个字节
samllint 整数类型 -65535/2 65535/2 2个字节
bigint 整数类型 long 大于int类型 8个字节!
unsigned 代表整数类型没有负值! 0-n
double:浮点型,例如double(5,2) 5总位数!2小数位数!
10 aaa char 'aaa '
varchar 'aaa'
char:固定长度字符串类型; char(10) 'abc ' 256
varchar:可变长度字符串类型;varchar(10) 'abc' 65535
text:字符串类型; 65535
blob:字节类型;往数据库存图片!
时间戳: 1970 1 1 至今的毫秒值! varchar字段!
date:日期类型,格式为:yyyy-MM-dd;
time:时间类型,格式为:hh:mm:ss
timestamp:时间戳类型 yyyy-MM-dd hh:mm:ss 会自动赋值
datetime:日期时间类型 yyyy-MM-dd hh:mm:ss
注意:字符串类型和double类型需要最后追加 (长度)
二、数据库操作语言DML
insert update delete
1.插入数据
insert into 表名 1.(列名1,列名2...) value/values ("值1",值2,....)
2.什么都不写(全部列都要插入) value/values();
value()
values(),(),();
注意:插入数据的时候!如果指定了列名1情况,value/values的值要跟列名
一一对应!
如果没有指定列名!要插入全部列!value/values的值要根据创建表的时候列的顺序进行插入!如果没有值写成null!!
2.删除数据
delete from 表名; //删除所有数据
delete from 表名 where 条件
name = 'xxx' and sex = 'xxx';
name = 'xxx' or sex = 'xxx';
or/and
truncate 表名;
truncate速度会更快!但是慎重使用!不考虑表结构!直接删除表创建新表!
但是问题!数据可能发生重复!!
3.修改表数据 update
update 表名 set 列名 = 新值,列名 = 新值 ; //全部修改
where 条件 //按条件修改!
在原有的基础上进行修改:
update 表名 set 列名 = 列名(+-*/)新值 where 条件!
一、字段控制
1.根据字段去重复 DIstinct
select distinct 字段 from 表的名字;
2.查询求和
select */列名/整数可以运算 from 表名;
注意:整数 + null = null
3.ifnull如果为空设置值
SELECT * , IFNULL(comm,0)+sal FROM emp;
ifnull(1,2)
1.判断得值
2.如果判断值为null 取第二个值!
4.起别名
有写时候查询出来的列名太长!我们希望用简短的列名表示!这个时候就需要起别名!
select 列明 别名
select 列名 as 别名
二、排序
语法 order by 列名 asc(默认) desc
1.根据薪水排序
SELECT * FROM emp WHERE sal > 1000 ORDER BY sal DESC;
注意:如果只是排序 可以不添加where !如果有条件!需要在排序前添加条件!!!
2.添加候补排序
SELECT * FROM emp ORDER BY sal DESC,empno ASC;
第一个条件相同才会触发第二个!以此类推!
select 列的列表 from 表名 where 条件 order by 字段 asc/desc;
三、聚合函数
? COUNT():统计指定列不为NULL的记录行数;
? MAX():计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;
? MIN():计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;
? SUM():计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;
? AVG():计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;
四、分组查询
group by 字段!
group by 字段 having 条件!
where 和 having对比
相同点:
都是条件判断
不同点:
where 分组前的条件!
having 分组后以组为单位的条件!通常使用的是聚合函数!
where from 表名 where
having group by 分组字段 having 条件!
select * from 表名 where 条件 group by 字段 having;
select * from 表名 where 条件 order by 字段。
最难的sql语句!
select * from 表名 where 条件 group by 字段 having order by 字段
五、mysql的方言
limit 值1; = limit 0,值1;
limit 值1,值2;
limit 值1; 从第一个数据开始查询 查询值1个! 值1指的是查询数量!
limit 值1,值2; 值1代表着偏移量,值2代表查询的个数!!!
总结:
分页公式: limit (currentPage-1)*pageSize,pageSize;
说明:currentPage 当前页数 从1开始
pageSize 每页显示的数量!‘’‘