mysql 外连接 insert_MySQL基本操作

MySQL的结构

一共分四层,分别是:

1. 连接层:主要是一些客户端和链接服务,包含本地sock通信和大多数基于客户端/服务端工具实现的类似于tcp/ip的通信. 主要完成一些类似于链接处理.授权认证.及相关的安全方案.

2. 服务层(可优化):第二层架构主要完成大的核心服务功能,如SQL缓存的查询,SQL的分析和优化和内置函数的执行.

3. 引擎层(可优化):它真正的负责了Mysql中数据的存储和提取,服务器通过API与存储引擎进行通信,不同的存储引擎具有的功能不同,这样我们可以根据自己的实际需要进行选取.

4. 存储层:它主要是将数据存储再运行于设备的文件系统之上,并完成于存储引擎的交互.

MySQL的常用数据库引擎

共有十多个,但常用的有两个: MyISAM和InnoDB

MyISAM:偏读,侧重点是性能

InnoDB:偏事务       下面这张图是两者的

两者的对比

5ab80769537e

两者的对比

MySQL的特点

1. MySQL把数据存储在表格中,使用标准的结构化查询语言-SQL访问数据库

2. MySQL是完全免费的,在网上可以任意下载,并且可以查看到它的源文件,进行必要的修改

3. MySQL服务器的功能齐全,运行速度很快,十分可靠,有很好的安全感

4. MySQL服务器在客户机,服务器嵌入系统中使用,是一个客户机/服务器系统,能够支持多线程,支持多个不同的客户程序和管理工具

MySQL的对象

表(table)  /  视图(view)  /  索引(index)  /  序列(squence)  /  存储函数(function)  /  存储过程(procedure)  /  触发器(trigger)

#{} 与 ${}的区别

在MyBatis中:

#{}:#{}使用的是,会有类型转换,比较安全,也是官网推荐使用的

${}:使用字符串拼接,会有sql注入,不安全,不推荐使用

MySQL对库表的操作

linux中进入到MySQL的安装目录下,  mysql -uroot -p   再输入密码  OK,已经进入

select database(): 查看当前使用的数据库      show databases:查看所有的数据库

use database_name:切换数据库        create database 数据库名:创建数据库

drop database database-name:删除数据库       show tables:查看数据库中所有的表

drop table table_name:删除表      create table 表名: 创建表

MySQL的增(insert)

insert into user values (NULL,'x','h');    //不能省略可空字段

inser into user values (NULL,'x','h'),(NULL,'x','h');    //多插入,逗号隔开

MySQL的删(delete)

delete from user where id=1;    记得价格过滤条件,不然会删除所有..

MySQL的改(update)

updata employees set 要更改的列

MySQL的查(select)

MySQL的查询大致可以分为5个部分: 基本的select语句 /过滤和排序数据 /多表查询 /单行函数 / 分组函数

基本的selcet语句:select id , name from employees

过滤和排序数据:select id , name from employees where id != 2    =(等于)  >(大于)  >=(大于/等于) 

select id from employees where id > 5 and id < 7    and为并且  为字符串的话,就是字典顺序来查询

select id from employees where id in (5,6,7)      ...

like为模糊查询: "%a%"  "_a%"    and为并且    in(集合)    \为转义字符or或者   not否

order by排序 数值型/字符型/日期型都可以排序,asc为升序,desc为降序,可以多级嵌套排序

select * from employees order by id asc;    //升序排序一定要写在where后面!!!

多表查询

多表查询,第一步,你得多各张表的字段及联系足够熟悉,本质就是一张表放不下这么多字段.把原本同一张表的字段放到其他的表里面,两张表之间一定又相同的唯一字段作为桥接,联系

select id , name from employees departments where  employees.'id' = departments.'id'    //就是from的时候写多张表就OK了,然后过滤条件,也就是连接的条件, 可以优化, 在select那里,直接写上每一个字段是来自哪里  如employees.name

等值连接和非等值连接: 前者就是上面演示的那种,两者的关系是相等的,后者就是在一个区间,通常用and来表示

自连接和非自连接: 前者连接的是本身的这张表,比如查自己的上司是谁,后者连接的是其他的表

内链接和外连接:前者是只查询两者相匹配的行,比如之上的例子就是查询相等的

外连接:使用join和on,意思就是除了两表中向同的数据外,还把左表中或右表中的数据也查询出来,于是就有了左外连接,右外连接.,不支持满连接. 使用的outer join和on函数

select e.id,d.name from emp e left outer join dep d on e.'id' = d.'id';   这是左外连接,因为是left outer join on ,改成右外连接就是right outer join on

单行函数

单行函数就是一个个的函数,具体的函数有:  concat("11","22")  //它将两个字符串连接起来    sunstr("hello",1,2) //截取1到2的字符串,得到he    length("111111") //得到这个字符串的长度   instr("hello","e") //返回这个字符的索引   trim("h" from "hello") //返回除去h之外的所有字符串     replace("abcd","b","m") 将字符串中的b转换成m,再输出字符串

分组函数

avg(salary) //表示平均        sum(salary) //表示总共         max(salary) //最高的       min(salary) //最低的   count(salary) //计数

子查询

子查询的本质就是查询的嵌套,可以嵌套很多层,也是属于查询也因为子查询而变得千变万化

MySQL的运行顺序

运行顺序基本如下:

1. from     2. on     3. join     4. where     5. group by

6. avg,sum     7. select     8. distinct     9. order by     10. limit

MySQL中的join查询

5ab80769537e

上图中分别是: 左外链接,右外链接,内连接

1. 左外连接: select * from tablea a left join table b on a.key = b.key

2. 右外连接: select * from tablea a right join table b on a.key = b.key

3. 内连接: select * from tablea a inner join tableb b on a.key = b.key

5ab80769537e

上图中分别是: 左链接,右链接,全连接,外连接

左连接: select * from tablea a left join tableb b on a.key = b.key where b.key is null

右连接: select * from tablea a right join tableb b on a.key = b.key where a.key is  null

全链接:

select * from tablea a left join tableb b on a.key = b.key union select

* from tablea a right join tableb b on a.key = b.key

外连接: select * from tablea a full outeb join tableb b on a.key = b.key where a.key is null or b.key is nul

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值