MySQL进阶操作

二、MySQL进阶操作

为字段或表起别名:as 

写在字段名前,去除重复数据:distinct

条件筛选常用命令

    比较运算符 > < >= <= != <>

    逻辑运算符 and or not

    模糊匹配 like, %匹配任意个字符,_ 匹配一个字符

    范围匹配 in(数据1,数据2,…)、 between num1 and num2

    是否为空 is null 、 in not null

排序: order by

分页:limit start,count 注意第一条数据的索引为0

分组:group by

    对一个二维表进行分组,使二维表变为多维表!

    查询子表内数据 group_concat(字段名)

    条件筛选:having 注意区别和筛选记录的where语法

    在表的最后一行追加求和记录: with rollup

聚合函数: 默认情况下,聚合函数会把当前所在表当作一个组进行统计。

    count():count(*) 查询组内有多少条记录

    max()、min()、avg()、sum()

    round(数据,保留的位数):round(15.345,2) 结果为15.35,该函数对数据四舍五入

多表连接:原理为笛卡儿积

    内连接:inner join

    外连接:left|right [outer] join  outer可以省略

    条件筛选:on 注意和having、where的区别

    自连接:对表进行连接所需要的数据来自于同一张表,使用自连接必须对表起别名,自连接常应用于三级省市联动;

子查询:查询的条件 是 另一个查询的结果

    标量子查询:子查询结果为单行单列

    行子查询:子查询结果为单行 where 字段 = 子查询结果 

                      select * from students where (height,age) = (select max(height),max(age) from students);

    列子查询:子查询结果为单列 wher 字段 in 子查询结果

                       select name from classes where id in (select cls_id from students);

    子查询常和ANY、ALL、IN、EXISTS联用

    ANY即任意一个数据、ALL即所有的数据、IN即数据存在。

    EXISTS谓词,它允许数据库高效地检查指定查询是否产生某些行。根据子查询是否返回行,该谓词返回TRUE或FALSE。

外键:创建表时加入外键

                        [constraint 外键名] foreign key (字段名1) references tname2 (字段名2));

           为表新增外键

                         alter table tname1 add foreign key (字段名1) references tname2 (字段名2;

            删除外键:show create table my_table;查看外键名

                          alter table my_table drop foreign key 外键名;

常用范式:范式即设计表格式应遵循的规则

          1NF:字段必须保持原子性

           2NF:在1NF的前提下,有主键且非主键字段必须完全依赖主键,不能只依赖部分主键

           3NF:在2NF的前提下,非主键字段必须直接依赖主键,不能传递依赖

E-R图:E-R图的作用是用来描述数据库中的表结构,E-R图使用三个概念描述现实问题

            实体:对应数据库中的一个表

            属性:对应数据库中表的字段

            联系:实体彼此之间相互连接的方式称为联系,也称为关系。1:1 、1:m可以直接表示在数据库中;  多:多(m:n) 则需要使用中间表来表示,这个表只有两个字段,一个用于存储A的主键值,一个用于存储B的主键值。

视图:视图就是一个能够把复杂SQL语句的功能封装起来的一个虚表,只是一个表结构,没有保存任何基本表的表数据,并不存储具体数据, 在用户需要查询视图的时候 再去基本表中取出数据。不建议通过视图修改原表数据。

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

             查看视图:show tables;

             删除视图:drop view 视图名;

事务:将一系列SQL语句封装在一起,作为一个原子操作,要么SQL语句全部成功执行,要么全部不执行。

       事务四大特性ACID:

            原子性:所有操作要么全成功,要么全不执行

            一致性:数据库总是从一个一致性状态,到另外一个一致性状态,不存在不一致状态

            隔离性:事务与外部(其他事务)之间是相互隔离的,事务的中间状态,外界无法看到

             永久性:事务一旦提交即永久保存,提交后无法执行回滚

         开启事务:begin;或者start transaction; 注意mysqld终端默认开启事务,并自动提交

         set autocommit = 0 可以关闭自动提交 此时需要手动提交,可以通过select @@autocommit;命令查看自动提交是否开启;

         终端中一旦开启事务,就需要使用commit;手动提交,将缓存中的数据变更维护到物理表中;

         事务可以通过rollback;进行回滚。注意create 和drop不能进行回滚操作,这两种操作为隐式提交!

 索引:索引是一种数据文件,它存储着表内所有记录的位置信息,它可以提高数据查询速度。

               创建索引:create index 索引名 on 表名 (字段名[(字符串类型)(长度)]); 注意字符串类型才需要指定类型和长度

               查看索引:show index from my_table;

               删除索引:drop index 索引名 on my_table;

用户管理:使用服务实例级账户 root,用户信息存储在user表中,进行用户管理前需要进入该数据库。

               更改用户密码:update user set authentication_string=PASSWORD('新密码') where user ='用户名'@'允许登录的主机;

               刷新权限:flush privileges; 建议修改用户权限相关的操作后,都执行一次刷新权限。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值