Day2 MySql函数以及单表查询
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的区别
- 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函数以及单表查询的更多相关文章
- mysql 数据操作 单表查询 目录
mysql 数据操作 单表查询 mysql 数据操作 单表查询 简单查询 避免重复DISTINCT mysql 数据操作 单表查询 通过四则运算查询 mysql 数据操作 单表查询 concat()函 ...
- mysql 数据操作 单表查询 group by 分组 目录
mysql 数据操作 单表查询 group by 介绍 mysql 数据操作 单表查询 group by 聚合函数 mysql 数据操作 单表查询 group by 聚合函数 没有group by情况 ...
- MySQL数据库之单表查询中关键字的执行顺序
目录 MySQL数据库之单表查询中关键字的执行顺序 1 语法顺序 2 执行顺序 3 关键字使用语法 MySQL数据库之单表查询中关键字的执行顺序 1 语法顺序 select distinct from ...
- MySQL数据库语法-单表查询练习
MySQL数据库语法-单表查询练习 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客主要是对聚合函数和分组的练习. 一.数据表和测试数据准备 /* @author :yinz ...
- mysql 基础入门 单表查询
单表查询 select 表头,表头 as 别名 ,表头(+-*/的运算) from table_a 1.条件查询 where + 条件 <> , != 不等于 = 等于,也可以表示字符串值 ...
- mysql 数据操作 单表查询 where 约束 目录
mysql 数据操作 单表查询 where约束 between and or mysql 数据操作 单表查询 where约束 is null in mysql 数据操作 单表查询 where约束 li ...
- 【授课录屏】JavaScript高级(IIFE、js中的作用域、闭包、回调函数和递归等)、MySQL入门(单表查询和多表联查)、React(hooks、json-server等) 【可以收藏】
一.JavaScript授课视频(适合有JS基础的) 1.IIFE 2.js中的作用域 3.闭包 4.表达式形式函数 5.回调函数和递归 资源地址:链接:https://pan.baidu.com/s ...
- MySQL学习9 - 单表查询
一.单表查询的语法 二.关键字的执行优先级(重点) 三.单表查询示例 1.where约束 2.group by分组查询 3.聚合函数 4.HAVING过滤 5.order by查询排序 6.limit ...
- mysql 数据操作 单表查询 group by 介绍
group by 是在where 之后运行 在写单表查询语法的时候 应该把group by 写在 where 之后 执行顺序 1.先找到表 from 库.表名 2.按照where 约束条件 过滤你想要 ...
随机推荐
- 【基于初学者的SSH】struts02 数据封装的三种方式详解
struts的数据封装共有3中方式,属性封装,模型驱动封装和表达式封装,其中表达式封装为常用 一:属性封装: 属性封装其实就是自己定义变量,注意变量名要和表单的name属性名一致,然后生成get和se ...
- js小练习
1.题目:某班的成绩出来了,现在老师要把班级的成绩打印出来. 效果如下:xxx年xx月x日 星期x--班级总分为:81 格式要求:1.显示打印的日期.格式为类似“xxxx年xx月xx日 星期x”的当 ...
- SQL事务在存储过程的应用
-- ============================================= -- Author: jf_ou -- Create date: 2017-08-22 -- Desc ...
- Django基础六之ORM中的锁和事务
一 锁 行级锁 select_for_update(nowait=False, skip_locked=False) #注意必须用在事务里面,至于如何开启事务,我们看下面的事务一节. 返回一个锁住行直 ...
- angular2.0---服务Service,使用服务进行数据处理
1.创建服务 打开命令窗口,cd到项目目录下,输入 ng g service myData1 回车 创建服务,如下图所示: 这样就成功创建了服务,此时,可以在项目的app文件夹下生成了两个serv ...
- PHP自定义函数&数组
<?php//生成随机数 和 时间函数//echo rand();//echo "<br>";//echo rand(0,10);//echo time();// ...
- LeetCode 之二叉树中序遍历(使用栈实现)
1.题目描述 2.使用栈实现难度大于使用递归实现 3.代码 vector<int> inorderTraversal(TreeNode* root) { // 非递归实现,借助栈 vect ...
- 监控SQLServer 数据库表每天的空间变化情况
阅读完桦仔的<分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间)>后,我想使用文中提供的代码做一个统计表每天的新增行数及新增存储空间的功能 实现步骤如下: 1 ...
- webpack HMR是如何工作的?
https://github.com/webpack/docs/wiki/hot-module-replacement-with-webpack https://www.jianshu.com/p/9 ...
- 如何在首次启动 Linux 虚拟机时对其进行自定义
在前面的教程中,你已学习如何通过 SSH 连接到虚拟机 (VM) 并手动安装 NGINX. 若要以快速一致的方式创建 VM,通常需要某种形式的自动化. 在首次启动 VM 时实现自定义的常见方法是使用 ...