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数据库——关联、视图、事务、索引、外键的更多相关文章

  1. mariadb 视图 事务 索引 外键

    视图 对于复杂的查询,在多个地方被使用,如果需求发生了改变,需要更改sql语句,则需要在多个地方进行修改,维护起来非常麻烦   假如因为某种需求,需要将user拆房表usera和表userb,该两张表 ...

  2. MariaDB 连接查询,视图,事物,索引,外键

    1.连接查询 --创建学生表 create table students ( id int unsigned not null auto_increment primary key, name var ...

  3. mysql(视图 事务 索引 外键)

    视图   视图本质就是对查询的封装   创建视图(定义视图 起名以v_开头) create view v_students as select classes.name as c_name ,stud ...

  4. mariadb(四)连接查询,视图,事物,索引,外键

    一.连接查询 1)进入自己创建的zz数据库 2)创建学生表: create table students ( id int unsigned not null auto_increment prima ...

  5. MySQL 视图 事务 索引 外连接

    视图 1.定义 select 语句的结果集,是一张虚拟的表2.创建视图语句create view 视图名 as select语句3.查看视图show views;4.使用视图select * from ...

  6. day38:MySQL数据库之约束&索引&外键&存储引擎

    目录 part1:数据类型 part2:约束 part3:主键索引 PRI &唯一索引 UNI &普通索引 MUL part4:外键:foreign key part5:在外键中设置联 ...

  7. mysql字段约束-索引-外键---3

    本节所讲内容: 字段修饰符 清空表记录 索引 外键 视图 一:字段修饰符 (约束) 1:null和not null修饰符   我们通过这个例子来看看 mysql> create table wo ...

  8. Oracle数据库之视图与索引

    Oracle数据库之视图与索引 1. 视图简介 视图是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改. 视图基于的表称为基表,视图是存储在数据字典里的一条SE ...

  9. SQL删除数据库里所有表的外键,同时删除所有用户表

    SQL删除数据库里所有表的外键,同时删除所有用户表 删除所有的用户表的外键,直接将下面的代码拷贝到数据库里执行即可: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...

  10. MySQL/MariaDB数据库的视图(VIEW)

     MySQL/MariaDB数据库的视图(VIEW) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.视图概述 1>.什么是视图 视图就是一个虚拟的表,保存有实表的查询结果 ...

随机推荐

  1. Five minutes to understand async and defer

    Script tag When we want to insert a script into a web page, the standard way is to use the script ta ...

  2. python--数学运算函数

    x=-100 y=abs(x) #求绝对值 y=divmod(9,4) #9/4之后获取整数与余数 #(2, 1) #返回一个元组(2, 1),第一个数是整数,第二个数是余数 y=round(3.14 ...

  3. State Processor API:如何读取,写入和修改 Flink 应用程序的状态

    过去无论您是在生产中使用,还是调研Apache Flink,估计您总是会问这样一个问题:我该如何访问和更新Flink保存点(savepoint)中保存的state?不用再询问了,Apache Flin ...

  4. Centos 由字符界面 init 3 切换图形界面 init 5

    Centos6 和 Centos7 由字符界面切换成 图形界面方法不同,下面分别介绍. 一.Centos6 切换方法 yum -y install xorg* yum -y groupinstall ...

  5. python from…import* 语句

    把一个模块的所有内容全都导入到当前的命名空间也是可行的,只需使用如下声明: from modname import * 这提供了一个简单的方法来导入一个模块中的所有项目.然而这种声明不该被过多地使用. ...

  6. c语言 - 关键字const的作用

    const修饰的数据类型是指常类型,常类型的变量或对象的值是不能被更新的. 1.const char * p1;              //表示p1指向了的字符串不可更改 2.char const ...

  7. 网页“console”输出图文信息

    http://www.monmonkey.com/javascript/jiben2.html 参考以上链接中的转义字符使用. http://www.cnblogs.com/Wayou/p/chrom ...

  8. TTTTTTTTTTTTTTTTTTT CF 银行转账 图论 智商题

    C. Money Transfers time limit per test 1 second memory limit per test 256 megabytes input standard i ...

  9. kmeans与kmeans++的python实现

    一.kmeans聚类: 基本方法流程 1.首先随机初始化k个中心点 2.将每个实例分配到与其最近的中心点,开成k个类 3.更新中心点,计算每个类的平均中心点 4.直到中心点不再变化或变化不大或达到迭代 ...

  10. python学习之路(20)

    装饰器 由于函数也是一个对象,而且函数对象可以被赋值给变量,所以,通过变量也能调用该函数. >>> def now(): print('2019.0519') >>> ...