MySQL基本操作

MySQL的结构

一共分四层,分别是:

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

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

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

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


MySQL的常用数据库引擎

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

MyISAM: 偏读,侧重点是性能

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

两者的对比

两者的对比

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查询

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

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

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

左连接: 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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,560评论 18 399
  • 什么是SQL数据库: SQL是Structured Query Language(结构化查询语言)的缩写。SQL是...
    西贝巴巴阅读 1,800评论 0 10
  • 一. Java基础部分.................................................
    wy_sure阅读 3,785评论 0 11
  • 《从你的全世界路过》上映后,我第一时间不是跑去电影院,而是拿起枕边的书,又准备被虐一遍。 固执地喜欢纸页存在的真实...
    木子鱼儿阅读 823评论 5 2
  • 嘿,你还在担忧未来吗?我只想告诉你,未来一切都好。你所担忧的,大部分都没有发生。活在未来,反而给自己带来了不少的烦...
    豆藏阅读 342评论 2 0