连接查询(两张表关联查询)

在sql语句中,- - 代表注释

内关联查询(查询两张表的交集)

select * from 表1 inner join 表2 on 表1.id=表2.id(此处id是表1与表2相同的id);

内关联查询显示指定字段

select 表1.指定字段,表2.指定字段 from 表1 inner join 表2 on 表1.id=表2.id;

左关联:以左边表为基准,如果右边的表内的记录匹配不到,就显示NULL

select *from students left join classes on classes.id=students.cls_id

右关联:以右边为基准,如果左边的表内记录匹配不到,就不会显示

select *from students right join classes on classes.id=students.cls_id

自关联:

就是说有一张表,类似于这样:

##--省份
insert into areas(aid,name,pid) values (,'北京市',null);
insert into areas(aid,name,pid) values (,'天津市',null);
insert into areas(aid,name,pid) values (,'河北省',null);
insert into areas(aid,name,pid) values (,'山西省',null); ##--地级市
insert into areas(aid,name,pid) values (,'海淀区',);
insert into areas(aid,name,pid) values (,'滨海区',);
insert into areas(aid,name,pid) values (,'沧州区',);
insert into areas(aid,name,pid) values (,'大同市',); insert into areas(aid,name,pid) values (,'朝阳区',);
insert into areas(aid,name,pid) values (,'武清区',);
insert into areas(aid,name,pid) values (,'石家庄',);
insert into areas(aid,name,pid) values (,'太原市',); ##--县级市
insert into areas(aid,name,pid) values (,'西二旗',);
insert into areas(aid,name,pid) values (,'大港',);
insert into areas(aid,name,pid) values (,'徐丘市',);
insert into areas(aid,name,pid) values (,'清徐',); insert into areas(aid,name,pid) values (,'中关村',);
insert into areas(aid,name,pid) values (,'汉沽',);
insert into areas(aid,name,pid) values (,'河间市',);
insert into areas(aid,name,pid) values (,'阳曲',);

在自关联的情况下,给表起别名来进行关联。

格式:

select * 表名 as 别名 inner join 表名 as 别名 on 别名.id=别名.关联id;  这是筛选出对应关系

select * 表名 as 别名 inner join 表名 as 别名 on 别名.id=别名.关联id where 条件;这是从对应关系里指定筛选。

select * from areas where pid=(select aid from areas where name='北京市');

select * from areas where pid in (select aid from areas where name='北京市');

表内的记录可以相互关联。

如何在数据库中传文件和恢复数据库:

先传到Linux系统中,而后source 文件名.sql,注意要在none这个当前路径下。

数据的备份与恢复(shell终端下执行)

#单个数据库备份
mysqldump –uroot –proot - -databases 要备份的数据库名 > 文件名.sql #整个数据库备份
mysqldump –uroot –proot - -all-databases要备份的数据库名 > 文件名.sql #表的备份
mysqldump –uroot –proot 数据库名 要备份的表名 > 文件名.sql #多个表的备份
mysqldump –uroot –proot 数据库名 要备份的表名 要备份的表名 > 文件名.sql #在shell命令下运行sql语句(单个或多个) mysql –uroot –proot –e ‘sql语句;sql语句’

视图(把两个有关联或没关联的表合并成一个视图)

视图一般用来查询,不是用来更改,把两个表做成视图,注意不要有相同字段。

create view(视图的关键字)v视图命名as select * from classes inner join students on classes.id=students.cls_id;

drop view 视图名字; 删除视图

事物

事物的特性:

原子性:就是把我输入的sql语句看成一个整体,要么全部执行成功,要么全部执行不成功。保证了数据不丢失。

一致性:从一个状态变成另一个状态,前后状态要一致。

隔离性:事物与事物之间是隔离的,不能相互干扰的。

持久性:数据写入到磁盘当中。

开启事务命令:

start transaction;

begin;

结束事物命令:

commit;提交所有事物(成功)

rollback;回滚所有事物(不成功)

默认提交事物

autocomit 

如何更改autocomit的on

vim /etc/my.cnf.d/server.cnf

把autocommit=1改成0即是关闭

而后重启mariadb即可生效。

查看数据库当前状态

show status; 

索引(适合于只用于查询的表,不适用于增删改多的表)

索引相当于一本书的目录。

约束:key (要索引的字段)   这个字段就变成了索引

创建好的表上添加索引

create index 索引命名 on 选择的表 (选择的字段); 

删除索引

drop index 索引名称 on 表名;

外键

设外键一般在儿子表设,就是范围小的。

格式一:

alter table 表名add constraint 外键命名 foreign key (要设为外键的字段)references  classes(id);

格式二:区别在于删除父表上的一条记录时,相对应子表上的所有的数据都没了。

alter table 表名add constraint 外键命名 foreign key (要设为外键的字段)references  classes(id)on delete cascade;

删除外键:

alter table 表名 drop foreign key;

mariadb索引、视图、关联查询、备份恢复、外键的更多相关文章

  1. SQL Server索引视图以(物化视图)及索引视图与查询重写

    本位出处:http://www.cnblogs.com/wy123/p/6041122.html 经常听Oracle的同学说起来物化视图,物化视图的作用之一就是可以实现查询重写,听起来有一种高大上的感 ...

  2. sql查询指定表外键约束

    //////////////////查询指定表外键约束select a.name as 约束名, object_name(b.parent_object_id) as 外键表, d.name as 外 ...

  3. Kettle ETL 来进行mysql 数据同步——试验环境搭建(表中无索引,无约束,无外键连接的情况)

    今天试验了如何在Kettle的图形界面(Spoon)下面来整合来mysql 数据库中位于不同数据库中的数据表中的数据. 试验用的数据表是customers: 第三方的数据集下载地址是:http://w ...

  4. SQL 数据库 子查询、主外键

    子查询,又叫做嵌套查询. 将一个查询语句做为一个结果集供其他SQL语句使用,就像使用普通的表一样,被当作结果集的查询语句被称为子查询. 子查询有两种类型: 一种是只返回一个单值的子查询,这时它可以用在 ...

  5. mysql基础之视图、事务、索引、外键

    一.视图 视图是一个虚拟表,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据.但是,视图并不在数据库中以存储的数据值集形式存在.行和列数据来自由定义视图的查询所引用的表,并且在引用 ...

  6. SQL Server 优化---为什么索引视图(物化视图)需要with(noexpand)强制查询提示

    本文出处:http://www.cnblogs.com/wy123/p/6694933.html 第一次通过索引视图优化SQL语句,以及遇到的一些问题,记录一下. 语句分析 最近开发递交过来一个查询统 ...

  7. SQLServer之创建索引视图

    索引视图创建注意事项 对视图创建的第一个索引必须是唯一聚集索引. 创建唯一聚集索引后,可以创建更多非聚集索引. 为视图创建唯一聚集索引可以提高查询性能,因为视图在数据库中的存储方式与具有聚集索引的表的 ...

  8. MS SQL巡检系列——检查外键字段是否缺少索引

    前言感想:一时兴起,突然想写一个关于MS SQL的巡检系列方面的文章,因为我觉得这方面的知识分享是有价值,也是非常有意义的.一方面,很多经验不足的人,对于巡检有点茫然,不知道要从哪些方面巡检,另外一方 ...

  9. MySQL的几个概念:主键,外键,索引,唯一索引

    概念: 主键(primary key) 能够唯一标识表中某一行的属性或属性组.一个表只能有一个主键,但可以有多个候选索引.主键常常与外键构成参照完整性约束,防止出现数据不一致.主键可以保证记录的唯一和 ...

随机推荐

  1. linux挂载本地镜像

    //创建挂载目录 mkdir /media/cdrom //挂载镜像 mount -t iso9660 /dev/cdrom /media/cdrom 提示:mount:block device /d ...

  2. leetcode-easy-others-20 Valid Parentheses

    mycode   95.76% class Solution(object): def isValid(self, s): """ :type s: str :rtype ...

  3. SpringMvc@RequestParam 来映射请求参数

    jsp页面 <a href="springmvc/testRequestParam?username=atguigu&age=11">Test RequestP ...

  4. T83310 【音乐会】二重变革

    T83310 [音乐会]二重变革 题解 你看数据那么大,又是一道数学题 题面描述这么个代码肯定不能傻fufu的直接把代码提交上去 我批评我自己 观察代码当中有一行 也就是说明最后这个数列都将变成同一个 ...

  5. webshell 常见 Bypass waf 技巧总结

    在渗透学习的过程中,总会遇到各种情况,例如 php 大马被 waf 拦截的时候,那么如何制作免杀 php webshell 呢,接下来就由我带各位小伙伴们一起踏上大马免杀之路,不喜勿喷. 一篇好的文章 ...

  6. python中_new_()与_init_()的区别

    __new__方法的使用 只有继承于object的新式类才能有__new__方法,__new__方法在创建类实例对象时由Python解释器自动调用,一般不用自己定义,Python默认调用该类的直接父类 ...

  7. 阶段3 2.Spring_03.Spring的 IOC 和 DI_3 spring基于XML的IOC环境搭建和入门

    创建新项目 修改为jar包的方式 把上一个工程内的代码 java下的com复制过来 由于配置文件没有,所以一运行就会报错 factory文件夹整个删除 dao的实现类 这里删除 测试类保留这两行代码 ...

  8. 锋利的jQuery(第二版) 初读笔记

    window.onload(): 必须等待网页中所有的内容加载完毕后(包括图片)才能执行. $(document).ready(): 网页中所有DOM结构绘制完毕后就执行,可能DOM元素关联的东西并没 ...

  9. 如何获取当前包名与activitity&&抓log

    若hi1:获取当前包名以及Activity (1)adb shell dumpsys activity | find "mFocusedActivity" (2)adb shell ...

  10. 手机连接电脑,使用adb命令

    手机连接电脑使用adb命令,主要是有2种方式,其中最常见的就是第一种,用usb连线使用 1:adb usb - restarts the adbd daemon listening on USB ad ...