查询表中的单个字段:
select last_name form employee;
查询表中多个字段
select last_name,salary,email from employee;
查询表中的所有字段:
select * from employee;
查询常量值:
select 100;
select ‘join’
查询表达式:
select 100%99
查询函数
select VERSION()
起别名
方式一:使用AS
select 100%99 as 结果
select lastname as 姓,firstname as 名 from employee
方式二:使用空格
select lastname 姓,firstname 名 from employee
去重:distinct
查询员工表中涉及到的所有的部门编号
select distinct department_id from employee;
加号的作用
查询员工名和姓连接成一个字段,并显示为姓名
select concat(firstname , lastname )AS 姓名 from employee;
显示表的结构:
DESC department;
如何处理null值:使用IFNULL函数,函数意思是如果为null值,就重新给它赋值,这里是赋值为0
select
IFNULL(commission_pct,0)AS 奖金率,commission_pct from employees;
进阶二
筛选条件分类:
一、按条件表达式筛选
条件运算符:> < = != >= <=
查询部门编号不等于90号的员工名和部门编号
select lastname,department_id from employees where department_id != 90
二、按逻辑表达式筛选
逻辑运算符:
&& || !
and or not (建议使用)
查询工资在10000到20000之间的员工名、工资以及奖金
select lastname,salary ,commission_pct from employees where salary >=10000 and salary <=20000
查询部门编号不是在90到110之间,或者工资高于15000的员工信息
select * from employees where department_id < 90 or department_id >110 or salary > 15000
三、模糊查询
like
between and
in
is null
like
① 一般和通配符搭配使用
% 任意多个字符,包含0个字符
_ 任意单个字符
查询员工名中包含字符A的员工信息
查询员工名中第二个字符为e,第五个字符为a的员工名和工资
select lastname,salary from employees where lastname like ‘e _ _a%’
between and: 包含临界值,两个临界值不要颠倒顺序
in :
含义:判断某字段的值是否属于in列表中的某一项
= != 均不能判断null值
使用 is null / is not null 判断
查询没有奖金的员工名和奖金率
select lastname,commission_pct from employees where commission_pct IS NULL;
一、数据库的好处?
1、可以持久化数据到本地
2、结构化查询
二、数据库的常见概念 ★
1、DB: 数据库,存储数据的容器
2、DBMS:数据库管理系统,又称为数据库软件或数据库产品,用于创建或管理DB
3、SQL:结构化查询语言,用于和数据库通信的语言,不是某个数据库软件特有的,而是几乎所有主流的数据库软件通用的语言
三、数据库存储数据的特点:
1、数据存放在表中,然后表放在库中
2、一个库可以有多张表,每张表具有唯一的表明用来表示自己
3、表中有一个或多个列,列又称为“字段”,相当于Java当中的属性
4、表中的每一行数据,相当于Java中的“对象”
四、常见的数据库管理系统
MySQL、Oracle、SQLserver
MySQL的背景:
MySQL 的优点
1、开源、免费
2、性能高、移植性好
3、体积小,便于安装
MySQL的安装:
属于C/S架构的软件,一般来讲安装服务器
企业版
社区版:我们安装的是这个
版本:5.5 、5.6、 5.7、8.0(没有5.8)
MySQL服务的启动和停止:
方式一:
net start 服务名
net stop 服务名
方式二: 计算机–右击–管理-- 服务
MySQL服务的登录和退出:
登录MySQL:本机:括号里的内容可以省略,-p后面不能加空格
进阶三:排序查询
语法:
select 查询列表
from 表
【where 筛选条件】
order by 排序列表 【asc | desc】
特点:
1、asc代表的是升序,desc代表的是降序
如果不写,默认是升序
查询员工信息,要求工资从高到低排序
select * from employees order by salary desc;
select * from employees order by salary ASC;
查询部门编号 >= 90的员工信息,按入职时间的先后进行排序
select * from employees
where departmnt_id >=90
order by hiredate asc;
按年薪的高低显示员工的信息 和年薪【按表达式排序】
select ,salary12*(1+IFNULL(commission_pct,0) as 年薪 from employees order by salary12(1+IFNULL(commission_pct,0) desc
按年薪的高低显示员工的信息 和年薪【按别名排序】、
select ,salary12*(1+IFNULL(commission_pct,0) as 年薪 from employees order by 年薪 desc
按姓名的长度显示员工的姓名和工资【按函数排序】
select LENGTH(lastname) 姓名长度 ,lastname,salary
from employees
order by LENGTH(lastname);
查询员工信息,要求先按工资升序,再按员工编号降序【按多个字段排序】
select * from employees
order by salary ASC,employee_id DESC;
排序的总结:
order by 字句中可以支持单个字段、多个字段、表达式、函数、别名
select lastname,department_id,salary12(1+IFNULL(commission_pct,0)) 年薪
from employees
order by 年薪 desc,lastname asc
select lastname,salary
from employees
where salary not bettween 8000 and 17000
order by salary desc;
select *,LENGTH(email) 字节数 from employee
WHERE eamil like ‘%e%’
order by 字节数 desc,department_id ASC;
进阶四:常见的函数
功能:类似于Java的方法,将一组逻辑语句封装在方法体中,对外暴露方法名
调用: select 函数名()
分类:
1、单行函数
如:concat 、 length 、 ifnull 等
一、字符函数
length :获取参数值的字节个数
select LENGTH(‘王五aaa’)
在MySQL字符集里面使用utf-8,它的英文字母占一个字节,汉字就是占3个字节
concat 拼接字符串
select CONCAT(‘lastname’,’_’,‘firstname’) from employees
upper 、 lower
select upper(‘sjaosj’);
select lower(‘ASDSDF’);
示例:将姓大写,名小写,然后中间以‘_’ 拼接
select concat(upper(lastname), ‘_’ ,lower(firstname) ) from employees;
substr、substring
注意:索引从 1 开始
select substr(‘我是你的爸爸’,5) out_put;
select substr(‘我是你的爸爸’,1,3) out_put;
案例:姓名中首字符大写,其他字符小写然后用_拼接,显示出来
select concatupper(substr(lastname,1,1)),lower(substr(lastname,2)))from employees;
instr 返回子串第一次出现的索引,如果找不到返回 0
trim
lpad : 用指定的字符实现左填充指定长度
rpad : 用指定的字符实现右填充指定长度
replace
2、分组函数
做统计使用的
round 四舍五入
select round(1.45)
日期函数