刚入门的小伙伴建议先去看数据库入门1哦!!!
- 数据类型
- 命名规则
- 数字类型
- 字符类型
- 日期
- 字段约束
- 主键约束primary key
- 唯一约束 unique
- 非空约束
- 条件查询
- where
- is null和is not null
- and和or
- 去重distinct
- 比较运算符
- 两者之间between a and b
- in
- 数值计算
- 模糊查询like
- 分页查询
- 排序
- 聚合函数
- 分组查询group by
- having
- 各关键字的顺序
java有八大基本类型和引用类型,我们数据库也有相关的数据类型,往下看。。。
命名规则1、由字母、数字和美元符($)组成;
2、多个单词之间用下划线连接;
3、不能使用保留字,如:order、insert、delete等;
4、Oralce在命名的时候习惯全大写,mysql习惯全小写。
- 整数类型:tinyint、int、bigint
- 小数类型:float、double
- numeric(n,m) decimal(n,m)—也可以表示小数,表示总共n位,其中可以有m位小数
char:长度固定,不足的用空格补满,最多容纳2000个字符。查询速度快但浪费空间。
varchar:长度不固定,最多容纳4000个字符。查询速度慢但节省空间。
text:大量文本,当长度大于255时使用。
date:存储年月日
time:存储时分秒
datetime:存储年月日时分秒
timestamp:时间戳。从1970年1月1日到指定日期的毫秒数
给字段添加限制条件。
主键约束primary key主键: 表示数据唯一性的字段称为主键
约束: 创建表时,给表字段添加的限制条件
主键约束:限制主键的值 唯一且非空.
如果为一个列添加了主键约束,那么这个列就是主键,主键的特点是唯一且不能为空。通常情况下,每张表都会有主键。
主键自增策略auto_increment设置了主键自增策略后,数据库会在表中保存一个变量值,初始值为1,当需要id值,不需要我们指定值,由数据库负责从AUTO_INCREMENT获取一个id值,作为主键值插入到表中。而且每次用完AUTO_INCREMENT值,都会自增1。
create table stuff(id int primary key auto_increment,name varchar(20))charset=utf8;
insert into stuff vaules(null,"Tom"),(null,"Jack");
select * from stuff;
唯一约束 unique
如果为一个列添加了唯一约束,那么这个列的值就必须是唯一的(即不能重复),但可以为空。
create table user(id int primary key auto_increment,username varchar(20) unique)charset=utf8;
insert into user values(null,"Tom");
insert into user values(null,"Tom");//username字段要唯一,重复会报错
select * from user;
非空约束
非空约束:如果为一个列添加了非空约束,那么这个列的值就不能为空,但可以重复。
create table username(id int primary key auto_increment,password varchar(20) not null)charset=utf8;
insert into username values(null,null);//报错,该字段不允许为空
insert into username values(null,"123");
select * from user;
条件查询
where
where 关键字后面放我们所需要的条件
select name,job from where dept_id=1;//查询1号部门的员工姓名和工作
select * from emp where comm>0;//查询有奖金的员工信息
is null和is not null
判断为空时用is null,不为空时用is not null。注意不要和=以及!=弄混淆。
select * from emp where comm is null;//查询奖金为空的员工信息
select * from emp where comm is not null;//查询奖金不为空的员工信息
and和or
当查询的结果需要满足多个条件时使用and连接;
当查询的结果只需要多个条件满足其中一个时用or连接。
select * from emp where sal>2000 and dept_id=1;//查询1号部门中工资高于2000的员工信息
select * from emp where sal>5000 or dept_id=1;//查询1号部门和工资高于5000的员工信息
去重distinct
将查询到的结果的重复部分删除,相同结果只保留一个。
select distinct job from emp;//从emp表中查看job字段,观察共有集中不同的工作
select distinct dept_id from emp;//查看此表中共有几个部门
比较运算符
<、>、>=、<=、=、!=以及<>
此处的<>等同于我们的!=,其余的不多说。
//查询不是1号部门的员工姓名和工作
select name,job from emp where dept_id!=1;
select name,job from emp where dept_id<>1;
两者之间between a and b
between a and b介于a与b之间,并且包含a和b
select * from emp where sal between 1000 and 3000;//查询工资在1000到3000的员工信息
in
当需要查询某个字段中的多个值时使用in关键字。in(a,b,c)
select * from emp where sal in(800,1500,1600);//查询员工工资为800、1500和1600的员工信息
数值计算
对int类型的字段进行相关的+、-、*、/运算得到相应的结果
select name,sal*3 from emp;//查询员工的姓名和季度工资
select name,sal/30 from emp;//查询员工的姓名和每日工资(按一个月30天计算)
模糊查询like
根据关键字查询到所有相关的的信息。通常结合%和_使用,%代表有0或多个未知字符,_代表有一个未知字符。
常见的模糊查询:
以a开头:a%
以b结尾:%b
以a开头以b结尾:a%b
第二个字母是a:_a%
select * from emp where name like "孙%";//查询姓孙的员工信息
select * from emp where job like "_ _员%";//查询工作第三个字是员的员工信息
分页查询
使用关键字limit n,m;n代表跳过的条数,m代表要显示的条数。
跳过的条数=(查询页数-1)*显示的条数。
select name,job from emp where dept_id=1 limit 4,2;//查询1号部门的员工姓名和工作,只显示第三页的两条数据
排序
格式:order by 字段名 asc(升序,默认)/desc(降序);
select * from emp order by dept_id asc,sal desc;//查询所有员工信息,先按照部门id升序排序后再按照工资降序排序
聚合函数
对查询到的多条数据进行统计查询。
统计方式:求平均值、求和、求最大值、求最小值以及计数。
- 平均值avg(字段名)
select avg(sal) from emp where dept_id=1;//查询1号部门的平均工资
- 求和sum(字段名)
select sum(sal) from emp where dept_id=1;//查询1号部门的总工资
- 最大值max(字段名)
select max(sal) from emp;//查询员工表中的最高工资
- 最小值min(字段名)
select min(sal) from emp;//查询员工表中的最低工资
- 计数count(*)
select count(*) from emp where job="销售";//查询销售岗位的总人数
select count(*) from emp where sal>2000;//查询工资高于2000 的人数
分组查询group by
格式:select 分组字段名,聚合函数 from 表名 group by 分组字段名;
select dept_id,count(*) from emp group by dept_id;//查询每个部门的人数、
select job,max(sal) from emp group by job;//查询每个岗位的最高工资
having
where 后面只能放普通字段的限制条件,但实际应用中我们常常需要把聚合函数得到的结果作为我们的查询条件,此时就借助having关键字。
having作用与where一样,where后跟普通字段的条件;having后跟聚合函数的条件。
//查询每种工作的人数,只查询人数大于1的
select job,count(*) from emp group by job having count(*)>1;
//查询每个部门的平均工资,且平均工资大于2000的
select dept_id,avg(sal) from emp group by dept_id having avg(sal)>2000;
各关键字的顺序
select 字段名 from 表名 where 普通字段的条件 group by 排序字段名 having 聚合函数条件 order by 排序字段名 asc/desc limit 跳过的条数,请求条数;
//查询每个部门的工资总和,只查询有领导的员工,并且要求工资总和大于5400
select dept_id,sum(sal) s from emp where manager is not null group by dept_id having s>5400;
多记多练习!!!!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)