数据库学习指令记录

Posted TOPthemaster

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库学习指令记录相关的知识,希望对你有一定的参考价值。

1.DQL 数据查询语言

1.1select简单查询

1.select * from 表名 ;       查看相应表数据
2.desc 表名;       describe查看相应表结构
3.select version();   查看mysql版本号
4.select database(); 查看当前使用数据库
5.select 字段名,字段名 from 表名;  查看表中某一字段或者多个字段
6.select * from 表名;   查看所有字段   
					   该指令尽量不用, 效率低,可读性差

7.select 字段名 as 显示字段名 from 表名; 查看字段名并在
当前另起别名,但不影响原表
8. select 字段名(数字格式)* 12 from 表名;
	字段中可以使用数学计算

数据库操作指令中对字符串的修改以及查看使用单引号,更兼容多个版本,
oracle不支持双引号。

1.2 条件查询

select 
	字段1,字段2
from
	表名
where
	条件

常用条件

1.=  <>或!= ... 
	select id from db_user where password = 5456;
2.and    or    between and  (and 优先级比 or 高)
若发生优先级错乱问题,可以使用()强制执行
示例:
	select id from db_user where password is not null and password >80 or password <10000; 会先执行and 后执行or

	select id from db_user where password is not null and (password >80 or password <10000); 先执行or 后执行and

	select id from db_user where password = 5456 or name = 'user1';

	select id from db_user where password between 1 and 8000; 
遵循左小右大
3. is null    is not null
	select id from db_user where password is null;
	查询某条字段是否为空不能用=null衡量
4.in ( 相当于多个or条件 )not in
	select id from db_user where password in (5456,6000) ;
5.like  模糊查询
	%str%查询带有该特殊字符的字段
	%str 查询以该字符结尾的字段 
	str% 查询以该字符开头的字段 
	_str%查询第二个字符是该字符的字段 添加下划线个数
	select id,name,password from db_user where password like '%string%';

1.2 数据排序查询

1.order by 字段  (asc)默认升序
	select id,name,password from db_user order by password;
2.order by 字段  desc    降序
	select id,name,password from db_user order by password desc;
3.多字段排序(某一字段排序出现重复,则使用第二类别排序)
	select id,name,password from db_user order by password desc,id asc; 先按照password降序排,若有重复按照id升序排

1.3 综合排序

select 
		字段
from
		表名
where
		字段
order by
		排序方式

该查询格式顺序不能变。

1.4 数据处理函数

1.单行处理函数
特点:一个输入 一个输出

1.lowper 内容小写转换输出
	select upper(字段) as 字段 from 表名;
2.upper 内容大写转换输出
	select lowper(字段) as 字段 from 表名;
3.substr 截取字段字符串 substr(字段,起始位(从1开始),截取长度)
	select substr(name,2,length(name)-1) from db_user; 截取除首字母后面的信息
	select substr(name,1,1) from db_user;  截取首字母
4.concat 合并字符串
	select concat(upper(substr(name,1,1)),substr(name,2,length(name)-1) ) as 	result from db_user;合并前面截取的字符串 实现首字母改为大写
5.length 获取字段长度
	select length(password) length from db_user;
6.trim 去除空格
7.round 四舍五入保留位数 round(字段,保留位数 0分界 -1代表10位)
	select round(字段)from 表名
8.ifnull 空处理函数ifnull(数据,填充新数据)  任何与null的数学运算结果都为null
9.case..when..then..when..then..else..end
示例: 在db_user中查找出number值,并将job为manager对应的number乘以1.5作为newnum;
	select 
		number as oldnum ,
 		(case job when 'manager' then  number *1.5 else number * 1 end) as newnum
	from 
		db_user;

2.多行处理函数(分组函数)
特点:多个输入 一个输出;
使用时必须先分组,不然一张表默认为一组;
分组函数处理null值会自动忽略;
分组函数不能直接使用在where字句中;涉及关键字语句顺序问题
分组函数可以组合使用。

1. count 计数
	count(*)统计所有行数,包括null,count(具体字段)自动跳过null;
3. avg 求平均值
4. max 求最大值
5. min 求最小值
6. sum 求和
示例:
select max(num)from db_user;

1.5分组查询(*)

总结关键字顺序(不能颠倒)

select
	...
from
	...
where
	...
group by
	...
order by
	...
	执行顺序  from  where  group by select order by 
示例: 假设有多个工作岗位以及不同员工薪资,现有需求,对每个岗位所有员工总工资求和
select
	job,sum(salary)
from
	db_job
group by
	job,..,..,..;
	

在这里插入图片描述

having 必须联合group by,使用,用途为对group by分组后的数据再次操作,尽可能使用where先筛选后再分组。
select
	job,sum(salary)
from
	db_job
group by
	job,..,..,..;
having 
	max(salary);

distinct 去除重复记录

select distinct name,..,.. from db_user;

1.6连接查询、多表查询(***)

分类: 按年代划分分别由SQL92与SQL99;
	  按表连接方式划分分为:
		内连接:
			等值连接
			非等值连接
			自连接
		外连接:
			左外连接(左连续)
			右外连接(右连续)
		全连接

外连接:


1.6.1 笛卡尔积现象

select name,user from db_1,db_2;

当使用连接查询时,若不添加任何限制,则查询结果为两张表条项乘积,非常浪费时间。要尽量避免。应该添加相应条件,减少检索浪费。

1.6.2 内连接-等值连接

92版本写法:
	select 
		name,user 
	from 
		db_1,db_2
	where 
		db_1.id=db_2.id;    等值连接,条件为等值关系
99版本写法:
	select
		...
	from
		a表
	(inner)join   默认内连接
		b表
	on
		a,b表的连接条件
	where
		筛选条件

1.6.3 内连接-非等值连接

假设有如下两个表
在这里插入图片描述
现需求将员工的工资等级区间查询出来

select
	e.ename,e.sal,s.grade
from
	emp e
join
	salgrade s
on
	e.sal >=s.losal and e.sal<s.hisal  //e.sal between s.losal and s.hisal  非等值连接

在这里插入图片描述

1.6.4 内连接-自连接

一张表当成两张表看,假设有表如下,需求将ename所对应的管理员查询出来。
在这里插入图片描述

select 
	e.ename as '员工',s.ename as '管理员'
from
	emp e
join
	emp s
on
	e.mgr =s.empno

2.DML 数据操作语言

该类语言修改数据内容

insert
delete
update

3.DDL 数据定义语言

该类语言主要修改数据结构

create
drop
alter

4.TCL 事务控制语言

commit  事务提交	
rollback 事务回滚

5.DCL 数据控制语言

grant  授权
revoke 撤销权限

以上是关于数据库学习指令记录的主要内容,如果未能解决你的问题,请参考以下文章

angularjs2 学习笔记 组件

JSP学习笔记:JSP语法和指令

python小白学习记录 多线程爬取ts片段

angularjs2 学习笔记 组件

数据库学习指令记录

数据库学习指令记录