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

在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. 数组 Kotlin(5)

    数组 数组在 Kotlin 中使用 Array 类来表示,它定义了 get 和 set 函数(按照运算符重载约定这会转变为 [] ) 和 size 属性,以及一些其他有用的成员函数:基本类型 clas ...

  2. ListView的MyBaseAdapter的封装

    import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import j ...

  3. DVM 和 JVM 的区别?

    a) dvm 执行的是.dex 文件,而 jvm 执行的是.class.Android 工程编译后的所有.class 字节码会被 dex 工具抽取到一个.dex 文件中.b) dvm 是基于寄存器的虚 ...

  4. 找回从pycharm中删除的文件及文件夹

  5. PyQt4 Python GUI窗体应用程序

    目录 目录 前言 软件环境 PyQT简介 Setup PyCharm Setup SIP Setup PyQt4 测试PyQt是否安装成功 常见错误 最后 前言 还是一句老话,公司要什么我就做什么.这 ...

  6. Linux下面配置安装jmeter(1)

    一.下载安装JDK Jmeter依赖jdk环境,我们先准备jdk,查看是否安装jdk: # rpm -qa | grep jdk    或者    #Java –version 我本地已准备好了jdk ...

  7. 三十四:数据库之SQLAlchemy外建及四种约束

    使用SQLAlchemy创建外建,只需要在子表的字段中指定此字段的外建是哪个表的哪个字段即可,字段类型需和父表下该字段的类型保持一致 使用ondelete指定约束, 外建约束有以下几种:1.RESTR ...

  8. 正确关闭selinux

    .查看当前selinux的状态命令为 getenforce .两个都要关.注意先看看有么有这两个文件,如果没有就创建一个,否则后期会出现很多问题 cat > /etc/selinux/confi ...

  9. Android IdleHandler 原理浅析

    IdleHandler:空闲监听器(就像我没事做了,在群里发了个表情,这时候其他人就知道我很闲了) 在每次next获取消息进行处理时,发现没有可以处理的消息(队列空,只有延时消息并且没到时间,同步阻塞 ...

  10. 【HANA系列】SAP HANA跟我学HANA系列之创建分析视图一

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA跟我学HANA系 ...