Mysql进阶篇-存储引擎
Mysql体系结构
连接层接受客户端的连接,完成对连接的一些处理以及认证授权的操作,检查是否超过最大连接数等等。
服务层大部分核心功能的实现场所,SQL接口,解析器,查询优化器,缓存和跨存储引擎的实现
引擎层可插拔式的存储引擎,可以选择其中的一个引擎,也可以增加引擎。
存储引擎控制的是mysql中数据的存储和提取的方式,服务器通过api与存储引擎进行通信。
索引是在这一层实现的,不同存储引擎索引不同。
InnoDB是Mysql5.5版本后的默认引擎
存储层数据库中的数据存储在磁盘中,包括一堆日志,索引…..
存储引擎简介引擎就是发动机,机器的核心部分,且不同引擎不同的应用场景,没有好坏之分
存储引擎是Mysql特有的,就是存储数据,建立索引,更新/查询数据等技术的实现方式。存储引擎是基于表的,而不是基于库的,所以也叫做表类型。
查询默认引擎
show create table 表名;
查询当前数据库支持的存储引擎
show engines;
创建表时指定存储引擎
create table 表名(
name int comment ‘ok’
) engi ...
Mysql基础篇-事务
事务简介事务是一组操作的集合,是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或者撤销操作请求,即要么同时成功,要么同时失败
开启事务(手动)
处理事务 (手动)
提交事务(如果异常,回滚事务)(也是手动)
每一条sql语句都是一个事务
对于Mysql而言,事务是默认自动提交的
我们执行CRUD时,语句一旦执行完,数据就提交到数据库了。
事务操作1234567// 转账操作的必要准备create table account( id int auto_increment primary key comment '主键ID', name varchar(20) comment '姓名', money int comment '余额')comment '账户表';insert into account(id, name, money) VALUES (null,'张三',2000),(null,'李四',2000);
...
PTA题目
A-B
本题要求你计算A−B。不过麻烦的是,A和B都是字符串 —— 即从字符串A中把字符串B所包含的字符全删掉,剩下的字符组成的就是字符串A−B。
输入格式:输入在2行中先后给出字符串A和B。两字符串的长度都不超过104,并且保证每个字符串都是由可见的ASCII码和空白字符组成,最后以换行符结束。
输出格式:在一行中打印出A−B的结果字符串。
输入样例:12I love GPLT! It's a fun game!aeiou
输出样例:1I lv GPLT! It's fn gm!
12345678910111213141516171819202122#include <stdio.h>#include <string.h>int main(void){ int k=1; char a [10000]; char b [10000]; gets(a); gets(b); for (int i=0;i<strlen(a);i++){ for (int z=0; ...
Mysql基础篇-多表查询
多表关系(类别)
一对多
案例: 部门与员工的关系
关系: 一个部门对应多个员工,一个员工对应多个部门 (员工是多,部门是一)
实现: 在多的一方建立外键,指向一的一方的主键
多对多
案例: 学生与课程的关系
关系: 一个学生可以选修多个课程,一门课程也能供多个学生选择
实现: 建立第三张中间表,中间表至少包含两个外键,分别关联两方主键
1234567-- 学生表create table student( id int auto_increment primary key comment 'ID', name varchar(10) comment '姓名', no varchar(10) comment '学号')comment '学生表';insert into student(id, name, no) values (......)
123456-- 课程表create table course ( id int auto_increment primary key ...
GO圣经-入门
因为花钱买了本GO语言圣经,但是因为懒惰一直没看,因此打算最近好好学习一下Go的基础,至少有点事情干,哈哈哈哈
os.argsgo语言中使用os.args来表示命令行参数,os.args本质上是一个slice
os.args[0]是这个命令行本身的名字,os.args[1:]表示的是程序执行时的参数
实操:
版本一
123456789101112//版本一func main() { var s, sep string // s,sep 取默认值为空 for i := 1; i < len(os.Args); i++ { s += sep + os.Args[i] // sep = " " } fmt.Println(s)}--- 输入形式 go run 命令行的名字 参数1,参数2,参数3......输入:go run main.go hello world guys输出:hello world guys
版本二
使用for range形式来操作
12345678910111213版本二f ...
http概述
internet 互联网 凡是能够相互通信的设备构成的网络都叫做互联网
Internet 因特网 网络与网络之间连成的庞大网络,这些网络以TCP/IP协议为相连
www 万维网(world wide web) 是图片,文件,资源的集合,资源通过超链接互相连接形成网络,并使用URL标识,HTTP就是万维网的主要访问协议
web(World Wide Web)即全球广域网,也称为万维网,它是一种基于超文本和HTTP的、全球性的、动态交互的、跨平台的分布式图形信息系统。是建立在Internet上的一种网络服务,为浏览者在Internet上查找和浏览信息提供了图形化的、易于访问的直观界面,其中的文档及超级链接将Internet上的信息节点组织成一个互为关联的网状结构。
http是web上的超文本传输协议(HyperText Transfer Protocol),是web上的核心
命令GET。
请求和响应报文
连接过程
World Wide Web - Wikipedia
HTTP 协议入门 - 阮一峰的网络日志 (ruanyifeng.com)
未完成,个 ...
Mysql基础篇-约束
概念约束是作用域表中字段的规则,用来限制数据
目的保证数据库中数据的正确性,有效性,完整性
常见约束
约束
描述
关键字
非空约束
限制该字段不能为null
not null
唯一约束
保证该字段的所有数据都是唯一不重复的
unique
主键约束
主键是一方数据的唯一标识,非空且唯一
primary key
默认约束
保存数据时,如果未指定字段的值,采用默认值
default
检查约束
保证字段值满足某一个条件
check
外键约束
让两表之间的数据产生链接,保证数据的一致性
foreign key
约束时作用于表中字段上的,可以在创建表,修改表的时候添加约束
– 这是GPT给出的答案,因为我一开始觉得主键没啥用
`PRIMARY KEY`` 在关系型数据库中有几个重要的作用:
唯一性约束:**PRIMARY KEY** 用于确保表中的每行都有一个唯一的标识符。这意味着主键列中的值不能重复。这对于确保表中的每个条目都可以被唯一标识非常重要。
索引:定义主键还会自动创建一个索引。这使得在主键列上执行的搜索和连接等操作更加高 ...
Mysql基础篇-函数
函数是指一段可以直接被另一段程序调用的程序或代码
字符串函数
函数(字符大写)
功能
concat(s1,s2,…sn)
字符串拼接,将s1,s2…拼接成一个字符串
lower(str)
字符串str转化为小写
upper(str)
字符串str转化为大写
lpad(str,n,pad)
左填充,用pad字符串对str的左边进行填充,达到n个字符串长度
rpad(str,n,pad)
右填充,用pad字符串对str的右边进行填充,达到n个字符串长度
trim(str)
去点字符串头部和尾部的空格
substring
截取字符串str从start位置起的len个长度的字符串
123456789101112131415-- DataGrip 练习:-- 拼接select concat('hello','mysql');-- 小写大写select lower('Hello'); -- helloselect upper('hello'); -- HELLO-- 填充s ...
Mysql基础篇-DCL(不用重点掌握)
DCL 介绍: DCL是数据控制语言,用来管理数据库用户,控制数据库的访问权限
用户和数据库不一样噢:因为本身服务器的数据库为用户的登录设置各种权限。VIP。。。。
开发人员不用重点掌握
DCL-管理用户
查询用户
use mysql;
select * from user;
DataGrip的mysql数据库中有user表,里面可以直接检查到
创建用户
create user ‘用户名‘@‘主机名’ identified by ‘密码’;
创建完后 可以用cmd输入:
mysql -u ‘用户名’ -p
enter password: 。。。。
就可以了
12345-- 创建用户itcast , 只能够在当前主机localhost访问,密码123456create user 'itcast'@'localhost' identified by '123456' ; # 再查询用户表# 该用户只是创建但是并没有任何权限,访问不了其他的数据库-- 创建用户heima, 在任意主机上访问该数据库, 密码123 ...
DNS解析
DNS 域名解析系统在应用层上实现,注意:很多网络功能的实现都是通过接入网,节点层次去实现,而不是在网络核心中实现运行在udp之上,port=52## 具体实现> 规范主机名到IP> 主机别名到规范主机名> 邮件别名到邮件名通俗一点就是找到你要访问网址的服务器地址,不然怎么跟他沟通信息 ## 概念了解* DNS> 是由分成的DNS服务器实现的数据库> 某个应用层协议支撑DNS的运行* 主机名(!=计算机名)> 是一种主机(请求网址的服务器)的标识方法,主要是好记,例如(www.facebook.com), www 是服务器名(文件和邮件),facebook.com 是域名,一个主机名由服务器名和域名组成* 主机别名> 就是昵称,主机名是复杂的,所以用主机别名来标识自己* 规范主机名 就是主机名,比主机别名规范,所以叫规范主机名(hahaha)* IP地址 (简单)> 借鉴与本机的IP 127.0.0.1可以直到他是层状的,有着严格的层状结构,人们可以通过IP地址最终找到主机的网络地址* URL> 统一资源定位符, ...