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. dubbo学习思路梳理

    dubbo要解决的问题 rpc调用需要定制.额外的工作量 分布式服务中,服务动辄几十上百,相互之间的调用错综复杂,相互依赖严重 对集群性的服务,需要负载策略 对集群性的服务,能动态扩展节点 dubbo ...

  2. POJ Georgia and Bob-----阶梯博弈变形。

    Georgia and Bob Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 6622   Accepted: 1932 D ...

  3. hdu Rescue 1242

    Rescue Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  4. Linux学习8-Linux常用命令(4)

    链接命令     命令名称:ln 命令英文原意:link 命令所在路径:/bin/ln 执行权限:所有用户 功能描述:生成链接文件 语法:ln 选项[-s][原文件] [目标文件] 选项: -s 创建 ...

  5. css的定位笔记

    relative:相对定位. 1. 不论其父元素和相邻元素的position是什么,均相对于自身原来的位置来偏移. 2. 不会脱离文档流,其原来的位置依然保留着,不会被文档中其他的元素占用. 3. 原 ...

  6. mybatis逆向文件

    一.mapper接口中的方法解析 mapper接口中的函数及方法 方法 功能说明 int countByExample(UserExample example) thorws SQLException ...

  7. 使用servicestack连接redis

    引言:作为少有的.net架构下的大型网站,stackoverflow曾发表了一篇文章,介绍了其技术体系,原文链接http://highscalability.com/blog/2011/3/3/sta ...

  8. C#Owin auth20开发 OwinStartup 不会触发的解决办法

    在使用owin auth20设置token时候遇到一个问题.项目中已经存在如下初始化配置类 using Microsoft.Owin; using Owin; [assembly: OwinStart ...

  9. web项目启动时,自动执行代码的几种方式

    在项目开发过程中,往往需要一些功能随着项目启动而优先启动,下面我总结几种方式(非spring boot) spring boot的参考 spring boot 学习之路9 (项目启动后就执行特定方法) ...

  10. leetCode题解之反转二叉树

    1.题目描述 经典的反转二叉树,就是将二叉树中每个节点的左.右儿子交换. 2.题目分析 3.代码 TreeNode* invertTree(TreeNode* root) { if(root == N ...