MySQL数据库笔记Day2

基础函数

–1,工具的使用

1,找到.exe程序,双击,输入了密码,点击连接,就可以了
2,创建库: 右键-新建数据库-设置数据库名-选字符集utf8-确定
3,创建表: 右键-创建表-输入字段名字段类型字段长度字段约束-创建表-输入表名-确定
4,添加表里的记录,如下图

在这里插入图片描述

 –2,准备数据

CREATE TABLE dept(
deptno int primary key auto_increment ,
dname VARCHAR(20),
loc VARCHAR(13)
);
INSERT INTO dept VALUES(null,'accounting','一区');
INSERT INTO dept VALUES(null,'research','二区');
INSERT INTO dept VALUES(null,'operations','二区');
CREATE TABLE emp(
empno int primary key auto_increment,
ename VARCHAR(10),
job VARCHAR(10),
mgr int,
hiredate DATE,
sal double,
comm NUMERIC(7,2),
deptno int
);
INSERT INTO emp VALUES(100,'jack','副总',NULL,'2002-05-1',90000,NULL,1);
INSERT INTO emp VALUES(200,'tony','总监',100,'2015-02-02',10000,2000,2);
INSERT INTO emp VALUES(300,'hana','经理',200,'2017-02-02',8000,1000,2);
INSERT INTO emp VALUES(400,'leo','员工',300,'2019-02-22',3000,200.12,2);
INSERT INTO emp VALUES(500,'liu','员工',300,'2019-03-19',3500,200.58,2);

–3, 查询

 

 

 

--upper :转大写

select upper(ename) from emp --数据转大写

  --lower:转小写

SELECT 'ABC',LOWER('ABC') from emp; --数据转小写

  --length:查询长度

select length(ename) from emp --数据的长度

 

-- substr---截取子串

SELECT ename,SUBSTR(ename,1,3) FROM emp; --截取[1,3]

 ---concat:拼接

select ename,concat(ename,'123') X from emp --拼接数据

 ----replace替换

select ename,replace(ename,'a','666')  from emp --把a字符替换成666

--- ifnull 换值 (a,b)-a是字段名b 是换成的值

select ifnull(comm,10) comm from emp #判断,如果comm是null,用10替换

 eg;测试

 ---round & ceil & floor

round四舍五入,ceil向上取整,floor向下取整

 ---round

  ---ceil

  ---floor

 ---now当前 & year年  & month月 & day日

---hour时 & minute分& second秒

-uuid

SELECT UUID()#随机生成一个32位的字符串 

转义字符

作为sql语句符号,内容中出现单撇就会乱套,进行转义即可

条件查询

--- distinct

select ? from 表名#查询部门地址

---where

注意:where中不能使用列别名!!

写法:SELECT 字段名 FROM 表名 WHERE  字段名   = 字段值

select * from emp

select * from emp where 1=1 --类似没条件

select * from emp where 1=0 --条件不成立

select * from emp where empno=100 --唯一条件

select * from emp where ename='tony' and deptno=2 --相当于两个条件的&关系

select * from emp where ename='tony' or deptno=1 --相当于两个条件的|关系

select name, sal from emp where sal=1400 or sal=1600 or sal=1800;

-- 或

select name, sal from emp where sal in(1400,1600,1800);

select name, sal from emp where sal not in(1400,1600,1800);

 

 

#练习3:查询名称是research的部门编号 

#练习4:查询地址在二区编号为3的闭门名称 

 #练习5:查询部门名称是accounting/research的部门地址

 #练习6:查询编号是1 2 3的部门信息

---like 查询(模糊查询)

通配符%代表0到n个字符,通配符下划线_代表1个字符

句式:

select * from emp where ename like 'l%' --以l开头的

select * from emp where ename like '%a' --以a结束的

select * from emp where ename like '%a%' --中间包含a的

select * from emp where ename like 'l__' --l后面有两个字符的 _代表一个字符位置

#练习1:查询名字包含a的员工信息

---null

select * from emp where mgr is null --过滤字段值为空的

select * from emp where mgr is not null --过滤字段值不为空的

 #练习1:查询没有奖金的员工信息

 ---between and 在什么之间

SELECT * FROM emp

select * from emp where sal<3000 and sal>10000

select * from emp where sal<=3000 and sal>=10000--等效

select * from emp where sal between 3000 and 10000--等效

 #练习4:查询2019年入职的员工名字

--- limit

分数最高的记录:按分数排序后,limit n,返回前n条。Oracle做的很笨,实现繁琐,后期有介绍,而mysql做的很棒,语法简洁高效。在mysql中,通过limit进行分页查询:

select * from emp limit 2 --列出前两条

select * from emp limit 1,2 --从第二条开始,展示2条记录

select * from emp limit 0,3 --从第一条开始,展示3条记录--前三条

#练习5:展示前两条员工数据

 #练习6:查询岗位是员工的第一条记录 

 ---order by

SELECT * FROM emp order by sal #默认升序

SELECT * FROM emp order by sal desc #降序

#练习7:按照sal 排序

 聚合 aggregation

根据一列统计结果

 ---max / min

select max(sal) from emp --求字段的最大值

select max(sal) sal,max(comm) comm from emp

select min(sal) min from emp --获取最小值

select min(sal) min,max(sal) max from emp --最小值最大值

SELECT ename,MAX(sal) FROM emp group by ename --分组

---sum / avg

select count(*) from emp --总记录数

select sum(sal) from emp --求和

select avg(sal) from emp --平均数

--- count

select count(*) from emp --底层优化了

select count(1) from emp --效果和*一样

select count(comm) from emp --慢,只统计非NULL的

练习

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值