- 一,准备dept表和emp表
- --1,dept表
- --2,emp表
- 二,MySQL客户端工具sqlyog
- --1,连接数据库的服务器
- --2,创建库
- --3,创建表
- --4,添加数据
- 三,MySQL的基础函数
- --1,概述
- --2,测试
- 四,条件查询
- --1,distinct & where
- --2,like & null
- --3,between and & limit & order by
mysql> show databases;
mysql> use cgb211001;
mysql> show tables;
mysql> drop table dept;
mysql> create table dept(
-> deptno int primary key auto_increment,
-> dname varchar(20),
-> loc varchar(13)
-> );
mysql> set names gbk;
mysql> insert into dept values(null,'accounting','一区');
mysql> insert into dept values(null,'research','二区');
mysql> insert into dept values(null,'operations','二区');
–2,emp表
mysql> create table emp(
-> empno int primary key auto_increment,
-> ename varchar(10),
-> job varchar(10),
-> mgr int,
-> hiredate datetime,
-> sal double,
-> comm numeric(8,2),
-> deptno int
-> );
mysql> INSERT INTO emp VALUES(100,'jack','副总',NULL,'2002-05-1',90000,NULL,1);
mysql> INSERT INTO emp VALUES(200,'tony','总监',100,'2015-02-02',10000,2000,2);
mysql> INSERT INTO emp VALUES(300,'hana','经理',200,'2017-02-02',8000,1000,2);
mysql> INSERT INTO emp VALUES(400,'leo','员工',300,'2019-02-22',3000,200.12,2);
mysql> INSERT INTO emp VALUES(500,'liu','员工',300,'2019-03-19',3500,200.58,2);
二,MySQL客户端工具sqlyog
–1,连接数据库的服务器
新建连接 – 输入了密码 – 确定
–2,创建库右键 – 创建数据库 – 输入库名和选成utf8 – 确定
–3,创建表选中Tables — 右键 — 新建表 — 输入字段名称/字段类型/字段长度 — 设置表名 — 成功
–4,添加数据可以直接在工具里录入数据,保存就行了.
也可以执行SQL,刷新数据就行了.
为了方便的操作数据,MySQL提供了很多函数,
常见的: lower upper length concat substr replace…
#1.查询语句的多种写法
#查询 所有列
SELECT * FROM emp;
#查询 ename列 的值
SELECt ename FROM emp;
#查询 字段名 别名
SELECt ename abc FROM emp;#给字段设置别名
# 字段名 别名 字段名 别名
SELECt ename a , job b FROM emp;
#2.基本函数:
#upper(m)全转大写,m是字段名称或者字符串
SELECt ename,UPPER('abc'),UPPER(ename) FROM emp;
#lower(m)全转小写,m是字段名称或者字符串
SELECt ename,LOWER('XYZ'),LOWER(ename) FROM emp;
#length(字段名称)求长度,一个字母或数字长度为1,一个汉字为3
SELECt ename,LENGTH(ename),LENGTH(job) FROM emp;#求ename的长度
#substr(a,b,c)截取,a是字段名称b是从第几个开始c是要截取的长度
SELECt ename,SUBSTR(ename,2) FROM emp;
SELECt ename,SUBSTR(ename,2,1) FROM emp;
#concat(a,b,c)拼接,a是字段名称b和c是要拼接的数据
SELECt ename,CONCAT(ename,123,'hello') FROM emp;
#replace(a,b,c)替换,a是字段名称b是要把谁替换成c
SELECT ename,REPLACE(ename,'a','b') FROM emp;
#ifnull(a,b)如果是null就替换,a是字段名称b是要把null替换成b
SELECt comm,IFNULL(comm,100) FROM emp;
#小数处理的:
#round(a)四舍五入,把a的值取整
SELECt comm,ROUND(comm) FROM emp;
#round(a,b)四舍五入,把a的值保留b位小数
SELECt comm,ROUND(comm,2) FROM emp;
#ceil直接向上取整 & floor直接向下取整
SELECt comm,CEIL(comm),FLOOR(comm) FROM emp;
#日期处理的:
#now & year & month & day & hour & minute & second
SELECt NOW(),YEAR('2021-11-25'),YEAR( NOW() )
,MONTH( NOW() ),DAY( NOW() )
,HOUR( NOW() ),MINUTE( NOW() ),SECOND( NOW() )
#转义字符: '
SELECT 'xi'an'
SELECT "xi'an"
四,条件查询
–1,distinct & where
#条件查询: #1.distinct去重,注意位置 # 字段名 表名 SELECT loc FROM dept SELECt DISTINCT loc FROM dept #2.where:条件满足才查 #语法: select 字段名 from 表名 where 字段名=字段值 #练习1:查询地址在一区的部门 SELECt * FROM dept WHERe loc='一区' #练习2:查询2号部门的所有数据 SELECt * FROM dept WHERe deptno=2 #练习3:查询办公地址在二区的部门名称 SELECt dname FROM dept WHERe loc="二区" #练习4:查询编号<3的部门地址 SELECt loc FROM dept WHERe deptno<3 #练习5:查询地址在二区的,编号是3的部门名称 #如果查询条件有多个,使用 and并且 or或者 连接 SELECt dname FROM dept WHERe loc="二区" AND deptno=3 #练习6:查询编号是1或者2的部门名称 SELECt dname FROM dept WHERe deptno=1 OR deptno=2 SELECt dname FROM dept WHERe deptno IN (1,2)#效果同上 #练习7:查询地址在一区,或者,编号是3的部门名称 SELECt dname FROM dept WHERe loc='一区' OR deptno=3 #向user表中,录入数据,测试where也可以对增删改设置条件 #练习8:修改3号用户的密码 #语法: update 表名 set 字段名=字段值 where 字段名=字段值 UPDATE USER SET pwd="xyz" WHERe id=3 #练习9:修改密码是123,age=20的用户名 UPDATE USER SET NAME='anglelababa' WHERe pwd=123 AND age=20 #练习10:删除5号用户 DELETE FROM USER WHERe id=5–2,like & null
#3.like模糊查询,%是通配符(0~n个字符),_是通配符(1个字符) #练习11:查询名字是以t开头的员工姓名和岗位 SELECt ename,job FROM emp WHERe ename LIKE 't%'#以t开头,高效 #练习12:查询名字包含o的员工姓名和编号 SELECt ename,empno FROM emp WHERe ename LIKE '%o%'#包含o SELECt ename,empno FROM emp WHERe ename LIKE '%o'#以o结束 #4.null,对null特殊处理 #练习13:查询没有奖金的员工姓名和岗位 SELECt ename,job FROM emp WHERe comm IS NULL#没有奖金的 SELECt ename,job FROM emp WHERe comm IS NOT NULL#有奖金的–3,between and & limit & order by
#4.between and区间范围,两边都包含 #练习14:查询工资在[5000~1000]员工姓名和入职日期 SELECt ename,hiredate FROM emp WHERe sal>5000 AND sal<=10000 SELECt ename,hiredate FROM emp WHERe sal BETWEEN 5000 AND 10000 #练习15:查询在2019年入职的员工姓名 SELECt ename FROM emp WHERe hiredate BETWEEN '2019-1-1' AND '2019-12-31' SELECt ename FROM emp WHERe YEAR(hiredate)=2019#效果同上 #5.limit分页 #练习16:展示前两个员工的信息 SELECt * FROM emp LIMIT 2 #取前两条 SELECt * FROM emp LIMIT 0,2 #从第0+1条开始取,取2条 SELECt * FROM emp LIMIT 1,3 #从第1+1条开始取,取3条 #6.order by字典顺序排序,默认升序,非要降序就写明DESC #练习17:按照工资排序 SELECt * FROM emp ORDER BY sal DESC #练习18:按照名字排序,按照字典顺序排序 SELECt * FROM emp ORDER BY ename #练习19:按照日期排序,当做数值在升序 SELECt * FROM emp ORDER BY hiredate #练习20:按照岗位排序 SELECt * FROM emp ORDER BY job #练习21:查询最高薪的员工的名字和岗位 SELECt * FROM emp ORDER BY sal DESC LIMIT 1



