sql查询

来源:互联网 发布:印度gdp超过中国知乎 编辑:程序博客网 时间:2024/06/05 06:55

SQL查询
查询目标表
查询目标列
查询条件

数据库中支持隐士转换
a.声明数据类型为varchar时,可以使用数值类型,但是不能包含非数值字符
b.声明的数据类型为数值时,可以使用”包裹数值,但是被包裹的额数据必须为数值类型字符串

1.单表查询

显示所有员工信息

select * from emp;
select eno,ename,job,phone,sal,dno from emp;

查询所有普通员工

select * from emp where job=’普通员工’;

查询所有普通员工的姓名和月薪

select ename,sal from emp where job = ‘普通员工’;

模糊查询,查询姓名中包含’悟’的员工

select * from emp where ename like ‘%悟%’;
(‘_悟%’) 第二个字为悟的查询 (%悟) 以悟结尾
%代表多个字符 _代表一个字符 占位符

模糊查询,查询姓名中不包含’悟的’员工

select * from emp where ename not like ‘%悟%’;

查询月薪在5000~20000之间的所有员工的姓名和月薪以及部门号

select ename,sal,dno from emp where sal between 5000 to 20000;
select ename,sal,dno from emp where sal > 5000 and sal < 20000;

查询1,2,3号员工的姓名,月薪,职位

select ename,job,sal from emp where eno in(1,2,3);

查询1,2,3号员工之外的其他的姓名,月薪,职位

select ename,job,sal from emp where eno not in(1,2,3);

聚合函数
count 统计
sum 求和
avg 求平均值
min 求最小值
max 求最大值

显示员工表中的总员工数

select count(*) from emp;
select count(*) total from emp;(列的别名为total)

计算一个月发放的工资总数

select sum(sal) from emp;

计算平均薪资

select avg(sal) from emp;

计算1号部门需要发放的工资总额

select sum(sal) from emp where dno=1;

计算每个部门需要发放的工资总额

select dno,sum(sal) from emp group by dno;

计算每个部门的员工总数,部门平均薪资,以及部门号

select dno,count(*),avg(sal) from emp group by dno;

2.多表联合查询

创建索引
索引类似字典,对数据表需要额外的表空间存储数据表索引(默认索引占表空间为表的1.2倍左右)
所以对表进行更新操作时,同时索引也要更新(消耗时间)
索引创建语法:
create index 索引名on 表名(列名);
复合索引
针对多列同时建立索引,子进行查询操作时,同时给定被索引的条件
create index 索引名 on 表名(列名1,列名2,列名3)
CREATE INDEX ind_name on employee(NAME);
唯一索引
要求被索引列必须唯一数据
create unique 索引名 On 表名(列名)

索引能提高数据检索效率,节省查询时间,但是检索不能随意创建
因为穿件索引时,系统需呀查询表中的每一条记录,根据这些记录建立对应的检索目录
索引的创建会消耗大量的存储指定表的索引,所以应该避免对数据的频繁修改,因为对
表中数据做修改操作是,同时索引也会随之更新,更新过程也会时间消耗(以空间换取时间

注意事项:
1,如果列中数据大量重复时,避免建立索引(比如在性别上)
2,列经常被修改时,避免建立索引
3,索引的创建通常在大表上(百万,十万,千万以上的数量)
4.对于数据量极少的表。避免建立索引

删除索引;

drop index ind_name on 表名称

视图:
对于一张或者多张数据表的缩影,视图是一种虚拟的概念,在使用前只是存储在数据库
服务器中的一条指令,在针对试图使用时,在对物理数据表生成一个视图,对于视图操作
,会影响的物理数据表

视图创建语法:
Create view 视图名称 as 子查询

视图的使用可以极大简化复杂的查询,

删除视图:
Drop view 视图表

数据库的可编程性

在数据库中通过数据库的基本数据类型,相关关键字,条件分支,循环,结合一条或
多条SQL指令共同完成一些特定的逻辑,使用sql语句完成类似java,c,c++编程语言的
逻辑
mysql中的可编程性通常体现在
存储过程
自定义
触发器

存储过程
存储过程是存储在数据库服务器中,已经经过数据库的预编译操作,在通过应用
数据库发起操作时,只需要发送需要调用指令即可(耗时操作分担数据服务器中解决)
在数据库中执行普通的SQL语句的效率远远低于存储过程

缺点:不兼容 数据库管理系统之间

基本语法
creat procedure 过程名称(参数列表)
Begin

end;

存储过程调用
call 过程名称()

存储过程分类
类似java中的方法,在过程中包含了一些用于处理某些复杂的代码片段
无输入输出参数
有输入

函数 :

函数主要是解决特定的问题

查看系统资源中所有的存储过程状态
show procedure status;

查看系统资源中所有的自定义函数状态
show function status;

原创粉丝点击