Mysql进阶

典型单行函数

  • 大小写操作函数 lower()转大写 upper()转小写 initcap()首字母大写
  • 字符操作函数 concat(‘h,’l’)字符连接 substr(‘hello’,1,5)取字符(从1取到5) length(‘helloworld’)字符串长度 instr(‘helloworld’,’w’)返回w在字符串的位置
  • select round(45.926,2) trunc(45.926,2) from dual round小数点后两位四舍五入;trunc保留小数点后两位
  • 日期 select sysdate from dual;//返回系统日期 select ename,hidedate (sysdate-hidedate)/7 as weeks hidedate-1 hidedate-24/24
  • 常用转换函数 select ename,hidedate,to_char(hidedate,'yyyy-mm-dd') from user; select ename,sal to_char(sal,'$99,999.00' from emp where sal=3000; select to_number('000011111') from user select to_date() from user

典型分组函数

  • avg()
  • min()
  • max()
  • sum()
  • count() select avg(sal) from user where deptno=30;
  • groupby select deptno,avg(sal) from user group by deptno;先分组再取平均
  • having select deptno,max(sal) from user group by deptno having max(sal)>10000 order by deptno;having只能接在groupby后面,对分组的进行筛选
  • 分组函数嵌套

多表查询

a表(上)与b表(下)

id

name

1

张3

2

李四

3

王武

id

job

parent_id

1

23

1

2

34

2

3

34

4

1) 内连接 select a.*,b.* from a inner join b on a.id=b.parent_id 结果是 1   张3   1  23    1 2   李四  2  34    2

2)左连接 select a.*,b.* from a left join b on a.id=b.parent_id 结果是 1    张3    1     23    1 2   李四    2    34    2 3    王武    null

3) 右连接 select a.*,b.* from a right join b on a.id=b.parent_id 结果是 1    张3    1   23   1 2   李四    2   34   2   null     3   34    4

4) 完全连接 select a.*,b.* from a full join b on a.id=b.parent_id

结果是 1    张3   1     23   1 2   李四   2    34   2   null      3    34    4 3    王武    null


典型子查询

单行子查询

select ename,sal from emp where sal>(select sal from emp where ename='rachel');薪水比rachel高的信息 select ename,sal from emp where sal=(select min(sal) from emp);薪水最低的员工

多行子查询(in,any,all)

select *from emp where empno in(select mgr from emp)查询所有经理信息 select empno,ename,job,sal from emp where sal<any(select sal from emp where job='salesman') and job<>'salesman';薪水低于销售部任意员工的非销售部员工


表结构操作语句

列和表约束

not null(非空) unique(唯一) primary key(主键) foreign key(外键) check(条件检查) 列约束包含上面五个,表约束包含后面四个 creat table emp (id varchar2(6) primary key,           name varchar2(20) not null,           hiredate date default sysdate not null,           salary number(7,2),           constraint emp_sal_min check(salary>1000)           );

增加和删除列

alter table emp add address varchar(20); alter table emp drop column address;

修改表名

alter table emp rename to emps;

修改列名

alter table emp rename column name to ename;

删除表

drop table emp cascade constraints

查看表结构

desc emp


典型数据操作语句DML

insert

insert into emp (empno,ename) values (7902,'richal')

update

update emp set depto=60,job='trainer' where ename='ena'

delete

delete from emp where ename='ena'


典型事物操作语句 commit rollback


sql语句简单优化

  • 尽量避免使用*
  • 尽量使用别名 select e.ename,e.sal,d.deptno from emp e,dept d where d.deptno=e.deptno;
  • where子句中的连接顺序 (where从右往左运行)所以将缩小范围最大的条件放在右边 select * from emp e,dept d where d.deptno>10 and e.deptno=30;
  • 使用”>=”替代”>” 用truncate代替delete(delete会将数据放在回滚段中,commit前可以恢复)
  • 尽量多的使用commit
  • 避免在索引列上使用函数

查询限制 where ename like‘s%’//%是通配符,表示匹配所有s开头的 where ename in (700,800,900)//选中700,800,900的

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java进阶之路

IK分词器访问远程词典功能实现

IKAnalyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。从2006年12月推出1.0版开始,IKAnalyzer已经推出了3个大版本。最...

2532
来自专栏芋道源码1024

数据库中间件 MyCAT源码分析——跨库两表Join

1. 概述 2. 主流程 3. ShareJoin 3.1 JoinParser 3.2 ShareJoin.processSQL(...) 3.3 Batc...

1.1K8
来自专栏V站

Python的flask:models.py来创建mysql数据库

4016
来自专栏IT可乐

mybatis 详解(五)------动态SQL

  前面几篇博客我们通过实例讲解了用mybatis对一张表进行的CRUD操作,但是我们发现写的 SQL 语句都比较简单,如果有比较复杂的业务,我们需要写复杂的 ...

32510
来自专栏张善友的专栏

使用 SQL Server 2008 数据类型-xml 字段类型参数进行数据的批量选取或删除数据

我们经常有这样的需求,批量的删除或者选取大量的数据,有非常多的Id值,经常使用in条件查询,如果你使用拼接字符串的方式,可能遭遇SQL语句的长度限制4000个字...

2629
来自专栏coder修行路

Go基础之--操作Mysql(二)

在上一篇文章中主要整理了Golang连接mysql以及一些基本的操作,并进行了大概介绍,这篇文章对增删查改进行详细的整理 读取数据 在上一篇文章中整理查询数据...

5506
来自专栏禹都一只猫博客

Python的flask:models.py来创建mysql数据库

2026
来自专栏Leetcode名企之路

【设计模式】单例模式

前几天面试一个校招的小朋友,让他写单例模式,没写出来,所以这里把两年前我的学习笔记发一下。这应该是所有设计模式中最简单的设计模式了,从它讲起。

1113
来自专栏禹都一只猫博客

Python的flask:models.py来创建mysql数据库

1K9
来自专栏Android干货

浅谈Android数据库DBFlow

2655

扫码关注云+社区

领取腾讯云代金券