mysql最全使用方法(不全来打我)

本文全面介绍了数据库操作的关键概念和技术,包括数据库范式、事务处理、隔离级别等基础知识,并深入讲解了如何进行表的创建、更新、查询及删除等操作。此外,还提供了聚合函数使用、多表查询、子查询等多种高级技巧。

目录

创建条件(范式、事物、隔离)

范式

事务

隔离

对库操作

键表约束:

查表

聚合函数

多表查询: 

子查询:

联合

视图:

几个例子:


创建条件(范式、事物、隔离)

这个是对于有一定了解的,如果新手可以先跳过这个,后面一定要回头看(很重要)

范式

设计的越详细,操作越好,但不一定能用到
第一范式:满足所有字段不可再拆分。
    例:字段A是地址,可拆分为国、省、市……
第二范式:满足除主键外,其余每个字段都依赖主键;(除联合主键外)
        t_name(
            字段A主键 
            字段B
            字段A_1    );(因B与A没关系应剔除,否则做联合主键)
第三范式:必须先满足第二范式,除主键以外,其他字段不能有依赖关系
***********************************************


事务

保持两工作能够同步完成;要么同时成功,要么同时失败

1*利用mysql事务
        查看事务状态:SELECT @@autocommit;
        SET autocommit=0;
        查询事务状态:0为关1为开,当事务自动提交关闭后,若关闭,需要手动提交,否则无法储存
        事务创建:语句1;语句2;
        事务回滚:rollback;可恢复事务前的状态(事务回滚需要MYSQL  的自动提交关闭;)
        事务提交:commit;提交后,数据将持久保存
2*手动开一个事务
        事务创建:1、begin;
                        语句1;语句2;        
                  2、start TRANSACTION ;
                        语句1;语句2;
        事务回滚:rollback;无需关心自动提交
        事务提交:commit;提交后,数据将持久保存


---------------------------
事务四特征:原子性、一致性、隔离性、持久性

**********************************************

隔离

数据库的隔离性:脏读、不可重复读、幻读、串行化

查看数据库的隔离级别:8.x @@global.transaction_isolation;
5.x
select @@global.tx_isolation, @@tx_isolation;

修改隔离级别
help ISOLATION
Name: 'ISOLATION'
Description:
Syntax:
SET [GLOBAL | SESSION] TRANSACTION ISOLATION LEVEL
  {
       REPEATABLE READ
     | READ COMMITTED
     | READ UNCOMMITTED
     | SERIALIZABLE
   }


**********************************************

对库操作

这个就是最基本的操作了,对数据库(表、字段)的增删改查
 

查询数据库:show datebases;
创建数据库:create database db_name;
选择数据库:use 数据库名;
退出:exit;
查看所有表:show tables;
创建表:create TABLE biao_name(
                    字段  类型,
                    字段  类型,
                        ……
                    字段  类型);

查表详情:DESC biao_name;(describe)
添加数据:insert INTO biao_name  VALUES("","","",……,"");

数据类型:……
删除数据:delete FROM biao_name WHERE 条件;
修改数据:update biao_name SET 字段='' WHERE            条件;
查询数据:select 字段 FROM biao_name WHERE 条                件;


*************************************************

键表约束:

这个就是利用数据库自身的功能,对入库的数据进行检查,如果数据不对则操作失败,但是一般在大项目中尽量减少键表约束,会造成数据库资源问题,一般都是利用代码级别去验证
    

主键:此字段不能重复,且非空,
        1、 CREATE TABLE biao_name(
            字段 类型  PRIMARY key,
            ……);
            联合主键里:只要主键值加起来不重复
        2、 CREATE TABLE biao_name(
            字段1 类型 ,
            字段2 类型 ,
                ……,
            PRIMARY KEY(字段1,字段2)
            );
            自增,辅助与主键使用,实现自增长 ,自动生成
        3、CREATE TABLE biao_name(
            字段 类型  PRIMARY KEY auto_increment,
            ……);
        后加主键
        4、alter TABLE biao_name ADD PRIMARY KEY(字段);
        删除主键:
        5、alter TABLE biao_name DROP PRIMARY KEY;
        修改:
        6、alter TABLE biao_name modify 字段 类型 PRIMARY KEY;
    -------------------------------    
    外键:两表,在添加数据时,应先添加主表数据,若主表内无其字段,则报错,如果附表使用了主表数据,主表改数据也无法删除 
    
            CREATE TABLE biao_name(
            字段1 类型 ,
            字段2 类型 ,
                ……,
            FOREIGN KEY (本表字段) REFERENCES 主表名(主表字段)
            );

        
-----------------------------------
    唯一:约束字段的值不可以重复
        1、 CREATE TABLE biao_name(
            字段1 类型 ,
            字段2 类型 ,
                ……,
            UNIQUE(字段1,字段2)
            );
        2、ALTER TABLE biao_name UNIQUE(字段);
        3、删除:
        alter TABLE biao_name DROP INDEX 字段;
        4、修改:
        alter TABLE biao_name modify 字段 类型 UNIQUE;
            
-------------------------------------------
    非空:约束字段不能为空
        1、 CREATE TABLE biao_name(
            字段1 类型  NOT NULL ,
            字段2 类型 ,
                ……
            );
        
--------------------------------------------
    默认:如果没有给值,就会使用默认值        CREATE TABLE biao_name(
                    字段1 类型  DEFAULT 值 ,
                    字段2 类型 ,
                        ……
                    );


***********************************************

查表

这就是数据库最重要的查表了,查表其实是最难的,在一堆数据中取出自己想要的,


聚合函数

结果集:fun_name 表示要做的聚合操作,即聚合函数,常用的有
平均值 AVG(结果)
最大 MAX(结果) 最小值(min)。
总和:count(结果)
日期 :年year(日期型结果) 
命名 原名 AS  新名
任意一个ANY(结果集)
所有 all(结果集)
去重复 DISTINCT(结果) 
求和sum,
GROUP BY 关键字表示要进行分类聚合的字段
WITH ROLLUP 表明是否对分类聚合后的结果进行再汇总
HAVING 关键字表示对分类后的结果在进行条件的过滤


条件:


求区间  1、字段 BETWEEN 最小值 AND 最大值;
        2、字段 >最小值 AND 字段>最大值;

定值查询(或)  1、字段 IN(值1,值2,……);<NOT IN() >
                2、字段1=值1 OR 字段2=值2;

升序(默认):order by 字段 asc 降序:order by 字段 desc
升降混用:order by 字段 asc,字段 desc;
 
分组:group BY 字段;
 
交集   结果1 UNION  结果2;   查询1 UNION  查询2; 

 


****************************************************

多表查询: 

1、俩表查值
    SELECT t1.a,t2.b FROM t1,t2 WHERE t1.a=t2.a;    

2、仨表查询
    SELECT t1.a,t2.b,t3.c FROM t1,t2,t3 WHERE t1.a=t2.a  AND t2.b=t3.b;    

3、左连接:(left join左边的表是要全部显示的)
    select id,dep_name from deployee left join department on deployee.dep_id = department.dep_id;

4、右连接:(right join 右边的表要全部显示)
    select id,dep_name from department right join deployee on deployee.dep_id = department.dep_id;


*********************************************

子查询:

关键字in,not in,= ,!=,exists,not exists

select * from deployee where deployee.dep_id in (select dep_id from department);
如果子查询只有一条记录,in可以用等号

***************************************

联合

如果要求将两个表的数据按照一定的查询条件查询出来后,将结果合并到一起显示出来,需要使用union和union all关键字来实现。
关键字:union和union all
union 和 union all的主要区别是union all是把结果集直接合并在一起,而union 是将union all后的结果进行一次distinct,去除重复的记录。

例:示例:

将deployee表和department表中的dep_id字段合并后查询出来:
select dep_id from deployee union all select dep_id from department;

里面有重复项,就是将两个表的数据直接加一起,如果使用过 union :
select dep_id from deployee union select dep_id from department;
就完美解決了


***************************************

视图:

视图来自表,视图更改,主图也会更改;

create VIEW myview AS
        SELECT * FROM myview WHERE id=4;  
存储过程:create PROCEDURE mypro AS
            
            bigin
                END 


***********************************************

几个例子:

去掉重复:
SELECT distinct username FROM user;
升序:
SELECT * FROM user order by id asc;
显示前几条
SELECT * FROM user order by id asc limit 2;


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值