mysql学习手册

MySQL的安装

–安装
linux下 yum 安装 mysql
命令:yum -y install mysql-server

–安装了却提示 mysqld:未找到命令
可能是因为没将mysql放入路径

解决bash: mysql: command not found 的方法

mysqld是mysql的守护进程,因此查询是查询这个

数据类型

–数据库常用数据类型
大致分成三种。数值,日期/时间,字符。
如何选择:日期按格式,数值和字符按大小。
MySQL数据类型

设计范式

三大设计范式
–第一范式(1NF)
字段为不可分割的原子值
越详细后期一些操作越方便,但具体看项目需求

–第二范式
满足第一范式的前提下,第二范式要求除主键外的每一列都必须完全依赖于主键
若是不完全依赖,只能发生在联合主键的情况下
若是不完全依赖,可以通过拆分表的方式使其满足完全依赖
(通俗理解:即其他字段可以通过完整的主键来唯一的确定自己的值,若是通过部分主键就能确定自己的值,那么就不满足2NF)

–第三范式
满足第二范式的前提下,除了主键列外的其他列不能有传递依赖关系。

范式主要是为了减少数据的 冗余

约束

–主键约束
能够唯一确定一张表中的一条记录,通过这个约束进行条件筛选可以选出一个唯一且不为空的数据字段。
创建方式——创建表时的在 数据属性后面加上primary key。
增删方式——alter table 表名 add/drop(增/删) primary key(属性名)。
修改方式——alter table 表名 modify(修改) 属性名 + 属性 primary key。
(方法通用)

-复合主键
复合主键是设置多个字段为主键来作为唯一的索引
(ps:联合主键中任意主键都不可为空)
创建方式——创建表的时候在加上primary key(主键一,主键二)。
-联合主键
多个表的主键联合在一起,以此确定一条唯一的记录。
–自增约束
在主键约束后加上auto_increment,这样可以使得我们在插入新数据的时候不必输入主键数值,而是让他自动生成一个递增的数值。

–唯一约束
约束的字段值不可重复
创建方式-和主键一样的方式,关键词是unique。
(ps:和主键区别,可以为空,并且可以多个unique,而主键是唯一的,且能使用自增)
删除方式-alter table 表名 drop index 属性名

–非空约束
约束字段不可为空NULL,关键词是 not null。

–默认约束
当我们放入数据时若是没有填写数据进去的话,就会使用默认值
关键词 default

–外键约束
指当前表的数值需满足另一个表的字段的数值的一种约束。
例如班级表一共有四个班,那么学生表中就不能出现四班以上的班级。
关键词 foreign key 当前字段 references 引用表(引用字段)。
(ps:主表中没有的数值副表不可使用,且主表中被引用的记录是不可被删除的)

常用命令

–启动mysql
service mysqld start
没有安装则会提示:未被识别的服务

(ps:命令后面记得加;号)
–查看数据库
show databases;

–创建数据库
create database + 表名;

–选择数据库
use + 数据库名

–查看数据表
show + 数据表名

–创建数据表
create table +表名(属性一 数据类型(数据大小),属性二 数据类型(数据大小)…)

–查看数据
select*form + 表名;

–查看数据(附带条件)
select*form 表名 where 属性=‘XX’;

–查看数据表的属性/结构
describe + 表名;
(可简写为desc+表名)

–插入数据
insert into + 表名 + values(‘数据1’,‘数据2’…);

–删除数据
delete from 表名 where 属性=‘XX’;、

–修改数据
update 表名 set 属性=‘新数据’where 属性=‘原数据’;

查询

–基本查询
selectfrom 表名;
此处的
号代指所有数据

–指定字段查询
将select * from 表名;中的*换成想要查询的字段即可。

–剔除重复项查询
在select后加上distinct即可

–指定条件查询
在基本查询语句后+where 字段=想要的值;

–区间查询
如指定条件查询一样+where 字段 between XX and XX;
也可使用 字段 > XX and 字段 <XX 的方式;

–多项查询
在基本查询语句后+where 字段 in(值1,值2,值3);

–或条件查询
在基本查询语句后+where 字段=值1 or 字段2=值2;

–升降序查询
在基本查询语句后+order by 字段 asc/desc(升/降);
(ps:若是不写则默认升序 )

–多条件升降序查询
在升降序查询后+“,字段2 asc/desc(升/降);”
即在条件一相同的情况下再以条件二来排序。

–统计查询
select count(*)from 表名 where 字段 = XX;

–子查询(复合查询)
以其他字段为条件找到另外的字段
select 字段一 from 表名 where 字段二=(第二查询语句)

–最大最小,平均值查询
select max/min/avg(查询字段)from 表名 ;

–查询限制
在查询语句后加 limit X,Y;
X指从第几项开始查,Y指查几条

–分组查询
在查询语句后+ group by 字段;
–分组条件
在group by 字段 后加 having count(字段)>X,即可获得以字段总数>X为条件的分组

–模糊查询
like ‘查询的字+%’
此处%为通配符,即可以匹配所用数据

–多表查询
建立一个内连接来让两张表的数据互相调用查询
假设表一和表二共同拥有属性1
则可这样查询–select 表一属性2,表二属性2 from 表一,表二 where 表一.属性1=表二.属性1.
这样表二的属性1和表一的属性1就形成了一个连接,就可以以此查询表一的其他属性了。

–查询字段名称替换
在基本查询中*号位置的字段名称可被替换
例如select 属性一 as 代替名 from 表名;
(ps:as可以省略,只用空格即可)

–排除查询
如多项查询一般,但关键词是 not in

–合并输出
关键词为union,可以把两个查询语句的结果一起输出。

–任意、全部语句
在比较大小时后加any或all即可对比后面的任意数值(全部数值)。

–复制表数据查询
这是通过在同一张表的查询语句后加A/B来区分,这样就可以用同一张表的不同属性作为条件控制查询。
例:select * from 表名 a where 属性一 <(select avg(属性一) from 表名 b where a.属性二=b.属性二)

–查询运算
year(now())可用于运算年龄,在*号位置直接进行运算即可;

连接查询

SQL中有四种链接

–一种内连接
join 或 inner join
这种连接方式只显示两者都有的部分,即交集。
–三种外连接
-左连接
left join 或 left outer join
以左表为主,会显示左表所有的信息,左表有右表没有的则显示为空
-右连接
和左连接相反
-完全外连接
full join 或 full outer join
左右连接都有
mysql不支持全连接,故可用union来实现

事务

mysql中,事务为一个最小的不可分割工作单元,事务可以保证一个业务流程的完整性。
一件事务由多条执行语句完成,这些语句共同成功或共同失败。
例:银行转账,A扣钱和B加钱必须是一起完成的,不能出现只有一个完成的情况。

事务的开启
一般来说mysql的事务是默认开启的,即自动提交
可以用命令 select @@autocommit查看,1为开0为关。
用set 命令置0则关闭
在关闭状态下可以使用回滚命令 rollback 撤销上一次操作
但提交需要用手动提交命令 commit

事务的单独开启
在执行语句前输出 begin 或 start transcation 则可以对语句单独开启
在结束后手动 commit 即可持久化

事务的四大特征(acid)
A 原子性:事务是最小单位,不可以再分割
C一致性:事务要求同错同对
I隔离性:不同事务间互不干扰
D持久性:事务一旦结束则结果持久化

事务的四种隔离性
read uncommitted 读未提交的
read uncommitted 读已提交的
repeatable read 可以重复读(默认)
seralizable 串行化

查看事务的隔离级别
mysql 不同版本查询方式不一样
8.0 : select @@global.transation_isolation;
5.x : select @@global.tx_isolation;
select @@tx_isolation;

如何修改隔离级别
set transaction isolation level read uncommitted;

不同事务隔离情况会发生的问题
read uncommitted 由于这种隔离性读取的信息有可能会被撤回,因此会导致脏读
read commited 高并发情况有可能读取同一数据前后不一致的情况,因为中途可能会有其他人进行数据提交,这称为不可重复读
repeatable read 事务过程中同一张表被两个事务调用,A在查询时只能查到事务调用前的表,但执行时调用的是现在时的表,因此会出现幻读
seralizable 串行化,前一个事务在执行的情况下,后一个事务只能等待,问题是性能会很差

以上事务性能排序 read uncommitted >read uncommitted > repeatable read > seralizable
事务级别越高性能越差,但安全性更高。

此文为笔者的学习记录分享

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MySQL 8 Cookbook: Over 150 recipes for high-performance database querying and administration Design and administer enterprise-grade MySQL 8 solutions MySQL is one of the most popular and widely used relational databases in the World today. The recently released MySQL 8 version promises to be better and more efficient than ever before. This book contains everything you need to know to be the go-to person in your organization when it comes to MySQL. Starting with a quick installation and configuration of your MySQL instance, the b ook quickly jumps into the querying aspects of MySQL. It shows you the newest improvements in MySQL 8 and gives you hands-on experience in managing high-transaction and real-time datasets. If you’ve already worked with MySQL before and are looking to migrate your application to MySQL 8, this book will also show you how to do that. The book also contains recipes on efficient MySQL administration, with tips on effective user management, data recovery, security, database monitoring, performance tuning, troubleshooting, and more. With quick solutions to common and not-so-common problems you might encounter while working with MySQL 8, the book contains practical tips and tricks to give you the edge over others in designing, developing, and administering your database effectively. What You Will Learn Install and configure your MySQL 8 instance without any hassle Get to grips with new features of MySQL 8 like CTE, Window functions and many more Perform backup tasks, recover data and set up various replication topologies for your database Maximize performance by using new features of MySQL 8 like descending indexes, controlling query optimizer and resource groups Learn how to use general table space to suit the SaaS or multi-tenant applications Analyze slow queries using performance schema, sys schema and third party tools Manage and monitor your MySQL instance and implement efficient

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值