mariadb数据库——关联、视图、事务、索引、外键
1.关联
1)连接查询(内关联)
inner join ... on
两个表连接查询
select * from students inner join classes
查询能够对应班级的学生以及班级信息
select * from students inner join classes on students.cls_id=classes.id;
按照要求显示姓名,班级
select students.*, classes.name from students inner join classes on students.cls_id=classes.id;
给数据表起名字
select s.name, c.name from students as s inner join classes as c on s.cls_id=c.id;
查询 有能够对应班级的学生以及班级信息,显示学生的所有信息,只显示班级名称
select students.*, classes.name from students inner join classes on students.cls_id=classes.id;
在以上查询中将班级姓名显示在第一列
select classes.name,students.* from students inner join classes on students.cls_id=classes.id;
查询有能够对应班级的学生以及班级信息,按照班级进行排序
select classes.id, students.* from students inner join classes on students.cls_id=classes.id order by classes.id;
当是同一个班级的时候,按照学生的id从小到大
select classes.id, students.* from students inner join classes on students.cls_id=classes.id order by classes.id, students.id;
2)连接查询(左关联,右关联)
左关联,以左边表为基准,条件对应不上的显示null
select * from students left join classes on students.cls_id=classes.id;
右关联,以后边为基准,条件对应不上的显示null
select * from classes left join students on students.cls_id=classes.id;
3)自关联
查询出河北省所有市
select province.name,city.name from areas as province inner join areas as city on province.aid=city.pid having province.name='河北省';
子查询
标量子查询
查询出北京市所有区的信息
select * from areas where pid in (select aid from areas where name='北京市');
2.视图
比如将一个user表拆分成usera表和userb表,如果再去调用user表就会显示user不存在,就需要创建视图
1)视图的本质就是对查询的封装
create view v_info as select students.*,classes.name as class from students inner join classes on classes.id=students.cls_id;
2)删除视图
drop view v_info;
3)使用视图(只用来查询)
select * from v_info;
3.事务
1)特点
原子性(atomicity):事务内的所有操作要么都执行,要么都不执行,它是一个不可分割的工作单位。
一致性(consistency):数据库总是从一个一致性的状态转换到另一个一致性的状态
隔离性(isolation):一个事物所做的修改在最终提交之前,对其他事物是不可见的
持久性(durabulity):事务完成后,该事务内涉及的数据必须持久性的写入磁盘保证其持久性。
2)命令
begin 开启事务
commit 提交事务
rollback 回滚事务 delete操作可回滚,truncate操作不可回滚
3)关闭自动提交事务
set autocommit=0; 临时关闭
vim /etc/my.cnf.d/server.cnf 修改配置文件重启后永久生效
[server]
autocommit=0
4.索引
1)添加索引
create index index_name on students(name);
2)查看索引
show index from students;
3)删除索引
drop index index_name on students;
4)测试时间
set profiling=1;#打开sql语句执行时间
show profiles;#查看sql执行时间
5.外键
如果一个实体的某个字段指向另一个实体的主键,就称为外键。被指向的实体,称之为主实体(主表),也叫父实体(父表)。负责指向的实体,称之为从实体(从表),也叫子实体(子表)。
对关系字段进行约束,当为从表中的关系字段填写值时,会到关联的主表中查询此值是否存在,如果存在则填写成功,如果不存在则填写失败并报错。
1)创建外键
将学生的cls_id字段指向班级的id字段并设置级联删除功能
alter table students add constraint fk_students foreign key (cls_id) references classes(id) on delete cascade;
2)删除外键
alter table students drop foreign key fk_students;
6.第三方软件连接数据库
1)允许root用户在任意主机登录
grant all privileges on *.* to root@'%' identified by 'root';
2)使用Navicat连接数据库
3)使用Python解释器连接,需要pymysql模块
import pymysql
db = pymysql.connect(host="192.168.254.10", user="root",
password="root", db="testdb", port=3306)
cur = db.cursor()
for i in range(100000):
cur.execute("insert into test_table values (0,'name-%s','title-%s')" % (i,i))
db.commit()
result = cur.fetchall()
print(result)
4)利用shell终端执行命令
mysql -uroot -proot -e "show databases;"
mariadb数据库——关联、视图、事务、索引、外键的更多相关文章
- mariadb 视图 事务 索引 外键
视图 对于复杂的查询,在多个地方被使用,如果需求发生了改变,需要更改sql语句,则需要在多个地方进行修改,维护起来非常麻烦 假如因为某种需求,需要将user拆房表usera和表userb,该两张表 ...
- MariaDB 连接查询,视图,事物,索引,外键
1.连接查询 --创建学生表 create table students ( id int unsigned not null auto_increment primary key, name var ...
- mysql(视图 事务 索引 外键)
视图 视图本质就是对查询的封装 创建视图(定义视图 起名以v_开头) create view v_students as select classes.name as c_name ,stud ...
- mariadb(四)连接查询,视图,事物,索引,外键
一.连接查询 1)进入自己创建的zz数据库 2)创建学生表: create table students ( id int unsigned not null auto_increment prima ...
- MySQL 视图 事务 索引 外连接
视图 1.定义 select 语句的结果集,是一张虚拟的表2.创建视图语句create view 视图名 as select语句3.查看视图show views;4.使用视图select * from ...
- day38:MySQL数据库之约束&索引&外键&存储引擎
目录 part1:数据类型 part2:约束 part3:主键索引 PRI &唯一索引 UNI &普通索引 MUL part4:外键:foreign key part5:在外键中设置联 ...
- mysql字段约束-索引-外键---3
本节所讲内容: 字段修饰符 清空表记录 索引 外键 视图 一:字段修饰符 (约束) 1:null和not null修饰符 我们通过这个例子来看看 mysql> create table wo ...
- Oracle数据库之视图与索引
Oracle数据库之视图与索引 1. 视图简介 视图是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改. 视图基于的表称为基表,视图是存储在数据字典里的一条SE ...
- SQL删除数据库里所有表的外键,同时删除所有用户表
SQL删除数据库里所有表的外键,同时删除所有用户表 删除所有的用户表的外键,直接将下面的代码拷贝到数据库里执行即可: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...
- MySQL/MariaDB数据库的视图(VIEW)
MySQL/MariaDB数据库的视图(VIEW) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.视图概述 1>.什么是视图 视图就是一个虚拟的表,保存有实表的查询结果 ...
随机推荐
- Java I/O(三)各种Reader和Writer读写器、RandomAccessFile随机访问文件、序列化
2019 01/01 八.Reader和Writer读写器 前面讲的输入输出流的基本单位都是字节,因此可以称为“字节流”,读写器是以字符为基本单位,可以称为“字符流”.它们的使用方法非常相似,因此我考 ...
- javasctipt之DOM知识点
一:DOM节点 子节点:childNodes 父节点:parentNode offsetPrent 二:元素属性操作 方式一:xxx.style.xxx 方式二:xxx.style["xxx ...
- 高可用,多路冗余GFS2集群文件系统搭建详解
高可用,多路冗余GFS2集群文件系统搭建详解 2014.06 标签:GFS2 multipath 集群文件系统 cmirror 实验拓扑图: 实验原理: 实验目的:通过RHCS集群套件搭建GFS2集群 ...
- hive判断数据一个表是否在另一个表中(二)
1.一个表中的数据不存在另一个表中 2.一个表中的数据 存在另一个表中:
- nginx设置负载均衡
...... why负载均衡,随着企业业务增长和海量请求,给服务端造成海量并发,导致响应不及时需扩容后端服务,前端需要负载均衡,均摊请求,让服务端吞吐请求的能力提升 单点服务方式,一个点挂掉整个服务就 ...
- SAP Diagnostics Agent无法启动
[问题]SAP Diagnostics Agent无法启动. [现象]Diagnostics Agent安装并没有发生错误,但是打开SAPMMC,Diagnostics Agent(DAA)的Inst ...
- 服务端获取参数(koa)
1.获取query(问号后面的内容) ctx.query 2.获取路由参数(如'/user/:id'的id) ctx.param 3.获取body请求体 koa不能直接获取请求体里的body,需要安装 ...
- pyhton函数
函数编写文档 放在函数开头的字符串称为文档字符串(docstring),将作为函数的一部分存储起来 def square(x): 'Calculates the square of the numbe ...
- HEOI2016/TJOI2016 字符串问题
题目链接:戳我 非常不好意思,因为想要排版,所以今天先只把代码贴出来,明天补题解. 40pts暴力:直接暴力匹配 #include<iostream> #include<cstrin ...
- windows下kafka配置入门 示例
实验平台与软件: 操作系统:windows7 32 位 java 开发包: jdk1.8.0_144 集群: zookeeper-3.3.6 消息队列: kafka_2.11-0.11.0.1 安装 ...