文章目录
一,sqlyog工具的使用
–1,新建连接
找到了压缩包,进行解压,进去找一个exe应用程序,双击.
填入正确密码 — 连接测试 — 连接
–2,数据库
直接右键 – 新建数据库 – 设置数据库名/选成utf8的编码表 – 创建
–3,表
选中Tables – 右键 – 新建表 – 设计字段名称/字段类型/字段长度 – 创建
–4,记录
选中表 – 右键 – 打开表 – 可以直接录入数据(修改/删除) – 执行SQL看结果
–5,练习,创建user表
二,字段约束
–1,主键约束
#1.主键约束:每张表都应该有主键,特点是:非空且唯一CREATETABLE test6(id INTPRIMARYKEY)INSERTINTO test6 VALUES(1)INSERTINTO test6 VALUES(1)#id是主键,值唯一INSERTINTO test6 VALUES(NULL)#id是主键,值不能为空SELECT*FROM test6
#主键约束要求,值不能为空而且不能相同!!#2.问题是:要去关心主键值到底应该写几了呢??INSERTINTO test6 VALUES(3)#3.从此以后,交给MySQL数据库来维护主键的值,自增++CREATETABLE test7(
id INTPRIMARYKEYAUTO_INCREMENT,
NAME VARCHAR(10))INSERTINTO test7 VALUES(NULL,'rose');INSERTINTO test7 VALUES(NULL,'jack');
三,基础函数
MySQL数据库为了提高程序员操作数据的效率,提供了很多函数
常见的有: upper/lower/length/concat/replace/year/month…/round…
–1,LOWER & UPPER
#基础函数:MySQL提供的一些函数#练习1:查询部门表的所有数据#查询 所有 from 表名SELECT*FROM dept
#练习2:查询部门表的所有部门名称SELECT dname FROM dept
#练习3:查询部门表的所有部门名称和地址SELECT dname a FROM dept#设置别名SELECT dname,loc FROM dept
#练习4:查询所有部门名称和大写的名称upperSELECT dname,UPPER('abc'),UPPER(dname)FROM dept
#练习5:把员工名字转大写SELECT ename,UPPER(ename)FROM emp
#练习6:把ABC转小写lowerSELECT LOWER('ABC')FROM dept
–2,LENGTH & SUBSTR & CONCAT
#练习7:查询dname的长度#length:底层会去查询utf8表,规定了一个字母或数字长度为1,一个汉字长度为3SELECT dname,LENGTH(dname),loc,LENGTH(loc)FROM dept
#练习8:截取部分dname的值#SUBSTR(a,b,c)-a是字段名称b是开始截取的位置c是截取的长度SELECT dname,SUBSTR(dname,3)FROM dept
SELECT dname,SUBSTR(dname,3),SUBSTR(dname,3,3)FROM dept
#练习9:把dname的值拼接hello#concat(1,2,3)-拼接字符串,1是字段名称2是第一次拼接的内容3是继续要拼接的内容SELECT dname,CONCAT(dname,'hello',100)FROM dept
–3,REPLACE & IFNULL & ROUND
#练习10:把dname的a替换成666#replace(1,2,3)-替换字符串,1是字段名称2是要被替换掉的3是新值SELECT dname,REPLACE(dname,'a','666') res FROM dept
#练习11:查询员工的奖金#ifnull(1,2)-对null元素的替换操作1是字段名称2是null要被换成谁SELECT comm,IFNULL(comm,0)FROM emp
#练习12:统计员工的月薪SELECT sal,comm,sal+IFNULL(comm,0)FROM emp
#练习13:对小数的精确处理#round四舍五入取整 & ceil向上取整 & floor向下取整SELECT comm,ROUND(comm),CEIL(comm),FLOOR(comm)FROM emp
SELECT comm,ROUND(comm,2)FROM emp#四舍五入,并保留一个小数
-4,日期函数 & 转义符号
#练习14:对日期数据的精确处理#now & year & month & day & hour & minute & secondSELECTNOW()#获取当前的系统时间SELECTYEAR('2000-1-1')#获取日期中的年SELECTYEAR(NOW())#获取当前年SELECTYEAR(NOW()),MONTH(NOW()),DAY(NOW())SELECTHOUR(NOW()),MINUTE(NOW()),SECOND(NOW())#转义字符,是指在SQL语句中有特殊函数的一些符号,需要\转义SELECT'xi\'an'SELECT"xi'an"
四,条件查询
SQL中可以通过条件来查询数据,满足条件的数据就查出来,没满足的就查不出来.
–1,DISTINCT & WHERE
#1.distinct去重#练习1:查询部门地址SELECTDISTINCT loc FROM dept
#2.where#练习2:查询编号=1的部门信息# 查所有 表名 查询条件(字段名称=字段值)SELECT*FROM dept WHERE deptno=1#练习3:查询办公地址在二区的部门名称SELECT dname FROM dept WHERE loc='二区'#办公地址在二区的#练习4:查询工资>8000的员工信息SELECT*FROM emp WHERE sal>8000#工资>8000#练习5:查询岗位是员工并且工资>3000的员工姓名SELECT ename FROM emp
WHERE job='员工'AND sal>3000#条件间的并且关系#练习6:查询工资=3000 工资=8000的员工信息SELECT*FROM emp
#where sal=3000 or sal=8000#条件间的或者关系WHERE sal IN(3000,8000)#in子句,效果语义同上
–2,模糊查询
#3.like模糊查询,通常使用%通配0~n个字符#练习7:查询名字里包含a的员工信息SELECT*FROM emp WHERE ename LIKE'%a%'#包含a的#练习8:查询工作岗位中有总字的员工姓名SELECT ename,job FROM emp WHERE job LIKE'%总%'#包含总#练习9:查询工作岗位以总开头的员工姓名SELECT ename,job FROM emp WHERE job LIKE'总%'#以总开头,高效SELECT ename,job FROM emp WHERE job LIKE'%总'#以总结尾
–3,null & between and
#4.null#练习10:查询没有奖金的员工的信息SELECT*FROM emp WHERE comm ISNULL#练习11:查询有奖金的员工的信息SELECT*FROM emp WHERE comm ISNOTNULL#5.between and 在区间范围内#练习12:查询工资在[5000,10000]的员工信息SELECT*FROM emp
#where sal>5000 and sal<10000#更灵活的表达条件WHERE sal BETWEEN5000AND10000#效果语义同上,两边都包含#练习13:查询2015年至2019年入职的员工信息SELECT*FROM emp
#WHERE hiredate>='2015-1-1' AND hiredate<='2019-12-31'WHEREYEAR(hiredate)BETWEEN2015AND2019
版权归原作者 cgblpx 所有, 如有侵权,请联系我们删除。