MYSQL数据库的介绍

一、数据库的常见概念
1、DB:数据库,存储数据的容器
2、DBMS:数据库管理系统,又称为数据库软件或数据库产品,用于创建或管理DB
3、SQL:结构化查询语言,用于和数据库通信的语言,不是某个数据库软件特有的,而是几乎所有的主流数据库软件通用的语言
**
二、数据库存储数据的特点
1、数据存放到表中,然后表再放到库中
2、一个库中可以有多张表,每张表具有唯一的表名用来标识自己
3、表中有一个或多个列,列又称为“字段”,相当于java中“属性”
4、表中的每一行数据,相当于java中“对象”
**
三、mysql的优点
1、开源、免费、成本低
2、性能高、移植性也好
3、体积小,便于安装

四、MySQL服务的启动和停止
方式一:通过命令行
net start 服务名
net stop 服务名
方式二:计算机——右击——管理——服务

五、MySQL服务的登录和退出

登录:mysql 【-h 主机名 -P 端口号】 -u 用户名 -p密码
退出:exit或ctrl+C

DQL(数据查询)语言的学习(1)

**

注意:以上为employees表、departments表、locations表、job_grades表、jobs表

目录:

  1. 基础查询
  2. 条件查询
  3. 排序查询
  4. 常见函数

1、基础查询**

**
语法:
select 查询列表 from 表名;
(1)查询列表可以是:表中的字段、常量值、表达式、函数
(2)查询的结果是一个虚拟的表格

1.1、查询表中的单个字段

select last_name from employess;

1.2、查询表中的多个字段

select last_name,salary,email from employess;

1.3、查询表中的所有字段

select * from employees;

1.4、查询常量值

select 100;
select ‘jonn’;

1.5、查询表达式

select 100%98;

1.6、查询函数

select version();

1.7、起别名
方式一:

select 100%98 as ‘结果’;
select last_name as ‘姓’,first_name as ‘名’ from employees;

方式二:

select last_name  ‘姓’,first_name  ‘名’ from employees;

1.8去重(distinct)
案例:查询员工表中涉及到的所有部门编号

select distinct department_id from employees;

1.9、+号的作用
Java中的+号:
运算符,两个操作数都为数值型
连接符,只要有一个操作数为字符串

mysql中的+号:
仅仅只有一个功能:运算符
select 100+90;两个操作数都为数值型,则做加法运算
select ‘100’+90;其中一方为字符型,试图将字符型数值转换成数值型
如果转换成功,则继续做加法运算
如果装换失败,则将字符型数值转换成0
select null+10;只要字段其中一方为null,则结果肯定为null

案例:查询员工名和姓连成一个字符,并显示为姓名

select  concat(last_name,first_name)  as ‘姓名’ from employees;

注意:如果某个字段为0,可以用IFNULL来判断是否为空,如果为空显示为0
案例:显示出employees的全部列,各个列之间用,隔开,输出为out_from

select concat(last_name,’,’,first_name,',',IFNULL(money,0))  as out_put from employees;

**

2、条件查询

**
语法:
select 查询列表 from 表名 where筛选条件;
分类:
一、 按条件表达式筛选
条件运算符:> < = != <> <= >=

二、 按逻辑表达式筛选
作用:用于连接条件表达式
逻辑运算符: && || ! and or not
&&和and:两个条件都为true,结果为true,反之为false
||和or:只要有一个条件为true,结果为true,反之为false
!或not:如果连接的条件本身为false,结果为true,反之为false

三、按模糊查询
模糊查询:like ,between and,in,is null
like特点:一般和通配符搭配使用
通配符:% 任意多个字符,包含0个字符;_任意单个字符

between and特点:
1、使用between and 可以提高语句的简洁度;
2、包含临界值
3、两个临界值不要调换顺序

in特点:
1、判断某字段的值是否属于in列表中的某一项;
2、使用in比or更加简洁;
3、in里面不支持使用通配符%。

2.1、按条件表达式筛选
案例:查询工资>12000的员工信息

select * from employees where salary>12000;

2.2、按逻辑表达式筛选
案例1:查询工资z在10000到20000之间的员工名,工资以及奖金

select last_name,salasy commission_pct from employees where salary>=10000 and salary <=20000;

案例2:查询部门编号不是在90到110之间,或者工资高于15000的员工信息

select * from employees where not(department_id>=90 and department_id<=110) or salar>15000;

2.3、按模糊查询
# like
案例1:查询员工名中包含字符a的员工信息

select * from employees where last_name like ‘%a%’;

案例2:查询员工中第三个字符为e,第5个字符为a的员工名和工资

select last_name,salary from employees where last_name like ‘__e_a%’;

案例3:查询员工中第二个字符为_的员工名

select last_name from employees where last_name like ‘_/_%’

(其中/为转义字符)
或者
(其中$为转义字符可以任意替代,用escape说明转义符合)

select last_name from employees where last_name like ‘_$_%’  ESCAPE ‘$’;

# between and
案例:查询员工编号在100到120之间的员工信息
方法一:

select * from employees where employee_id >=100 and employee_id<=120;

方法二:

select * from employees where employee_id betweem 100 and 120;

# in
案例:查询员工的工种编号是IT_PROG、AD_VP、AD_PRES中的一个员工名和工种编号
方法一:

select last_name,job_id from employees where job_id=’IT_PROG’or job_id=’ AD_VP’or job_id=’ AD_PERS’;

方法二:

select last_name,job_id from employees where job_id in(‘IT_PROG’, ‘AD_VP’, ‘AD_PERS’);

# is null特点:=或<>不能用于判断null值,is null 或is not null可以判断null值
案例1:查询没有奖金的员工名和奖金率

select last_name,commission_pct  from employees where commission_pct is null;

案例2:查询有奖金的员工名和奖金率

select last_name,commission_pct  from employees where commission_pct is not null;

# 安全等于 <=>
案例1:查询没有奖金的员工名和奖金率

select last_name,commission_pct  from employees where commission_pct  <=> null;

案例2:查询工资为12000的员工信息

select  last_name,salary from employees where salary<=>12000;

# is null pk <=>
is null:仅仅可以判断null值,可读性较高,建议使用
< =>:既可以判断null值,又可以判断普通的数值,可读性较低

**

3、排序查询

**
语法:
select 查询列表 from 表 where 筛选条件 order by 排序列表(asc|desc);
特点:
1、 asc代表的是升序,desc代表的是降序
2、 如果不写,默认是升序asc
3、 order by子句中可以支持单个字段,多个字段,表达式,函数,别名
4、 order by字句一般是放在查询语句的最后面,limit子句除外

案例1:查询员工信息,要求工资从高到低排序

select * from employees order by salary desc

案例2:查询员工信息,要求工资从低到高排序

select * from employees order by salary asc(或者不加asc)

案例3:查询部门编号>=90的员工信息,按入职时间的先后进行排序

select * from employees where department_id>=90 order by hiredate asc;

案例4:(按表达式排序)按年薪的高低显示员工的信息和年薪

select *,salary*12*(1+ifnull(commission_pct,0)) as 年薪 order by 年薪 decs;

案例5:按姓名的长度显示员工的姓名和工资(按函数排序)

select length(last_name) 字节长度,last_name,salary from employees order by length(last_name)desc;

案例6:查询员工信息,要求先按工资排序,再按员工编号排序(按多个字段排序)

select  * from employees order by salary acs,employee_id desc;

案例7:查询员工的姓名和部门号和年薪,按年薪降序 按姓名升序

select last_name,department_id,salary*12*(1+ifnull(commission,0)) as 年薪 from employees order by 年薪desc,last_name asc;

案例8:选择工资不在8000到17000的员工的姓名和工资,按工资降序

select last_name,salary from employees where not between 8000 and 17000,order by salary desc;

案例9:查询邮箱中包含e的员工信息,并先按邮箱的字节数降序,再按部门号升序

select * ,length(email) 字节数 from employees where email like '%e%',order by 字节数 desc,deparment_id asc;

**

4、常见函数

**

概念:类似于java的方法,将一组逻辑语句封装在方法体中,对外暴露方法名。
好处:1、隐藏了实现细节,2、提高代码的重用性

语法:
select 函数名(实参列表)from 表
特点:
1、叫什么(函数名)
2、干什么(函数功能)

分类:
1、单行函数
如 concat、length,ifnull等
2、分组函数
功能:做统计使用,又称为统计函数,聚合函数,组函数

常见函数:
1、字符函数:
length: 获取参数值的字节个数
concat: 拼接字符串
substr: 截取字段
instr: 返回子串第一次出现的索引,如果找不到返回0
trim: 消除前后空格,前后指定删除的字符
upper: 将所选字符全部变为大写
lower: 将所选字符全部变为小写
lpad:用指定的字符实现左填充指定长度
rpad:用指定的字符实现右填充指定长度
replace:替换字符串

2、 数学函数:
round: 四舍五入
ceil: 向上取整,返回>=该参数的最小整数
floor: 向下取整,返回<=该参数的最大整数
truncate:截断
mod:取余

3、日期函数:
now: 返回当前系统日期+时间
curdate: 返回当前系统日期
curtime: 返回当前系统时间
year:年
month:月
monthname:英语月
day:日
hour:小时
minute:分钟
second:秒
str_to_date: 将日期格式的字符转换成指定格式的日期。
date_format: 将日期转换成字符

4、其他函数:
version:查看当前版本号
database:查看当前数据库
user:查看当前用户

5、控制函数:
if:
case when then end

一、字符函数

# length 获取参数值的字节个数

select length(‘john’);  4
select length(‘张三丰hahaha’) 15,中文代表3个字符

# concat 拼接字符串

select concat(last_name,’_’,first_name) 姓名 from employees;

# upper,lower

select upper('john'); 将所选字符全部变为大写
select lower('jhon');将所选字符全部变为小写

案例:将姓变大写,名变小写,然后拼接

select concat(upper(last_name),lower(first_name)) from employees;

# substr、substring截取字段
注意:索引从1开始

#截取从指定索引处后面所有字符**

select substr('你好小明啊',3) out_put; 显示:小明啊

# 截取从指定索引处指定字符长度的字符

select substr('你好小明啊',3,2) out_put; 显示:小明

案例:姓名中首字符大写,其他字符小写然后用_拼接,显示出来

select concat(upper(substr(last_name,1,1)), ’_’,lower(substr(last_name,2)) ,lower(first_name))) out_put from employees;

# instr 返回子串第一次出现的索引,如果找不到返回0

select instr('杨不悔爱上了殷六侠','殷六侠') as out_put; 显示:7

# trim 消除前后空格,前后指定删除的字符

select length(trim('     小明    '))as out_put;  显示:小明
select trim('a' from 'aaa小a明aaa')as out_put;    显示:小a明

# lpad 用指定的字符实现左填充指定长度

select lpad('王小二',5,'*')as out_put; 显示:**王小二
select lpad('王小二',2,'*')as out_put; 显示:王小

# rpad 用指定的字符实现右填充指定长度

select rpad('王小二',5,'*')as out_put; 显示:王小二**
select lpad('王小二',2,'*')as out_put; 显示:小二

# replace 替换

select replace('小明喜欢小红小红','小红','晓敏');  显示:小明喜欢小敏小敏

二、数学函数

# round 四舍五入

select round(1.53); 显示:2
select round(-1.53); 显示:-2

# ceil 向上取整,返回>=该参数的最小整数

select ceil(1.02);显示:2
select ceil(-1.02);显示:-1

# floor 向下取整,返回<=该参数的最大整数

select floor(9.5);显示:9
select floor(-9.5);显示:-10

# truncate 截断

select truncate(1.65,1);显示:1.6

# mod取余

select mod(10,3);显示:1
select mod(10,-3);显示:1
select mod(-10,-3);显示:-1
select 10%3;显示:1

三、日期函数

# now 返回当前系统日期+时间

select now(); 显示:2019-09-11 15:13:12

# curdate 返回当前系统日期,不包含时间

select curdate();显示:2019-09-11

# curtime返回当前系统时间

select curtime(); 显示:15:13:12

# 可以获取指定的部分,年、月、日、小时、分钟、秒

select year(now()) 年; 显示:2019select month(now())月; 显示:9select day(now()) 日;  显示:11select hour(now())小时;显示 15select minute(now()) 分钟;显示:13select second(now())秒;显示 12

# str_to_date 将日期格式的字符转换成指定格式的日期
str_to_date(‘9-13-1999’,’%m-%d-%Y’) 1999-09-13

案例:查询入职日期为1992-4-3的员工信息

select * from employees where hirdate=str_to_date('4-3-1992','%c-%d-%Y');

# date_format:将日期转换成字符
date_format(‘2018/6/6’,’%Y年%m月%d日’); 2018年06月06日

案例:查询有奖金的员工名和入职日期(xx月/xx日 xx年)

select last_name,date_format('hiredate','%m月/%d日 %y年')  from employees where commission is not null;

# date_format:将日期转换成字符
date_format(‘2018/6/6’,’%Y年%m月%d日’); 2018年06月06日

案例:查询有奖金的员工名和入职日期(xx月/xx日 xx年)

select last_name,date_format('hiredate','%m月/%d日 %y年')  from employees where commission is not null;

# 总结
1. 格式符:%Y 四位的年份 1998
2. 格式符:%y 两位的年份 98
3. 格式符:%m 两位的月份 01 格式符:%c 一位的月份 1
4. 格式符:%d 两位的日 01 格式符:%H 小时(24小时制) 18
5. 格式符:%h 小时(12小时制)
6. 格式符:%i 两位的分钟 18
7. 格式符:%s 两位的秒 08

四、其他函数

select version();查看当前系统版本号
select database();查看当前数据库
select user();查看当前用户

五、流程控制函数

# if函数:if else 的效果

select if(10<5,'大','小'); 显示小

案例:判断员工是否有奖金,有奖金为有,无奖金为无的姓名

select last_name,commission_pct,if(commission_pct is null,'无','有') as '备注'from employees;

# case 函数的使用一:switch case的结果
Java中:
switch(变量或表达式){
case 常量1:语句1;break;

default:语句n;break;
}

Mysql中:
case 要判断的字段或表达式
when 常量1 then 要表示的值1或语句1;
when 常量2 then 要表示的值2或语句2;
end

案例:查询员工的工资,要求
部门号=30,显示的工资为1.1倍
部门号=40,显示的工资为1.2倍
部门号=50,显示的工资为1.3倍
其他部门号,显示的工资为原工资

select salary,department_id,case department_id
when 30 then salary*1.1
when 40 then salary*1.2
when 50 then salary*1.3
else salary end as 新工资
from employees;

# case函数的使用二:类似于多重if
Java中:
If(条件1){
语句1:
}else if(条件2){
语句;
}

else{
语句n;
}

Mysql中:
case when 条件1 then 要显示的值1或语句1;
case when 条件2 then 要显示的值1或语句2;
else 要显示的值n或语句n
end

案例:查询员工的工资的情况
如果工资>20000,显示A级别
如果工资>15000,显示B级别
如果工资>10000,显示C级别
否则,显示D级别

select salary,last_name
case when salary>20000 then 'A级别'
when salary>15000 then 'B级别'
when salary>10000 then 'C级别'
else ‘D级别’ end as '级别'
from employees;

# 练习
案例:显示系统时间(注:日期加时间)

select now();

案例1:查询员工号,姓名,工资,以及工资提高百分之20后的结果(new salary)

select employee_id,last_name,salary,salary*(1+20%) as 'new salary' from employees;

案例2:将员工的姓名按首字母排序,并写出姓名的长度(length)

select last_name,length(last_name) as length from employees order by substr(last_name,1,1) asc;

**

MYSQL_DQL语言的学习(1)相关推荐

  1. c语言 字母 八进制表示'/1011',C语言C语言第一课:C语言概述为什么学习C语言怎样学习C语言.DOC...

    [摘要]C语言 第一课: C语言概述 为什么学习C语言 怎样学习C语言 参考资料 ----------------------------------------------------------- ...

  2. R语言可视化学习笔记之相关矩阵可视化包ggcorrplot

    本文转载自"R语言中文社区",己获授权. 作者简介Introduction taoyan:伪码农,R语言爱好者,爱开源. 个人博客: https://ytlogos.github. ...

  3. c语言struct_学习了C语言之后还是感觉不会编程,应该怎么办?其实你想错了!...

    其实对于程序而言,C语言抑或着C++.Java等其他程序语言只是用于表达你的想法的一个工具.就像让我们以建筑为例,画图是一个基本功,但是画什么才是核心所在.那么,今天我们以一个设计一个RPG(角色扮演 ...

  4. 不会c语言能学习python_为什么很多人学不会C语言?学霸说:你要是像我一样学肯定能行!...

    为什么很多人学不会C语言?C语言作为一门入门级语言,是大多数编程者的学习首选,它不是应该是一门容易上手的编程语言吗?而且大学都会有老师教的,为什么很多人学不好C语言呢?其实笔者认为学不好C语言的主要原 ...

  5. 计算机二级c在哪里学习,2017年计算机二级C语言考点学习

    2017年计算机二级C语言考点学习 学习是把知识能力思维方法等转化为你的私有产权的重要手段,是"公有转私"的重要途径.以下是百分网小编整理的2017年计算机二级C语言考点学习,欢迎 ...

  6. Python语言编程学习:文件路径变量修改,利用os模块固定文件父路径,变换文件子路径实现代码

    Python语言编程学习:文件路径变量修改,利用os模块固定文件父路径,变换文件子路径实现代码 目录 文件路径变量修改,利用os模块固定文件父路径,变换文件子路径实现代码

  7. Python语言编程学习:numpy中的array格式数据切片与pandas中的dataframe格式数据切片、相互转换

    Python语言编程学习:numpy中的array格式数据切片与pandas中的dataframe格式数据切片.相互转换 目录 numpy中的array格式数据切片与pandas中的dataframe ...

  8. C语言数据结构学习用单元测试

    药物名称: C语言数据结构学习用单元测试 主治: 本品是基于CUnit编写的.全部的.纯C的数据结构(ADT)各种实现的单元测试.主治基础不牢,水品增长缓慢.建议配合严蔚敏<数据结构>(C ...

  9. C语言再学习--关键字

    如需转载请注明出处:https://blog.csdn.net/qq_29350001/article/details/53021879 C语言一共有32个关键字,如下表所示: 关键字 说明 auto ...

  10. C语言再学习 -- 创建excel文件

    参看:C语言操作Excel表格 上一篇文章讲了一下 cJSON,可以生成json文件了.这篇文章讲一下怎么生成excel表xsl格式文件. 注意点: 1.文件类型为 xls 或者 xlsx 2.使用f ...

最新文章

  1. Uber做出艰难决定:关掉AI实验室,彭博社:Uber没有梦想
  2. 快评 美国软件开发杂志的最新jolt大奖!
  3. 每日一练:Python代码绘制航海王草帽路飞,打饭阿姨也能跟着学会的Turtle海龟绘图系列
  4. boost::hana::detail::type_foldr1用法的测试程序
  5. 删除重复数据sql语句
  6. html+字体图标找不到字体,bootstrap中不显示字体图标问题怎么解决?
  7. UML-基于GRASP对象设计步骤
  8. 单片机原理及应用pdf_单片机原理及应用课程设计
  9. lte和4g有什么区别
  10. 2022年计算机专业程序员笔记本电脑推荐
  11. 创建一个滚动的文本字幕。
  12. bim webgl 模型 轻量化_葛兰岱尔WebGL轻量化GIS+BIM融合引擎 大体量BIM模型LOD技术说明...
  13. NEFU 大一寒假训练六(二分查找)2020.01.05
  14. Quartus II 13.1与Modelsim SE的安装
  15. 网联兴,银联苦:一文看清支付清算市场新局面的矛盾和疑惑
  16. 2020年日历电子版(打印版)_2020年日历表(带农历)下载-2020年日历全年表Excel打印版下载 - 欧普软件园...
  17. js判断上传文件为图片格式、excel格式
  18. RFID工作频率的分类
  19. Python修改图片分辨率(附代码) | Python工具
  20. 将系统临时文件夹恢复到原来默认的目录

热门文章

  1. strtolower()和strtoupper()中文乱码问题
  2. 计算机机械硬盘寿命,有问有答:电脑的机械硬盘和固态硬盘哪个寿命更长?
  3. 对小学语文教学的几点心得体会
  4. 云有约 | 首攻RSA,天空卫士“秀肌肉”怎么样了?
  5. JAVA看云判断天气_如何看云识天气?
  6. apn(Access Point Name, 接入点名称)简介
  7. Linux用户与内核空间交互—procfs
  8. 服务器使用CDN加速的优劣势分析
  9. 如何逃出【 AI 换脸的世界】
  10. idea启动报错‘否则 JavaFX 应用程序类必须扩展javafx.application.Application’