数据库

一、数据库概念

DB:数据库 即存储数据的仓库

DBMS:数据库管理系统

SQL:结构化查询语言

DBMS通过执行SQL,进而对数据库DB内部的数据进行增删查改的操作

表(table)是数据库的基本组成单元,所有的数据都以表格的形式组织,目的是可读性强。

一个表包括行和列:
        行:被称为数据/记录(data)
        列:被称为字段(column)

二、SQL语言的分类

DQL(数据查询语言): 查询语句,凡是select语句都是DQL。

DML(数据操作语言):insert delete update,对表当中的数据进行增删改。

DDL(数据定义语言):create drop alter,对表结构的增删改。

TCL(事务控制语言):commit提交事务,rollback回滚事务。(TCL中的T是Transaction)

DCL(数据控制语言): grant授权、revoke撤销权限等。

三、MySQL常用命令

1、查看当前的所有数据库   show databases

2、打开指定的数据库   use database  数据库名

3、查看当前库的所有表     show tables

4、查看其他数据库的表     show tables from 数据库名

5、初始化数据(用于执行sql脚本)    source sql脚本路径(绝对路径)

6、查看表结构   desc 表名

四、DQL

1、简单的查询语句

select [distinct] 字段名1,字段名2,字段名3,.... from 表名;

distinct可以实现对查询到的数据进行去重的功能,例如查询一张员工表中员工的所有部门编号时,可以将重复的部门编号去重

2、条件查询

select 字段,字段...  from  表名  where 条件;

重点:执行顺序:先from表,后where判断条件,最后select查找显示数据

大部分的比较运算符和Java中一致,但是  !=  可以用 <> 来代替,如果判断的是一个范围的值时使用 Between ...  And ,若是判断是否为空时 使用  is null ,不为空则为 is not null

SQL中的其它运算符  

IN:判断值是否等于列表中的一个,下面的语句就是查询工作是'SALESMAN', 'MANAGER'的数据;【可以看出IN相当于or(或)】如果希望查找部是这些值的数据,只需要加not(is not in)

select 字段1,字段2 from 表 where job in('SALESMAN', 'MANAGER');

like:模糊查询,常用于查找名字中含有什么字母的查询

找出名字当中含有O的
select ename from emp where ename like '%O%';
找出名字中第二个字母是A的?
select ename from emp where ename like '_A%';
找出名字中有下划线的?
select name from t_user where name like '%\_%';    # \用来转义

3、排序(order by)

select 字段1,字段2 from 表 order by 字段;

注意:默认是升序排列,如果要指定排序方式,可在order by 字段  后面加上 ASC或DESC

order by是最后执行的,即select查询到数据后order by 会对数据进行排序

4、分组函数(又名多行处理函数)

分组函数有5个:count()  计数 ; sum()  求和; avg() 平均数; max()  最大数;  min()  最小数

特点:输入多行,最终输出结果只有一行

常用的单行函数: (处理一行,返回一行)

1)字符函数: length()  获取参数的字符个数;  concat()  拼接字符串;  substr() 截取字符串;  trim()  去掉前后字符,参数可以指定截取的字符

group by : 按照某个字段或者某些字段进行分组。

having : having是对分组之后的数据进行再次过滤。

select		5
..			
from		1
..
where		2
..
group by	3
..
having		4
..
order by	6
..

加了分组函数后的执行顺序,即先确定表,然后判断条件,根据所给的字段进行分组,在进行附加条件的判断,查找到数据,对数据进行排序

注意:分组函数一般都会和group by联合使用,这也是为什么它被称为分组函数的原因。并且任何一个分组函数(count sum avg max min)都是在group by语句执行结束之后才会执行的。当一条sql语句没有group by的话,整张表的数据会自成一组。

五、连接查询

1、什么使连接查询,因为我们实际开发过程中,操作的表一般不是一张,而是多张表的联查而得到我们需要的最终结果

1)多张表的查询原理是先拿到一张表的,该表的每一条数据去和令一张表的每一条数据进行匹配,在没有条件的情况下会出现笛卡尔积现象(通过添加条件可以避免笛卡尔积现象)

2)使用连接查询时一定要使用别名,这样可以提高执行效率,使可读性提高。 [因为在没有去别名的情况下,会拿着字段名去每一张表进行查询,(因为每张表可能有相同的字段名)]

2、连接查询的种类有:内连接(等值连接和、等值连接、自连接)、外连接(左外连接、右外连接、全连接)

1)内连接之等值连接

# 查询员工名和其部门名
select 
		e.ename,d.dname
	from
		emp e
	join
		dept d
	on
		e.deptno = d.deptno;

2)内连接之非等值连接

# 查询员工的薪资和薪资等级
select 
	e.ename,e.sal,s.grade
from
	emp e
join
	salgrade s
on
	e.sal between s.losal and s.hisal;

// inner可以省略

3)自连接

自连接就体现了其别名的必要性,因为自连接的两张表都是同一张表,起别名可以起到区分的作用

4)外连接之左外连接

外连接的两张表会有主表和副表之分,主表的内容会全部显示,附表中没有匹配数据的位置为用NULL代替

左外连接和右外连接是一样的,写出了左外连接的sql语句就会有对应的右外连接的sql语句

5)全外连接(很少用)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值