SQL中的运算符

算术运算符

--算术运算符(子句)
select 1+1;
select 2-1;
select 2*2;
select 3/4; --0.75
select 3/0; --NULL
select 3 div 4; --

比较运算符> < >= <= != =

--0表示false,1表示true
select 1=1; --
select 1!=1; --

逻辑运算符  and or !

select 1=1 and 1!=1;

位运算符 | ^ &

select 2|3;  --
select 2&3; --
select 2^3; --

DML(insert、update、delete)

insert(插入)

语法

insert into tname[(字段…)] values(值…)

例如

--插入数据
insert into student values(1,'zs',18);
--只给部分字段添加值
insert into student(sname,age) values('ls',19);
--批量插入多条记录
insert into student(sname,age) values('ww',19),('zs',18),('tq',20);
--student表有数据,stu表复制student表数据
--复制表结构
create table stu select * from student where 1 = 0;
--复制表数据
insert into stu select * from student;

update(修改)

语法

update tname set 字段=新值 [where 条件]

例如

--ww的年龄+1
update student set age=age+1 where sname='ww';

delete(删除)

语法

delete from tname [where 条件]

例如

delete from student where sid =5;

delete和truncate的区别

  1. delete不会重置自增,truncate会重置

    2.delete删除是行级删除,一行一行删除,效率低;truncate效率高。

DQL

emp(员工)表

dept(部门)表

例如

--查询所有数据(结果集)
select * from emp;
--查询部分字段 名称和工资
select ename,sal from emp;
--查询工资>2000的员工信息(单一条件查询)
select * from emp where sal > 2000;
--查询在20号部门且工资大于2000的员工信息(多个条件)
select * from emp where deptno = 20 and sal > 2000
--查询在20号部门或者工资大于2000的员工信息
select * from emp where deptno = 20 or sal > 2000;
--查询工资大于等于1000小于等于3000的员工信息(范围查询)
select * from emp where sal >= 1000 and sal <= 3000;
select * from emp where sal between 1000 and 3000;
--查询员工编号为7788,7369,7521的员工信息(集合查询)
select * from emp where empno = 7788 or empno = 7369 or empno=7521
select * from emp where empno in (7788,7369,7521);
--查询所有的职位信息(去重)
select DISTINCT job from emp;
--别名(字段,表) [as] 别名
select empno 员工编号,ename 员工姓名 from emp;
select ename,sal*1.05 as sal from emp;
select * from emp e;
--查询所有没有奖金comm为null的员工信息(null的判断)
select * from emp where comm is not null;
--查询所有S打头的员工信息(模糊查询) % 代表0到多个字符 _代表占一个字符
select * from emp where ename like 'S%';
--查询所有N结尾的员工信息(模糊查询)
select * from emp where ename like '%N';
--查询所有包含S的员工信息(模糊查询)
select * from emp where ename like '%A%';
--查询所有第二个字符为L的员工信息
select * from emp where ename like '__L%';
--排序(order by 字段 [asc] | desc)
--升序排序
select * from emp order by sal desc;
--按照工资的降序排序,工资一样的按照empno的升序排序
select * from emp order by sal desc,empno ASC
--限制结果查询(limit m,n) 分页查询 m代表起始索引,n代表记录的数目
--仅适用于mysql
select * from emp limit 5,5;

函数

1.单行函数

a)数学函数

--数学函数
select ABS(10); --绝对值
select CEIL(-12.3); --向上取整
select FLOOR(12.5); --向下取整
select ROUND(12.5); --四舍五入
select ROUND(12.49,-1);
select POW(3,3); --幂运算
select RAND(); --随机数[0,1)

b)字符函数

--字符串函数
select LENGTH(ename) from emp; --获取字符串长度
select length('this is an apple');
select LOWER(ename) from emp; --转换为小写
select UPPER('this is an apple'); --转换大小写
select SUBSTR('aabbcc',1,2); --从1开始
select LPAD('smith',10,'*'); --左填充 开始字符串 总长度 padstr填充的字符
select RPAD('smith',10,'*'); --右填充
select TRIM(' smi th'); --去空格

c)日期函数

--日期
select NOW();
select SYSDATE();
select CURRENT_DATE(); --当前日期
select CURRENT_TIME(); --当前时间
select YEAR('1998-09-09');
select MONTH('1998-09-09');
select DAY('1998-09-08');
select DATE_ADD('1998-09-08',INTERVAL 2 YEAR);

2.聚合函数

count、sum、avg、max、min

--员工数(统计记录数)
select * from emp;
select count(*) from emp;
select count(1) from emp;
--统计非空字段数目
select count(comm) from emp;
--SUM
select sum(sal) from emp;
--AVG
select avg(sal) from emp;
--MAX
select max(sal) from emp;
--MIN
select min(sal) from emp;

3.分组函数

group by 分组字段

--分组函数  GROUP BY  deptno
--每个部门的平均工资
--group by根据条件字段的值返回相应的记录数;但是在select子句中,只能出现聚合函数或者分组的条件字段。
select deptno,avg(sal) from emp group by deptno;
--各个职位员工数? job
select job,count(*) from emp group by job;

having 将分组之后的结果集再次进行检索

--平均工资大于2000的部门的部门编号和平均工资?
--1.求出每个部门的平均工资
--2.平均工资>2000
select deptno,avg(sal) from emp group by deptno having avg(sal) > 2000;

where和having的区别

--查询工资大于1500的每个部门的部门编号和平均工资(先过滤再分组)
select deptno,avg(sal) from emp where sal > 1500 group by deptno;
--查询平均工资大于1500的部门编号和平均工资
select deptno,avg(sal) from emp group by deptno having avg(sal) > 2000;

4.加密函数

MD5、SHA、PASSWORD

--加密函数
select MD5('root');
select SHA('root');
select PASSWORD('root');

外键约束

--添加外键约束
alter table student add CONSTRAINT FK_CID FOREIGN KEY(cid) REFERENCES classroom(cid)

Day2 MySql函数以及单表查询的更多相关文章

  1. mysql 数据操作 单表查询 目录

    mysql 数据操作 单表查询 mysql 数据操作 单表查询 简单查询 避免重复DISTINCT mysql 数据操作 单表查询 通过四则运算查询 mysql 数据操作 单表查询 concat()函 ...

  2. mysql 数据操作 单表查询 group by 分组 目录

    mysql 数据操作 单表查询 group by 介绍 mysql 数据操作 单表查询 group by 聚合函数 mysql 数据操作 单表查询 group by 聚合函数 没有group by情况 ...

  3. MySQL数据库之单表查询中关键字的执行顺序

    目录 MySQL数据库之单表查询中关键字的执行顺序 1 语法顺序 2 执行顺序 3 关键字使用语法 MySQL数据库之单表查询中关键字的执行顺序 1 语法顺序 select distinct from ...

  4. MySQL数据库语法-单表查询练习

    MySQL数据库语法-单表查询练习 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客主要是对聚合函数和分组的练习. 一.数据表和测试数据准备 /* @author :yinz ...

  5. mysql 基础入门 单表查询

    单表查询 select 表头,表头 as 别名 ,表头(+-*/的运算) from table_a 1.条件查询 where + 条件 <> , != 不等于 = 等于,也可以表示字符串值 ...

  6. mysql 数据操作 单表查询 where 约束 目录

    mysql 数据操作 单表查询 where约束 between and or mysql 数据操作 单表查询 where约束 is null in mysql 数据操作 单表查询 where约束 li ...

  7. 【授课录屏】JavaScript高级(IIFE、js中的作用域、闭包、回调函数和递归等)、MySQL入门(单表查询和多表联查)、React(hooks、json-server等) 【可以收藏】

    一.JavaScript授课视频(适合有JS基础的) 1.IIFE 2.js中的作用域 3.闭包 4.表达式形式函数 5.回调函数和递归 资源地址:链接:https://pan.baidu.com/s ...

  8. MySQL学习9 - 单表查询

    一.单表查询的语法 二.关键字的执行优先级(重点) 三.单表查询示例 1.where约束 2.group by分组查询 3.聚合函数 4.HAVING过滤 5.order by查询排序 6.limit ...

  9. mysql 数据操作 单表查询 group by 介绍

    group by 是在where 之后运行 在写单表查询语法的时候 应该把group by 写在 where 之后 执行顺序 1.先找到表 from 库.表名 2.按照where 约束条件 过滤你想要 ...

随机推荐

  1. java并发编程的艺术(二)---重排序与volatile、final关键字

    本文来源于翁舒航的博客,点击即可跳转原文观看!!!(被转载或者拷贝走的内容可能缺失图片.视频等原文的内容) 若网站将链接屏蔽,可直接拷贝原文链接到地址栏跳转观看,原文链接:https://www.cn ...

  2. CRC算法

    https://blog.csdn.net/dream_1996/article/details/73588269

  3. ASP.NET Core 2 学习笔记(十三)Swagger

    Swagger也算是行之有年的API文件生成器,只要在API上使用C#的<summary />文件注解标签,就可以产生精美的线上文件,并且对RESTful API有良好的支持.不仅支持生成 ...

  4. CentOS安装Oracle 11g R2

    官方的安装链接: https://docs.oracle.com/cd/E11882_01/install.112/e24326/toc.htm#BHCGJCEA 检查硬件需求 1. 内存需求 物理内 ...

  5. git 错误error: failed to push some refs to

    今天使用VSCODE 学习node.js,  想在git上push代码 于是在git上建立了一个私有的长裤, 连接后push代码时提示如下错误: error: failed to push some ...

  6. 关于微信小程序开发中遇到的缺少game.json问题的解决

    一.小程序开发的两种选项 ①小游戏开发:内部对应的入口配置文件为game.json丶game.wxml之类的文件或者项目. ②小程序开发:内部对应的入口配置文件为app.json丶app.wxml之类 ...

  7. spring测试框架的使用

    junit的使用 1.加入 junit jar包 <dependency> <groupId>junit</groupId> <artifactId>j ...

  8. zookeeper - java操作

    ZKUtils.java package test; import java.io.IOException; import java.util.concurrent.CountDownLatch; i ...

  9. Docker 网络基础介绍

    [编者按]本文作者为 Mesosphere 开发大使 Michael Hausenblas,主要介绍配置 Docker 单主机网络的基本知识.文章系国内 ITOM 管理平台 OneAPM 编译呈现. ...

  10. Prometheus Node_exporter 之 Basic CPU / Mem Graph

    1. CPU Basic cpu 的基本信息 /proc/stat type: GraphUnit: shortBusy System: cpu 处于核心态的占比 metrics: sum by (i ...