mysql基础学习系列一

Mysql数据库

数据库优点:

  1. 可持久化数据
  2. 可存储大量数据
  3. 方便检索
  4. 数据一致性、完整性
  5. 安全性、可共享性
  6. 可通过组合查询产生新的数据

常见数据库产品

  1. orcal | 甲骨文 流行度低、服务收费
  2. DB2 | IBM 兼容性不如mysql
  3. sqlsever | 版本只支持windows系统
  4. Mysql | 甲骨文

数据库相关概念
DB:
数据库:保存一系列有组织的数据

DBMS:

数据库管理系统:是我们常说的数据库,数据库通过DBMS创建和操作的容器

SQL:

结构化查询语言,对数据库进行进行操作的语句

数据库存储数据的特点

1、数据存放在表中,表存放在库中
2、一个数据库中可以有多张表,每个表都有自己的名字,表名是具有唯一性的
3、表是由列组成的,每个表中都有相应的表头也就是字段,字段都有相应的类型

mysql数据库

mysql是开源的关系型数据库是c/s结构

mysql优点

1、成本低
2、性能高

mysql常见命令

1、查看当前所在库
select database();
2、查看表结构
desc 表名
3、查看mysql版本
方式一:
进入到mysql客户端
select version();
方式二:
没有进入到mysql客户端(cmd中)
mysql -v
4、查看所有数据库
show databases;
5、查看当前库中所有表
show tables;
6、从当前库中查看其它库中的所有表
select tables from 数据库名称
7.创建表
create table 表名(
	列名 类型
);

mysql语法规范

1.在mysql中不区分大小写,但建议关键字(SHOW、SELECT等)大写、表名、列名小写
2.每一条命令用分号结尾
3.每条命令根据需要可进行缩进或换行
4.注释
	单行注释:#注释文字
	单行注释:-- 注释文字
	多行注释:/*注释文字 */

sql语句分类

1.DQL语言:多用于查询
2.DML语言:增删改
3.DDL语言:数据库管理
4.TCL语言:事务控制

DQL语言学习

基础查询
条件查询
排序查询
常见函数
分组函数
分组查询
连接查询
子查询
分页查询
union联合查询

进阶1:基础查询

1、语法:select 查询列表 from 表名;
类似于java中的System.out.println();语句
注:
- 查询列表可以是字段名、常量值、表达式、函数
- 查询出来的结果是存储在一个虚拟的表格中,不是直接存储在硬盘中的俄,若需要存储到硬盘中可使用mysql可视化工具的导出功能

基础查询中经常使用到的语句

1、查询表中的单个字段:
select 字段名 from 表名;
例:查询员工表中所有人的姓
select last_name from employees;
2、查询表中的多个字段
select 字段1,字段2,字段3 from 表名;
注:查询多个字段时。字段之间用英文逗号隔开
3、查询表中所有数据即查询表中所有字段
select * from 表名;
4、查询常量值
在前面提到select关键字后的查询列表中可以是常量值
select 100;这种查出来的字段名和结果都为100
5、查询表达式
和查询常量值一样,我们可以使用select关键字结合表达式进行使用
例:select 100%98;这种查询出来的字段为表达式,结果为表达式计算后的结果
6、查询函数
在mysql中会有许多函数方便我们使用优化查询速度,例如:IFNULL();version();concat();
select version();这是查询当前mysql的版本。
7、起别名
在以后的数据库使用中我们会查询大量的数据,就会出现很多字段会让我们不易阅读,起别名就是将查询的数据中的字段名修改为我们容易理解的文字,但并不改变数据库中的原始数据
特点:
- 提高可读性
- 如果查询的数据中有重名的情况,使用别名可以区分开
方式一:
select last_name AS 名 from employees;
使用AS关键字

方式二:
select last_name 姓 from employee;
使用空格的方式
注意:如果别名中有特殊符号要用英文单引号引起来
例:select last_name as 'out p' from employees;

8、去重
在查询大量数据时会出现很多重复的数据,但我们不想要这么多数据只想要不重复的数据这是就可以用到'DISTINCT'关键字
例:查询员工表中涉及的部门编号;
select department_id from employees;
会出现以下数据

![](https://i.imgur.com/TTtJUCA.png)
使用DISTINCT关键字去重后的数据
select DISTINCT department_id from employees;
![](https://i.imgur.com/CDGEEGG.png)

9、+号作用
在java中加号的作用
- 做运算符使用,99+100;
- 连接符,将两个字符连接到一起
但在mysql中+号只有一种功能:运算符
select 100+90;
结果为90;当两个操作数都是数值型时做加法运算
select '123'+90
结果为213;当一方为字符型时,会将字符型装换为数值型进行加法运算,如果转换失败则将字符型数值转换为0;
select NULL+90;只要其中一方为null则结果都为null;

10、concat()函数;
concat()函数的作用是将两个字段连接成一个字段
语法:select CONCAT(字段1,字段2) from 表名;
案例:
查询员工姓和名连接成一个字段,并显示为姓名使用
select concat(last_name,first_name) AS 姓名 from employees;

11、IFNULL()函数
IFNULL()函数是判断字段内容是否为null,将为null的内容替换为其他内容
语法:IFNULL(需要判断的字段,为null时显示的内容);
案例:查询employees表中所有字段,各字段之间有逗号隔开,列头显示为out_put

SELECT
CONCAT(
employee_id,
',',
first_name,
',',
last_name,
',',
email,
',',
job_id,
',',
IFNULL( commission_pct, 0 ) 
) AS 'out_put' 
FROM
employees

结果如下:
![](https://i.imgur.com/yhl2WD3.png)

进阶2:条件查询

1、语法
	select 查询列表 from 表名 where 筛选条件
条件查询的读写顺序并不是我们的书写顺序,顺序是先执行from 表名然后执行where 筛选条件最后执行查询列表再产生结果

条件查询分类

一、按条件表达式筛选
条件表达式其实就是指的条件运算符,常用的条件运算符有一下几个:
>、<、>=、<=、=、!=、<>(也是不等于等价于!=)
案例:
查询工资大于12000的员工信息
select * from employee where salary>=12000;
查询部门编号不等于90的员工名和部门编号
select last_name,department_id from employee where
department_id != 90;
select last_name,department_id from employee where 
department_id <> 90;

二、按逻辑表达式筛选
逻辑表达式和条件表达式一样就是使用逻辑运算符,常用的逻辑运算符有:
&&、||、!
and or not
案例:
查询工资在10000到20000之间的员工名、工资以及奖金
select  last_name,salary,commission_pct from
employees where salary >= 10000 and salary <= 20000;
案例:
查询部门编号不是在90到110之间的或者工资高于15000的员工信息
select * from employees where department_id <> 90 and department_id <> 110 or salary >15000;

三、模糊查询
模糊查询的意思就是在筛选条件不明确的情况下根据关键词进行查询常使用的模糊查询命令有:
like、between and、in、is null、is not null

案例:
查询员工姓名中包含字符a的员工信息
select * from employees where last_name like '%a%';
特例:查询员工名中第三个字符为e,第五个字符为a的员工名和工资
注:在此查询中不能再使用“like”关键字进行查询,因为1、like关键字查询是对于数据进行一个大范围的查询,并不能定位到具体字符,此次查询我们需要用到通配符"_";
select last_name,salary from employees where last_name '__e_a';
但当我们想查的数据中遇到带有_的字符如果还是使用_就会使系统分辨不出从而导致查不出来数据,此时我们可以使用转义字符
案例:查询员工名中第二个字符为下划线的员工名
select last_name from employees where last_name '_\_%';同时我们也可以用ESCAPE定义转义字符
2、between and
特点:使用between and可提高语句简洁度等价于>= and <=同时使用
案例
查询员工编号在100到120之间的员工信息
select * from employees where employee_id between 100 and 120;
3、in 
作用:用于判断某字段的值是否属于in列表中的一项
可以提高语句的简洁度
案例:
查询员工的工种编号是IT_PROG、AD_VP、AD_pres中的一个员工名和工种编号
select last_name,job_id where job_id in(IT_PROG,AD_VP,AD_PRES);
4、is null、is not null
在mysql中查询某字段的数据为空时不能使用预算符=,只能使用is null
案例:
查询没有奖金的员工名和奖金率
select  last_name,commission_pct from  employees where commission_pct is null;

复习

案例1:
查询工资大于12000的员工姓名和工资
select concat(last_name,first_name) as 姓名,salary from employees;
案例2:
查询员工号为176的员工姓名和部门号和年薪
select concat(last_name,first_name) as 姓名, department_id,salary*12 from employees;
案例3:
查询工资不在5000到12000的员工姓名和工资
select concat(last_name,first_name) as 姓名,salary from employees where salary >=5000 and salary <=12000;
案例4:
查询在20号或者50号的部门工作的员工姓名和工资
select concat(last_name,first_name)	as 姓名,salary where department_id =50 or department_id =50;
案例5:
查询没有奖金且工资小于18000的员工姓名和工资
select concat(last_name,first_name) as 姓名,salary where commission_pct is null and salary < 18000;
案例6:
查询员工表中,job_id不为IT或者工资为12000的员工信息
select * from empolyees where job_id <>  'IT' or salary =-12000;
案例7:
查看部门表结构
desc departments;
案例7:
查询部门表中涉及到的位置编号
select distinct locatin_id from departments;
案例8:
select * from employess;与select * from where commission_pct like '%%' and last_name like '%%'
结果是否一样??
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值