vlambda博客
学习文章列表

带你走进数据库的大门mysql


数据库的相关概念,什么是数据库?

一、数据库的好处

1.可以持久化数据到本地

2.结构化查询


Mysql介绍

一、mysql的背景

前身属于瑞典的一家公司,mysql,AB


二、mysql的优点

1.开源,免费,成本低

2、性能高,移植性也好

3、体积小,便于安装


三、mysql的安装

属于c/s框架软件,一般来讲安装服务端


四、mysql服务的启动和停止

方式一:通过命令行 net start 服务名

net stop 服务名

方式二:计算机--右击--管理--服务


五、mysql服务的登录和退出

登录:mysql【-h 主机名 -p端口号】 -u 用户名 -p密码


退出 exit 或者crrl+c

二、数据库的常见概念

2.DB:数据库,存数据的容器

3.DBMS:数据库管理系统,又称为数据库软件或数据库产品,用于创建或管理DB

3.SQL:结构化查询语言,用于和数据库通信的语言,不是某个数据库软件特有的,而是几乎所有的主流数据库软件       语言


三、数据库的存储特点

1.数据存放到列表中,然后列表再放入库中

2.一个库可以有多张表,每张表具有唯一的表名来标识自己

3.表中有一个或多个列,列又称为“字段”,相当于Java中“属性”

4.表中的每一行数据就相当于Java中的对象


四、常见的数据库管理系统

mysql oracle  db2 aqsserver 

#------------------------ 进阶1 :基础查询 ---------------------

#打开库

USE employees;


#1.查询表中的一个字段

SELECT first_name FROM employees;


#2.查询表中的多个字段

SELECT first_name,last_name FROM employees;


#3.查询表中全部字段

SELECT*FROM employees;


#4.查询常量值

SELECT 100;

SELECT 'john';


#5.查询表达式

SELECT 100*10;


#6.查询函数

#mysql 版本

SELECT VERSION();


#7.起别名

/*

  ①便于理解

  ②如果要查询有重名的情况

*/

#方式一

SELECT 100%98 AS 结果;

SELECT last_name AS 名,first_name AS 姓 FROM employees;

#方式二

SELECT last_name 姓,first_name 名 FROM employees;

# 案例:查询salary,显示结果为 out put

SELECT salary AS "out put" FROM employees;   #注意:有关键词的别名要用双引号引起来


#8. 去重

#案例:查询员工表中涉及到的所有部门编号 关键字:distinct

SELECT DISTINCT department_id FROM employees;


#9. +的作用

/*

java 中的加号:

1 运算符,只要在两个操作数都为数值型

2 连接符,只要有一个操作数为字符串

mysql 中加号+:

仅仅只有一个功能:运算符

① 两个操作数都为数值型,则做加法运算

② 其中一方为字符型,试图将字符数值转换成数值型

  如果转换成功,则继续加法运算,

select ‘John’+90; 如果转换失败,则将字符型数值转换为0

select null+0;   如果一方为null,则结果为null


*/

补充:concat连接字符

#案例:查询员工的姓和名 连接成一个字段 并显示为姓名

SELECT CONCAT(last_name,first_name) AS 姓名 FROM employees;


#10.显示表的结构

DESC employees;


11.ifnull 函数

功能:判断某字段或表达式是否为null,如果为null,返回指定的值,否则返回原本的值

select ifnull(commission_pct,0) from employees


12 isnull 函数 

判断某字符串或表达式是否为null,

返回值为1(真),和0(假)。

#------------------------ 进阶2 :条件查询 ---------------------


/*


语法:

select 查询列表 from 表名 where 筛选条件;

执行顺序:表名-》筛选条件-》查询列表;

分类:

一、按条件表达式筛选

条件运算符:> < = != <>(不等于) >= <=

二、按逻辑运算符筛选

逻辑运算符:&&   ||    !

     and  or   not

三、模糊查询

like

between and

in 

is null

*/


#1.an条件表达式查询

#案例一:查询工资> 12000的员工信息

SELECT * FROM employees WHERE salary>12000;

#案例二:查询部门编号不等于90号的员工名和部门编号

SELECT first_name,department_id

FROM employees

WHERE department_id != 90;


#2.按按逻辑运算符筛选

#案例一:查询工资在一万到两万之间的 员工名 工资 以及奖金

SELECT first_name,salary,commission_pct

FROM employees

WHERE salary>=10000 AND salary<=20000;

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

SELECT first_name 

FROM employees

WHERE department_id<90 OR department_id>90 OR salary>15000;


#3. 模糊查询

/*

  特点:

  ① 与通配符搭配之用:%任意多个字符,包含0个字符

      _任意单个字符      

  like 

  between and

使用between and 可以调提高语句的简洁度

包含临界值

两个临界值不可以掉换位置

  in 

使用in 提高语句简洁度

in列表的值类型必须一致或者兼容

  is null

= 或 <> 不能判断null值

is null 或 is not null 可以判断 null 值

*/

#案例一:查询员工名中包含字符a的员工信息

SELECT *

FROM employees

WHERE last_name LIKE '%a%';

#案例二:查询员工名中第三个字符为e的第五个字符为a的员工名

SELECT last_name

FROM employees

WHERE last_name LIKE '__n_a';

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

SELECT last_name

FROM employees

/**

\为默认的转义字符

WHERE last_name LIKE '_\_%';  

*/

#我们也可以自己设置转义字符

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 BETWEEN 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_PRES';

#-------------------------------------------------------------------

SELECT last_name,job_id

FROM employees

WHERE job_id IN('IT_PROG','AD_VP','AD_PRES');


#安全等于 <=> 

#查询工资为12000的员工

SELECT last_name,salary

FROM employees

WHERE salary <=> 12000;

#is null pk <=> 

/*

is null :紧紧可以判断null值,可读性较高

<=> :既可以判断null值又可以判断普通的数值

*/

#------------------------ 进阶3 :排序查询 ---------------------

/*

引入:

select * from employees;

语法: 

select  查询列表 

from  表

【where 筛选条件】

order by 排序类表 【asc升序 或者 desc降序,默认是升序】

一般放在查询语句的的后面,limit子句除外

*/

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

SELECT * FROM employees ORDER BY salary DESC;

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

SELECT * FROM employees WHERE department_id>=90 ORDER BY hiredate ASC;

#案例三:按年薪的高低显示员工的信息和年薪【按表达式(别名)排序】

SELECT *,salary*12*(1+IFNULL(commission_pct,0)) AS 年薪 FROM employees ORDER BY 年薪 ASC;

#案例四:按姓名的长度显示员工的姓名和工资【按函数(别名)排序】

SELECT LENGTH(last_name) AS 姓名长度,last_name,salary FROM employees ORDER BY 姓名长度 ASC;

#案例五:查员工信息,要求先按工资升序,再按员工编号降序【按多个字段排序】

SELECT * FROM employees ORDER BY salary ASC,employee_id DESC;



#练习一:查询员工的姓名和部门号和年薪,按年薪降序 按姓名升序

SELECT last_name,department_id,salary*12*(1+IFNULL(commission_pct,0)) AS 年薪

FROM employees

ORDER BY 年薪 DESC,last_name ASC;

#练习二:选择工资不在8000到17000的员工姓名和工资,按工资降序

SELECT last_name,salary FROM employees

WHERE NOT(salary>=8000 AND salary<=17000)

ORDER BY salary DESC;

练习三:查询邮箱中包含e的员工信息,并先按邮箱的字节降序,再按部门号升序

SELECT * FROM employees WHERE email LIKE '%e%' ORDER BY LENGTH(email) DESC,

department_id ASC;


电耗子科技
电耗子科技,分享各类手机技巧,web前端知识,共同成长。更多有趣资料,记得关注!
2篇原创内容
Official Account