数据库学习指令记录
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 撤销权限
以上是关于数据库学习指令记录的主要内容,如果未能解决你的问题,请参考以下文章