MariaDB——相关概念与sql语句
数据存放目录:/var/lib/mysql/ 配置文件目录:/etc/my.cnf.d/
show global variables like '%pro%';
show session variables like '%pro%';
set session profiling=1;
show session variables like '%pro%';
--session变量只在会话层生效,退出会话再进入数据库那么配置就会失效。
--global变量在全局生效,但是重启数据库之后会失效,要想永久生效需要将参数设定写入到配置文件之中。
--将想要设置的变量值写到配置文件的[server]之下即可,这里需要注意的是:并不是所有的变量写到配置文件里都能生效。
show global variables like '%buffer_pool%';
set global profiling=0;
--不接global默认修改session,修改全局变量需要加上global。
show global status;
show session status;
show table status like 'students'; #查看表的状态
create table areas(
aid int primary key auto_increment,
name varchar(22),
pid int
);
show tables;
source areas.sql; #将sql语句要插入的内容写到文件中,放到连接数据库时所在的工作目录之中,执行source即可。
#确保已经切换到该表所在的库。
select * from areas as province inner join areas as city on province.aid=city.pid having name='河北省';
--查询出河北省的所有市
select province.name,city.name from areas as province inner join areas as city on province.aid=city.pid having provine.name='河北省';
select * from areas as p inner join areas as c on p.aid=c.pid having p.name='北京市';
select aid form areas where name='北京市';
select * from areas where pid=1;
合并:
select * from areas where pid=(select aid from areas where name='北京市');
#windows路由跟踪tracert www.baidu.com
select * from students;
select * from classes;
select * from students inner join classes on students.cls_id=classes.id;
select students.name,classes.name from students inner join classes on students.cls_id=classes.id;
select classes.name as class,students.name from students inner join classes on students.cls_id=classes.id order by class;
select * from classes left join students on calsses.id=students.cls_id; #以classes为基准
select * from students left join classes on classes.id=students.cls_id; #以students为基准,没有班级的学生班级为空
--left join 和 right join 相当于调换位置。
select * from students right join classes on classes.id=students.cls_id;
--外键:真正将两张表关联起来。
select classes.name,students.name from classes inner join students on students.cls_id=classes.id;
select calsses.name,students.name from classes inner join students on students.cls_id=classes.id order by classes.name;
--以students为基准 classes没有的为null
select c.name,s.name from classes as c right join students as s on c.id=s.cls_id order by c.name;
--定义试图建议使用v_开头,为了将视图和表做出区分。
create view 视图名称 as select语句;
--查看视图
show tables; #会将所有的视图也列出来
show table status like 'v_test';
--删除视图
drop view 视图名称;
drop view v_test;
--视图的用处就是查询,简化sql语句。视图只能用于查询,不能用于增删改查。
--创建视图
create view v_info as select c.name as c_name,s.name as s_name from students as s inner join calsses as c on s.cls_id=c.id;
--如果两个colume都是name那么会报重复的错误,所以起一个别名。
--视图只能查询,无法实现增删改查。
事物具有ACID特性:原子性(atomicity)、一致性(consistency)、隔离性(isolation)、持久性(durabulity)。
要求:表的引擎类型必须是innodb类型才可以使用事物,这是mysql表的默认引擎。
关闭事物(提交或者回滚):commit或者rollback
开启事物之后使用delete删除,rollback可以回滚。但是使用truncate删除后rollback是恢复不了的。
也只有在事物里面才能回滚。如果没有开启事物或者已经commit了,那么就不能rollback了.
--默认是开启autocommit,执行一条sql语句自动commit。
数据库的变量影响着数据库的性能,数据库的调优也是对变量的设置。
如果将变量autocommit设置为0,那么你的操作需要commit才能生效。
可以使用set:全局变量、session变量,也可以写入配置文件:
[server]
autocommit=0
然后重启数据库才能生效。
使用配置文件更改这种变量是永久型的,使用set是临时型的,global——是重启数据库失效,session——退出当前会话失效。
方式一、在创建表的时候创建索引
create table index(
id int primary key,
name varchar(22),
age int,
key (age)
);
方式二、在已经存在的表上创建索引
create index 索引名称 on 表名(字段名)
create index age_index on index(age);
--查看索引
show index from 表名;
--删除索引
drop index 索引名称 on 表名;
--索引能降低查询的时间,加快查询的速度
--可以使用时间测试来检测
set profiling=1; #打开sql语句的执行时间
show profiles; #查看sql执行时间
desc test_table;
--循环插入数据之后设置参数
set profiling=1
select * from test_table where 'name=name-88888';
show profiles;
create index name_index on test_table(name);
select * from test_table where 'name=name-88888';
show profiles;
--会发现查询的时间大大缩短了,查询的性能更优。
--添加外键
alter table students add constraint fk_students foreign key (gid) references grade(gid) on delete cascade;
--查看外键
show create table 表名;
alter table students drop foreign key 外键名称;
select * from students;
alter table students add constraint fk foreign key (cls_id) references classes(id);
--建立起了外键这个时候要插入cls_id那么可能需要注意不能超过主表的id,否则会报错。
--如果class(id)只有1和2,插入数据的时候students(cls_id)写3会报错。
--先删除子表再删除父表
delete from students where cls_id=1;
select * from students;
delete from classes where id=1; #发现可以删除
alter table students drop foreign key fk;
alter table students add constraint fk foreign key (cls_id) references classes(id) on delete cascade;
selete * from students;
selete * from classes;
MariaDB——相关概念与sql语句的更多相关文章
- MariaDB——数据库基础与sql语句
数据库介绍 什么是数据库? 简单的说,数据库就是一个存放数据的仓库,这个仓库是按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来组织,存储的,我们可以通过数据库提供的多种方法来管理数据 ...
- [MySQL数据库之数据库相关概念、MySQL下载安装、MySQL软件基本管理、SQL语句]
[MySQL数据库之数据库相关概念.MySQL下载安装.MySQL软件基本管理.SQL语句] 数据库相关概念 数据库管理软件的由来 数据库管理软件:本质就是个C/S架构的套接字程序. 我们在编写任何程 ...
- SQL语句报错:You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near
报错如图: 最开始其实我的列名tname和tsubject分别叫name和subject,后来看到网上有说这个报错可能是数据库建表的时候使用了mysql的关键词,我就只把name改了.后来还是这个问题 ...
- MariaDB——SQL语句分类汇总
常用SQL语句汇总 SQL语句在所有的关系型数据库中都是通用的,算起来sql语句也是一门语言,只不过这门语言的主要操作对象是关系型的数据库,其中最常用的还是查询相关的语句. sql语句主要分为: DQ ...
- Python-数据库 基本SQL语句
1. 数据库是什么 2. MySQL安装 3. 用户授权 4. 数据库操作 - 数据表 - 数据类型 - 是否可以为空 - 自增 - 主键 - 外键 - 唯一索引 数据行 增 删 改 查 排序: or ...
- 详细分析SQL语句逻辑执行过程和相关语法
本文目录: 1.SQL语句的逻辑处理顺序 1.2 各数据库系统的语句逻辑处理顺序 1.2.1 SQL Server和Oracle的逻辑执行顺序 1.2.2 MariaDB的逻辑执行顺序 1.2.3 M ...
- php中sql语句常见错误
.php文件中sql语句的写法导致的错误如下: 1.$logSql="select * from jd_login where uname=".$u."and upwd= ...
- 数据库入门-基本sql语句及数据类型
一.基本sql语句 SQL语言主要用于存取数据.查询数据.更新数据和管理关系数据库系统,SQL语言由IBM开发.SQL语言分为3种类型: #.DDL语句 数据库定义语言: 数据库.表.视图.索引.存储 ...
- MySQL的SQL语句
一. MySQL概念 程序 =数据+指令构成,如果下载1个程序需要连带该程序所有代码+数据下载到本地,那这个程序运行起来势必造成本机内存压力暴涨,所以我们需要1个在远程server端帮我们管理数据的软 ...
随机推荐
- Java连载81-枚举类型,生成五个不重复的随机数,集合简介
一.枚举类型 1.枚举类型的格式就是enum+枚举类型的名称,可见下面的例子. package com.bjpowernode.java_learning; public class D81_1_ ...
- 正则表达式regex回溯分析
正则表达式的回溯 现在我们来正式认识一下回溯.以字符串“abbc”为例,正则表达式为“ab{1,3}c”,再匹配的时候,a.b.b,匹配完成,这时候,正则表达式会继续用c和b进行比较,发现不符合,这时 ...
- Scrapy爬取某装修网站部分装修效果图
爬取图片资源 spider文件 from scrapy.linkextractors import LinkExtractor from scrapy.spiders import CrawlSpid ...
- win10 桌面快捷键技术
win 10 的 快捷键技术,使用还是挺流畅舒适的: Windows10技术新增键盘快捷键汇总: 1.贴靠窗口:Win +左/右> Win +上/下>窗口可以变为1/4大小放置在屏幕4个角 ...
- 【网摘自CSDN网站】当文本内容过多,展开更多 (css控制,)
<div class="more"><p class="btn">显示全部内容</p></div> .more ...
- 小白学 Python 爬虫:Selenium 获取某大型电商网站商品信息
目标 先介绍下我们本篇文章的目标,如图: 本篇文章计划获取商品的一些基本信息,如名称.商店.价格.是否自营.图片路径等等. 准备 首先要确认自己本地已经安装好了 Selenium 包括 Chrome ...
- 三 Spring和DI(面试)
IOC:控制反转,将对象的创建权反转给了Spring DI:依赖注入,前提要有IOC的环境.Spring管理这个类的时候会将类的依赖的属性,在xml注入(设置)进来. 面向对象的时候,类和类之间的 ...
- Java基础 -2.6
String字符串 在任何语言里面 都没有提供所谓的字符串这种基本数据类型,但是从实际的使用上来讲呢,各个编程语言 为了方便程序的开发,也都会提供有字符串的相应描述 在进行字符串变量使用的时候也可以使 ...
- springboot 重写 AuthorizationFilter
原文链接:https://www.cnblogs.com/zeussbook/p/10778532.html
- Codeforces Round #588 (Div. 2)D(思维,多重集)
#define HAVE_STRUCT_TIMESPEC#include<bits/stdc++.h>using namespace std;long long a[7007],b[700 ...