张家口网站建设电话搜索引擎网络推广方法
导入演示数据
1、连接MySQL
2、创建"bjpowernode"数据库
create database bjpowernode;
3、选择数据库
use bjpowernode
4、导入数据
source D:\bjpowernode.sql(文件的路径)
1 去除重复记录(把查询结果去除重复记录)(原表数据不会改变)
使用关键字distinct
1 select job from emp;
2 select distinct job from emp;
注意:distinct只能出现在所有字段的最前方
distinct出现在job和deptno两个字段之前,表示两个字段联合起来去重
select distinct job,deptno from emp;
select job,deptno from emp;
统计工作岗位的数量:
select count(distinct job) from emp;
2 连接查询(多张表联合起来查询数据)
笛卡尔积现象
当两张表进行连接查询 没有任何条件限制的时候 最终查询结果的条数 是两张表条数的乘积
如何避免笛卡尔积现象
连接时 加条件 满足这个条件的 记录被筛选出来
select ename,dname
from emp,dept
where emp.deptno = dept.deptno;
表起别名
select e.ename,d.dname
from emp e,dept d
where e.deptno = d.deptno;
表的连接次数越多 效率越低
3 内连接之等值连接
select e.ename,d.dname
from emp e,dept d
where e.deptno = d.deptno;
或者
select e.ename,d.dname
from emp e
join dept d
on e.deptno = d.deptno;
或者
select e.ename,d.dname
from emp e
inner join dept d //inner可以省略
on e.deptno = d.deptno;
select …
from a
join b
on a和b的连接条件
where 筛选条件;
4 内连接之非等值连接
条件不是一个等量关系,称为非等值连接
select e.ename,e.sal,s.grade
from emp e
(inner) join salgrade s
on e.sal between s.losal and s.hisal;
5 内连接之自连接
一张表看成是两张表
select a.ename as ’员工名‘,b.ename as '领导名'
from emp a
join emp b
on a.mgr = b.empno;
6 外连接
1、右外连接(right)
select e.ename,d.dname
from emp e right join dept d
on e.deptno = d.deptno;
right代表着:表示将join关键字右边的这张表看成主表,
主要是为了将这张表的数据全部查询出来,
捎带着关联查询左边的表在外连接中,两张表连接产生了主次关系
在内连接中,两张表是平等的2、左外连接(left)
select e.ename,d.dname
from dept d left join emp e
on e.deptno = d.deptno;3、在join前面右outer可以省略
select e.ename,d.dname
from emp e
right outer join dept d
on e.deptno = d.deptno;
或者
select e.ename,d.dname
from dept d
left outer join emp e
on e.deptno = d.deptno;
外连接的查询结果条数是不是一定是大于等于内连接的查询结果条数?
正确
7 多张表的连接(三张或者四张表的连接)
select ...
from a
join b
on a和b的连接条件
join c
on a和c的连接条件
join d
on a和d的连接条件
8 子查询
select语句中嵌套select语句,被嵌套的select语句称为子查询select...(select)
from...(select)
where...(select)
9 where子句中的子查询
10 from子句中的子查询
11 select子句中的子查询
12 union合并查询结果集
union在进行结果集合并的时候,要求两个结果集的列数要相同。
13 limit
limit将查询结果的一部分取出来,通常使用在分页查询当中。
MySQL当中 limit 在 order by 之后执行
limit 加两个参数 (第一个参数是起始位置,第二个参数是长度)
起始位置是从0开始
limit后面加一个参数 就表示长度
14 分页
limit (pageNo-1)*pageSize,pageSize
pageNo是当前所在第几页
pageSize是每页显示的记录数目
15 关于DQL语句的总结
select
from
where
group by
having
order by
limit
执行顺序:
1、from
2、where
3、group by
4、having
5、select
6、order by
7、limit
16 表的创建(建表)
建表属于DDL语句:create、drop、alter
create table 表名(
字段名1 数据类型,
字段名2 数据类型,
字段名3 数据类型
);
17 关于MySQL中的数据类型
varchar(最长255)可变长度的字符串会根据实际的数据长度 动态分配空间char(最长255)定长字符串不管实际的数据长度是多少分配固定长度的空间去存储数据int(最长11)bigint长整型
floatdoubledate短日期类型
datetime长日期类型clob字符大对象最多可以存储4G的字符串超过255个字符的都要采用clob字符大对象来存储blob二进制大对象存储图片、声音...插入数据需要使用IO流
18 删除表
drop table 表名;
或者
drop table if exists 表名;
//如果这张表存在就删除
19 insert语句(DML语句)
insert into 表名(字段名1,字段名2...) values(值1,值2...);
字段名要与值一一对应:数量要对应,数据类型也要对应
可以在建表的时候:使用default的方式来指定默认值
如果省略了的前面的字段名,相当于都写上
所以说后面的值都要给出
20 insert插入日期
str_to_date:将字符串varchar类型转换为date类型
date_format:将date类型转换为具有一定格式的varchar字符串类型
21 修改update(DML语句)
update 表名 set 字段名1 = 值1,字段名2 = 值2,字段名3 = 值3... where 条件;
注意:没有条件限制会导致所有的数据全部更新
22 删除数据delete(DML语句)
delete from 表名 where 条件;
注意:没有条件会导致整张表的数据全部删除