mysql总结

mysql命令行:

如何使用命令行:配置mysql的环境变量path指向mysql的安装目录下的bin文件夹,
然后在cmd中直接可以调用mysql

mysql -h localhost -u(usernemw) root -p(password) root.
-h 可以不写,默认localhost

show databases; --显示所有的数据库。
drop database php--删除数据库。

create database php;--创建一个数据库。
use php;--选择这个数据库。
show tables ;--显示选中的数据库中的数据表。
rename table oldname to newname;--修改表名,数据库的名字不能修改
drop table tablename.--删除表

desc tablename;--查看表的结构,描述信息等,相当于设计表时候的样子。
\c 当输入错误时,输入\c表示退出当前的编辑行,重新输入

set names gbk;--设置编码。

where 常用的运算符;

比较运算符

!= 或者<>

in 在某个集合内,

between and在某个范围内。

逻辑运算符;

or或者& 逻辑或

and或者&& 逻辑与

not 或者! 逻辑非

模糊查询

like

两个通配符:

% --匹配任意字符;
_ --下划线,匹配一个字符;

group by 分组查询 ,用于配合聚合函数来使用,where 是条件查询,两者本质不同

注意:
在select 后面的字段如果没有用聚合函数来包括,则必须出现在group by 后面;

可以将列的字段名可以当作变量来使用,也就是可以将列名进行加减乘除的运算

having 子句与where子句的区别:

where作用于查询结果集出现之前,而having作用于结果集出现之后,所以才称having是对结果集的筛选,

order by子句 按一个或着两个子句对结果进行排序

desc 降序排列,asc 升序排列

示例:查询两门或者两门以上不及格同学的平均分:
select stu_id ,sum(score<60)as gk,avg(score) from student group by stu_id having gk>=2

limit 在语句后面 限制条目的作用,,用于分页之用。

limit [offset][num]

offset 偏移量,
num 取出的条目。

分页查询时,通常offset的取值为(page-1)*num page 为当前的页数
num 即为num

三种子查询:

where子查询:将内层的查询结果作为外层查询的比较条件

from子查询:将内层查询的结果作为临时表,供外层再次进行sql查询。

exsits子查询;将外层的查询结果,拿到内层,看内层的查询是否成立

多表查询:

不写join left 或者join right 相当于inner join 即取交集。

内连接是相对于外连接来说的
内连接和等值连接效果是相同的

1、等值连接中不要求相等属性值的属性名相同,而自然连接要求相等属性值的属性名必须相同,即两关系只有在同名属性才能进行自然连接。
如上例R中的C列和S中的D列可进行等值连接,但因为属性名不同,不能进行自然连接。
2、等值连接不将重复属性去掉,而自然连接去掉重复属性,也可以说,自然连接是去掉重复列的等值连接。
数据库内连接、左连接、右连接

1.内连接我们通常用的连接,表表连接只显示交集数据

2.外连接分左外连接 table1 left outer join on table2

和右外连接table1 right outer join on table2 和全连接

table1 full outer join on table2

2.1左外连接就是在等值连接的基础上加上主表中的未匹配数据
2.2右外连接是在等值连接的基础上加上被连接表的不匹配数据
2.3全外连接是在等值连接的基础上将左表和右表的未匹配数据都加上.

内连接:把两个表中数据对应的数据查出来
外连接:以某个表为基础把对应数据查出来(全连接是以多个表为基础)

student表
no name
1 a
2 b
3 c
4 d

grade表
no grade
1 90
2 98
3 95

内连接 inner join(查找条件中对应的数据,no4没有数据不列出来)
语法:select * from student inner join grade on student.no = grade.no
结果
student.no name grade.no grade
1 a 1 90
2 b 2 98
3 c 3 95

左连接(左表中所有数据,右表中对应数据)
语法:select * from student left join grade on student.no = grade.no
结果:
student.no name grade.no grade
1 a 1 90
2 b 2 98
3 c 3 95
4 d

右连接(右表中所有数据,左表中对应数据)
语法:select * from student right join grade on student.no = grade.no
结果:
student.no name grade.no grade
1 a 1 90
2 b 2 98
3 c 3 95

全连接
语法:select * from student full join grade on student.no = grade.no
结果:
no name grade
1 a 90
2 b 98
3 c 95
4 d
1 a 90
2 b 98
3 c 95

视图的概念:view

视图是由查询结果形成的一张虚拟表,

创建视图:
create view 试图名 as select 语句

为什么要建立视图??
1、简化查询。如果有一个复杂的查询,则可以直接操作view。
2、大数据分表的时候使用,

大数据如何分表?
当一个标的行数大于200万时,可以把一张表分为4张表来存储,
news表,分为news1 news2 news3 news4 四张表,

怎么分??
通过id取模来分id%4+1=[1、2、3、4] id落在1234这个范围内,
假如取到的id为17,则17%4+1=2 则从news2中进行查询

触发器的概念:

监视某种状态并触发某种操作。
监视某表的变化,当发生某种变化的时候就触发某种操作。

使用场景:
完成下单与减少库存的逻辑,
两个操作联系紧密,所以会用到触发器的概念。

能监视: 增删改

能触发: 增删改

监视对象:table 监视事件: 增删改 触发事件: 增删改 触发时间: before/after.

触发器的四要素:

监事事件:
insert/update/delete
监视时间:
before/after
监视对象:
table
触发事件:
begin
sql语句;
end;

create trigger triggername
before/after insert/update/delete on table
for each row #这句在mysql中是写死的,oracle中可能跟这个不同,
begin
sql语句;
end;

删除触发器?

drop trigger triggername;

如何在触发器中引用行的值

对于insert而言,新增的行用new来表示。
行中的列用new.列名来表示

对于delete而言,删除的行用old来表示。
行中的列用old.列名来表示。

对于update而言,
修改前的数据用old来表示,old.列名来引用被修改之前行中的值。
修改后的数据用new来表示,new.列名来引用被修改之后行中的值。

什么叫存储引擎??

数据库对于同样的数据有着不同的存储方式和管理方式,在mysql中叫做存储引擎

两种常见的存储引擎,myisam 和innoDB区别:

myisam innoDB

批量插入的速度 高 低

事物安全 不支持 支持

全文索引 支持 高版本的mysql是支持的

锁机制 表锁 行锁

什么是事物、??

通俗的说,

一组操作,要么全部执行成功,要么一个都不执行 --》原子性

在所有的操作没有执行完毕之前,其他的会话不能够看到中间改变的过程 --》隔离性

事物发生前 和发生后,数据的总额依然是匹配的 -->一致性

事物产生的影响是不能够撤销的 --》持久性

时间: 2024-10-08 10:04:09

mysql总结的相关文章

记一次MySQL找回用户数据

事情经过 有天,我们公司外区的一个销售C说他8月3号以前的工作流记录找不到了.问清缘由,原来是更新了微信号(我们公司的工作流是基于企业微信开发的).经过分析,微信号和流程数据并没什么关系,所以初步得出结论:本来只需要更新微信号的,结果我们公司的流程系统管理员把用户先删除,再创建了新的用户. 解决过程 1.首先想到的是直接从定时备份数据里面找回原来的用户ID,结果发现系统只备份了十天的记录,而工作流系统上显示销售C只有8月3号以后的流程记录,距今已经40多天,从自动备份的数据里已经无法恢复. 2.

centos7下使用yum安装mysql

CentOS7的yum源中默认好像是没有mysql的.为了解决这个问题,我们要先下载mysql的repo源. 1. 下载mysql的repo源 $ wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm 2. 安装mysql-community-release-el7-5.noarch.rpm包 $ sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm 安装这个

EF+mvc+mysql

这个真是一个大坑啊.TM折腾了一下午终于弄好了.赶紧记录下来分享给大家,免得有和我一样一直配置不成功的又折腾半天-.1.安装MySQL for Visual Studio这个直接在mysql官网下载并安装就好了.不过这个必须是vs2013 professional版本以上才可以!!2.安装MySQL Connector/Net这个可以可以通过NuGet工具获得,比较轻松愉快,当然你也可以自己下载,自己引用.3.配置web.config.首先是connectionStrings节点 1 <conn

Linux环境下MySQL数据库用SQL语句插入中文显示 “问号或者乱码 ” 问题解决!

问题: 在普通用户权限下执行 mysql -u root -p进入mysql数据库,中间步骤省略,插入数据:insert into 库名(属性)values('汉字'); 会出现如下提示:  Query OK, 1 row affected, 1 warning (0.00 sec)    表明出现错误,没有插入成功,然后执行select * from 表名   就会出现如下的问题:显示的表中出现乱码或者问号. 如图: 解决方案: 首先重新打开一个终端窗口(方便操作),进入root用户模式 执行

Centos6.5 zabbix3.2.6监控mysql

  一.     操作环境 我使用的linux系统是centos6.5,数据库是mysql5.6,apache2.4,php5,6 安装目录: /usr/local/apache /usr/local/php /usr/local/mysql /usr/local/zabbix Zabbix服务器插件安装 Zabbix3.2.6自带监控mysql模板监控项不全面,所以重新下载导入到zabbix里面 下载网址:. https://www.percona.com/downloads/percona-

MySQL数据库基础知识

day02 MySQL数据库基础知识 一.基础知识概述: 基础决定你这门课程的学习成败!只有学习好这些基础知识以后,你才能真正的运用自如.才能够对数据库有更深入的了解,道路才会越走越远. 二.基础知识: 1.数据库(database):数据库就好比是一个物理的文档柜,一个容器,把我们整理好的数据表等等归纳起来. 创建数据库命令:        create database 数据库名; 2.查看数据库         show databases; 3.打开指定的数据库         use 

MariaDB(MySQL)创建、删除、选择及数据类型使用详解

一.MariaDB简介(MySQL简介略过) MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品.在存储引擎方面,使用XtraDB(英语:XtraDB)来代替MySQL的InnoDB. MariaDB由MySQL的创始人Michael Widenius(英语:Michael Widenius)主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL A

Mac配置Mysql遇到的 --secure-file-priv问题

1.安装mysql 在官网上安装,一步步无障碍安装(但根据后来文件入法导入/导出的经验,最好在安装前设置secure-file-priv为empty,5.7.6之后似乎就默认为NULL,而secure-file-prive为NULL的话,就不支持文件导入/出) 2.安装navicat premimum 在网上找到一个破解版,按照破解步骤来安装,很好用 3.遇到的问题:在将选择的记录导出到.csv文件时,出现提示"The MySQL server is running with the --sec

MySQL(九)之数据表的查询详解(SELECT语法)二

上一篇讲了比较简单的单表查询以及MySQL的组函数,这一篇给大家分享一点比较难得知识了,关于多表查询,子查询,左连接,外连接等等.希望大家能都得到帮助! 在开始之前因为要多表查询,所以搭建好环境: 1)创建数据表suppliers 前面已经有一张表是book表,我们在建立一张suppliers(供应商)表和前面的book表对应. 也就是说 让book中s_id字段值指向suppliers的主键值,创建一个外键约束关系. 其实这里并没有达到真正的外键约束关系,只是模拟,让fruits中的s_id中

MySQL 警告WARN: Establishing SSL connection without server&#39;s identity verification is not recommended.解决办法

Success loading Mysql Driver!Mon Apr 04 15:43:00 CST 2016 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by d