一看就懂的MySQL教程
一看就懂的MySQL教程
- 一、安装
- 二、卸载
- 三、配置
- 1、MySQL服务启动
- 2、MySQL登录
- 3、MySQL 退出
- 四、SQL
- 1、什么是SQL
- 2、SQL通用语法
- 3、SQL分类
- 1)DDL
- 2)DML
- 3)DQL
- 4)DCL
- 五、DDL:操作数据库、表
- 1、操作数据库:CRUD
- 2、操作表
- 六、DQL:增删改表中的数据
- 1、添加数据
- 2、删除数据
- 3、修改数据
- 七、DQL:查询语句
- 1、语法:
- 2、基础查询
- 3、条件查询
- 4、排序查询
- 5、聚合函数
- 6、分组查询
- 7、分页查询
- 八、表的约束
- 1、概念
- 2、分类
- 1.主键约束:primary key
- 2.非空约束:not null
- 3.唯一约束: unique,值不能重复
- 4.外键约束:foreign key
- 九、多表操作
- 1、分类
- 十、三大范式
- 1、数据库设计的范式
- 概念
- 分类:
- 十一、数据库的备份和还原
- 十二、多表查询
- 1.查询语法
- 2.笛卡尔积
- 3.多表查询的分类
- 4.外连接查询
- 十三、子查询
- 1.概念:
- 2. 子查询不同情况
- 十四、事务
- 1.概念
- 2.操作
- 3.例子
- 4.MySQl数据库中事务默认自动提交
- 5.事务的四大特征
- 6.事务的隔离级别(了解)
- 十五、用户管理和权限管理
- 1.管理用户
- 2.权限管理
一、安装
直接网上下载,看着提示安装就行,要是看不懂英文,手机版的有道词典是个好东西,可以拍照翻译!!!
二、卸载
1、去mysql的安装目录找到my.ini文件
复制datadir = “路径名”
2、卸载mysql
3、删除C:/programdata目录下的MySQL文件夹(如果找不到就是被隐藏了,点击所在窗口左上方的查看—>选项—>查看—>找到隐藏文件和文件夹设置为显示隐藏文件)
三、配置
1、MySQL服务启动
法一:手动
右键点击我的电脑—>管理—>服务和应用程序—>服务—>找到MySQL,右键点击启动。
法二:
打开cmd命令,输入services.msc打开服务的窗口
法三:使用管理员打开cmd
- net start mysql :启动mysql的服务
- net stop mysql :关闭mysql的服务
2、MySQL登录
法 1: mysql -u root -p 密码
法 2:mysql -hip -u root -p 连接目标的密码
法 3:mysql – host = ip – user = root – password = 连接目标的密码
3、MySQL 退出
法1:exit
法2:quit
四、SQL
1、什么是SQL
Structured Query Language :结构化查询语言
其实就是定义了操作所有关系型数据库的规则,每一种数据库操作的方式存在不一样的地方,称为“方言”。
2、SQL通用语法
1、SQL语句可以单行或多行书写,以分好结尾
2、可使用空格和缩进来增强语句的可读性
3、MySQL数据的SQL语句不区分大小写,关键字建议使用大写
4、3种注释
**** 单行注释:-- 注释内容
或# 注释内容
(mysql特有)
**** 多行注释:/*注释 */
举例:
3、SQL分类
1)DDL
(Data Definition Language)数据定义语言
- 用来定义数据库对象:数据库、表、列等。
- 关键字:create, drop,alter 等
2)DML
(Data Manipulation Language) 数据库操作语言
- 用来对数据库表的数据进行增、删、改
- 关键字:insert 、 dalect 、 update等
3)DQL
(Data Query Language)数据查询语言
- 用来查询数据库中表的记录(数据)。
- 关键字:select 、where等。
4)DCL
(Data Control Language)数据控制语言
- 用来定义数据库的访问权限和安全级别,及创建用户。
- 关键字:Grant、 revoke等。
五、DDL:操作数据库、表
1、操作数据库:CRUD
c(Create):创建
创建数据库:create database 数据库名称;
**创建数据库,判断不存在,再创建:**
create database if not exists 数据库名称;
**创建数据库,并指定字符集:** create database 数据库名称 character set 字符集名; ==eg==:***创建db4数据库,判断是否存在,并制定字符集为gbk*** create database if not exists db1 character set gbk;
R(Retrieve):查询
查询所有数据库的名称:show databases;
查询某个数据库的字符集(查询某个数据库的创建语句):
show create database 数据库名称;
eg:
U(Update):修改
修改数据库的字符集:alter database 数据库名称 character set 字符集名称;
eg:
D(Delete):删除
删除数据库:drop database 数据库名称;
eg:
判断数据库存在,存在再删除(不会报错):drop database if exists 数据库;
eg:
使用数据库
查询当前正在使用的数据库名称:select database();
eg:
使用数据库,如果没有正在使用的数据库正在使用的会如上显示
有正在使用的数据库,会如上显示使用数据库:
use 数据库名称;
2、操作表
表举例:
C(Create):创建
1、语法:create table 表名(列名1 数据类型1,列名2 数据类型2,。。。。列名n 数据类型n);
注意:最后一列,不需要加逗号(,)
2、数据库类型(常用):
1、int:整数类型
age int
2、double : 小数类型
score double(5,2)[5是所有数字的总位数,2是小数的位数]
3、date:日期,包含年月日,yyyy-MM-dd HH:mm:ss
4、datetime:日期,包含年月日时分秒 yyyy- MM-dd HH:mm:ss
5、timestamp:时间错类型 包含年月日时分秒 yyyy-MM-dd HH:mm:ss
如果将来不给这个字段赋值,或赋值null,则默认使用当前的系统时间,来自动赋值
6、varchar:字符串name varchar(20): -- 姓名最大20个字符 -- zhangsan 8个字符 /张三 2个字符
创建表:
create table student(id int,name varchar(32),age int,score double(4,1),birthday date,insert_time timestamp);
复制表:
create table 表名 like 被复制的表名;
eg:
R(Retrieve):查询
查询某个数据库中所有表名称:alter tables ;
查询表结构:
desc 表名;
eg:
U(Update):修改
1、修改表名:alter table 表名 rename to 新的表名;
eg:
2、修改表的字符集:
alter table 表名 character set 字符集名称;
eg:
3、添加一列:
alter table 表名 add 列名 数据类型;
eg:
4、修改列表名称 、类型:
alter table 表名 change 列名 新列名 新数据类型; alter table 表名 modify 列名 新数据类型;
eg:
5、删除列:
alter table 表名 drop 列表;
eg:
D(Delete):删除
法1.drop table 表名; 法2.drop table if exists 表名;
eg:
六、DQL:增删改表中的数据
1、添加数据
语法:
insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n);
注意:
- 列名和值要一一对应。
- 如果表名后,不定义列名,则默认给所有列添值
insert into 表名 values(值1,值2,。。。值n);
- 除了数字类型,其他类型需要使用引号(单双都可以)引起来
eg:
2、删除数据
语法:
delete from 表名[ where 条件]
注意:
- 如果不加条件,则删除表中所有记录。
- 如果要删除所有记录
delete from 表名; -- 不推荐使用。有多少条记录就会执行多少次删除操作
truncate table 表名; -- 推荐使用,效率更高,先删除表,然后再创建一张一样的表。
eg:
3、修改数据
语法:
update 表名 set 列名1 = 值1, 列名2 = 值2,... [where 条件];
eg:
注意:
如果不加任何条件,则会将表中所有记录全部修改。
eg:
七、DQL:查询语句
select * from 表名;
1、语法:
select 字段列表from表名列表where条件列表group by分组字段having分组后的条件order by排序limit分页限定
2、基础查询
多个字段查询:
select 字段1,字段2,...from 表名;
注意:
如果查询所有字段,则可以使用*来代替字段列表。去除重复:
distinct
计算列:
1)一般可以使用四则运算计算一些列的值。(一般只会进行数值型的计算)
2)ifnull(表达式1,表达式2):null参与的运算,计算结果都为null
***表达式1:哪个字段需要判断是否为null
***如果改字段为null后的替换值。起别名:
as:as也可以省略
3、条件查询
- where字句后跟条件
- 运算符
<、>、<= 、>=、=、<>;
eg:
between…and;
in(集合);
like:模糊查询
占位符:
_:单个任意字符
%:多个任意字符is null;
and 或 &&;
or 或 ||;
not 或 !
举例:
建表:create table student(id int, -- 编号name varchar(20), -- 姓名age int, -- 年龄sex varchar(5), -- 性别address varchar(100), -- 地址math int, -- 数学english int -- 英语);
添加数据:
insert into student(id,name,age,sex,address,math,english) values(1,"马云",55,"男","杭州",66,78),(2,"n马化腾",45,"男","深圳",98,87),(3,"马景涛",55,"男","香港",56,77),(4,"柳岩",20,"女","湖南",99,99),(5,"柳青",20,"男","湖南",86,null),(6,"刘德华",57,"男","香港",99,99),(7,"马德",22,"女","香港",99,99),(8,"德玛西亚",18,"男","广东",56,65);
查询举例:
4、排序查询
语法: order by 子句
order by 排序字段1 排序方式1,排序字段2 排序方式2,......
- 排序方式:
ASC:升序,默认的
DESC:降序
注意:
如果有多个排序条件,则当前边的条件值一样时,才会判断第二条件。
5、聚合函数
概念:将一列数据作为一个整体,进行纵向的计算。
count:计算个数
1、一般选择非空的列:主键
2、count(*)max:计算最大值
min:计算最小值
sum:计算和
avg:计算平均值
eg: select max(math) from student; select min(math) from student; select sum(math) from student;
注意:
聚合函数的计算,排除null值。
解决方案:
1. 选择不包含非空的列进行计算
2. ifnull函数
6、分组查询
语法:
group by 分组字段;
可以取别名,方便一点:
注意:
- 分组之后查询的字段:分组字段、聚合函数
- where 和having的区别?
1. where在分组之前进行限定,如果不满足条件,则不参与分组。having在分组之后进行限定,如果不满足限定, 则不会被查询出来
2. where后不可以跟聚合函数,having可以进行聚合函数的判断。
7、分页查询
语法:
limit 开始的索引,每页查询的条数;
公式:
开始的索引 = (当前页码 - 1)* 每页显示的条数
eg:---- 每页显示3条记录select * from student limit 0,3; -- 第一页select * from student limit 3,3; -- 第二页select * from student limit 6,3; -- 第三页```
limit 是一个MySQL的"方言"
八、表的约束
1、概念
对表的数据进行限定,保证数据的正确性、有效性和完整性。
2、分类
1.主键约束:primary key
注意:
- 含义:非空且唯一
- 一张表只能有一个字段为主键
- 主键就是表中记录的唯一标识
在创建表时,添加主键约束
create table stu(id int primary key, -- 给id添加主键约束name varchar(20));
删除主键
-- 错误 alter table stu modify id intl;alter table stu drop primary key;
创建完表后,添加主键
alter table stu modify id int primary key;
自动增长:
概念:如果某一列是数值类型的,使用auto_increment 可以来完成值的自动增长
在创建表时,添加主键约束,并且完成自动增长
eg:
create table stu(id int primary key auto_increment, -- 给id添加主键约束name varchar(20));
注意:
自动增长,给选定值填入null是,会自动根据前一个数据加一删除自动增长
alter table stu modify id int;
添加自动增长
alter table stu modify id int auto_increment;
2.非空约束:not null
创建表时添加约束
create table stu( id int; name varchar(20) not null -- name为非空 );
创建完表后,添加非空约束
alter table stu modify varchar(20) not null;
删除name的非空约束
alter tble stu modify name varchar(20) ;
3.唯一约束: unique,值不能重复
创建表时,添加唯一约束
create table stu(id int,number varchar(20) unique --添加了唯一约束);
注意:
mysql中,唯一约束限定的列的值可以有多个null。删除唯一约束
alter table stu drop number;
在创建表后,添加唯一约束
alter table stu modify number varchar(20)unique;
4.外键约束:foreign key
功能:让表与表产生关系,从而保证数据的正确性。
在创建表时,可以添加外键
语法:create table 表名(...外键列constraint 外键名称 foreign key (外键列名称)references 主表名称(主表列名称) );
删除外键
alter table 表名 drop foreign key 外键名称;
创建表之后,添加外键
alter table 表名 add constraint 外键名称 foreign key (外键字段名称) references 主表名称(主列表名称);
级联操作
添加级联操作
语法:alter table 表名 add constraint 外键名称 foreign key (外键字段名称)references 主表名称(主列表名称)on update cascade / on delete cascade;
分类:
- 级联更新:on update cascade
- 级联删除:on delete cascade
九、多表操作
1、分类
1.一对一(了解)
- 如:人和身份证
- 分析:一个人只有一个身份,一个身份证只能对应一个人
- 实现方式:一对一关系实现,可以在任意一方添加唯一外键指向另一方的主键。
eg:
2、一对多(多对一)
- 如:部门和员工
- 分析:一个部门有多个员工,一个员工只能对应一个部门
- 实现方式:在多的一方建立外键,指向一的方向的主键。
eg:
3、多对多
- 如:学生和课堂
- 分析:一个学生可以选择很多课程,一个课程也可以被很多学生选择
- 实现方式:多对多关系实现需要借助第三张中间表
eg:
案例:
具体操作:
1.
-- 创建旅游线路分类表tab_category
-- cid 旅游线路分类主键,自动增长
-- cname旅游线路分类名称非空,唯一,字符串100
create table tab_category(cid int primary key auto_increment,cname varchar(100) not null unique);
-- 创建旅游路线表tab_route
/*
rid旅游线路主键,自动增长
rename旅游线路名称非空,唯一,字符串100
price价格
radate 上架时间,日期类型
cid外键,所属分类
*/
create table tab_route(rid int primary key auto_increment,rname varchar(100) not null unique,price double,cid int,foreign key(cid) references tab_category(cid));
-- 创建用户表tab_user
/*
uid用户主键,自增长
username用户名长度100,唯一,非空
password密码长度30,非空
name真实姓名长度100
birthday生日
sex性别,定长字符串1
telephone手机号,字符串11
email邮箱,字符串长度100
*/
create table tab_user(uid int primary key auto_increment,username varchar(100) unique not null,password varchar(30) not null,name varchar(100),birthday date,sex char(1) default"男",telephone varchar(11),email varchar(100));
-- 创建收藏表tab_favorite
/*
rid旅游路线id,外键
date收藏时间
uid用户id,外键
rid和uid不能重复,设置复合主键,同一个用户不能收藏同一个线路两次
*/
create table tab_favorite(rid int,date datetime,uid int,-- 创建复合主键primary key(rid,uid),forenign key (rid) references tab_route(rid),forenign key (uid) references tab_route(uid));
各表创建完后拖到架构设计器中,可以看到对应关系:
十、三大范式
1、数据库设计的范式
概念
设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。
目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。
其实简单一点就是建立各种外键或者拆分表,让所有数据唯一
分类:
第一范式(1NF):每一列都是不可分割的原子数据项
第二范式(2NF):在1NF的基础上,非码属性必须完全依赖于候选码(在1NF基础上消除非主属性对主码的部分函数依赖)
几个概念:- 函数依赖:A–>B,如果通过A属性(属性组)的值,可以确定唯一B的属性值,则称B依赖A
例如:学号–>姓名(姓名依赖于学号)。 (学号,课程名称)–>分数 - 完全函数依赖:A–>B,如果A是一个属性组,则B属性值的确定需要依赖A属性中所有的属性值。
例如:(学号,课程名称)–>分数 - 部分函数依赖:A–>B,如果A是一个属性组,则B属性值的确定只需要依赖于A属性组中某一些值即可。
例如:(学号,课程名称)–> 姓名 - 传递函数依赖:A–>B,B–>C. 如果通过A属性(属性组)的值,可以确定唯一B属性的值,在通过B属性(属性组)的值可以确定唯一C属性的值,则称C传递函数依赖于A
例如:学号–>系名,系名–>系主任 - 码:如果在一张表中,一个属性或属性组,被其他所有属性所完全依赖,则称这个属性(属性组)为该表的码。
例如:该表的码为:(学号,课程名称)
1、主属性:码属性组中的所有属性
2、非主属性:除过码属性组的属性
- 函数依赖:A–>B,如果通过A属性(属性组)的值,可以确定唯一B的属性值,则称B依赖A
第三范式(3NF):在2NF基础上,任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖)
第二范式能解决图中(即第一范式存在的)第一条问题
第三范式能解决第二和第三条问题
十一、数据库的备份和还原
- 命令行:
语法:
备份(在dos命令里输入):mysqldump -u用户名 -p密码 数据库名称 > 保存的路径
还原:
1. 登录数据库
2. 创建数据库
3. 使用数据库
4. 执行文件:source 文件路径
十二、多表查询
1.查询语法
select 列名列表
from表名列表
where......
准备SQL:
2.笛卡尔积
- 有两个集合A、B,取这两个集合的所有组成情况。
- 要完成多表查询,需要消除无用的数据
3.多表查询的分类
内连接查询:
1. 隐式内连接:使用where条件消除无用数据
例子:-- 查询所有员工信息和对应的部门信息 select * from emp,dept where emp."dept_id" = dept."id"; -- 查询员工表的名称,性别。部门表的名称 select emp.name,emp.gender,dept.name from emp,dept where emp."dept_id" = dept."id";select t1.name, -- 员工表的姓名 t1.gender, -- 员工表的性别 t2.name -- 部门表的名称 from emp t1, dept t2 where t1."dept_id" = t2."id";
显示内连接:
语法:select 字段列表 from 表名1 [inner] join 表名2 on 条件
例如:
select * from emp inner join dept on emp."dept_id" = dept."id"; select * from emp join dept on emp."dept_id" = dept."id";
内连接查询(注意事项):
1、 从那些表中查询数据
2、条件是什么
3、查询那些字段
4.外连接查询
左外连接:
语法:select 字段列表 from 表1 left [outer] join 表2 on 条件;
查询的是左表所有数据以及其交集部分
例子:-- 查询所有员工信息,如果员工有部门,则查询部门名称,没有部门,则不显示部门名称 select t1.*t2."name" from emp t1 left join dept t2 on t1."dept_id" = t2."id";
右外连接:
语法:select 字段列表 from 表1 right [outer] join 表2 on 条件;
查询的是右表所有数据以及其交集部分
例子:select t1.*t2."name" from dept t1 right join emp t1 on t1."dept_id" = t2."id";
十三、子查询
1.概念:
查询中嵌套查询,称嵌套查询为子查询。
```sql
-- 查询工资最高的员工信息
-- 1.查询最高的工资是多少 9000
select max(salary) from emp;
-- 2.查询员工信息,并且工资等于9000的;
select * from emp where emp."salary" = 9000;
-- 一条SQL就完成这个操作:子查询
select * from emp where emp."salary" = (select max(salary) from emp);
```
2. 子查询不同情况
子查询的结果是单行单列的:
子查询可以作为条件,使用运算符去判断。 运算符:> >= < <= =
例子:```sql-- 查询员工工资小于平均工资的人select * from emp where emp.salary < (select avg(salary) from emp);```
子查询的结果是多行单列的:
子查询可以作为条件,使用运算符in去判断。-- 查询“财务部”和“市场部”所有的员工信息select id from dept where name = "财务部" or name = "市场部";select * from emp where dept_id = 3 or dept_id = 2; ```用子查询:```sqlselect * from emp where dept_id in (select id from dept where name = "财务部" or name = "市场部");```
子查询的结果是多行多列的:
子查询可以作为一张虚拟表参与查询-- 查询员工入职日期是2011-11-11日之后的员工信息和部门信息 --子查询 select * from dept t1,(select * from emp where emp."join_date" > "2011-11-11") t2 where t1.id = t2.dept_id; -- 普通内连接 select * FROM emp t1,dept t2 where t1."dept_id" = t2."id" and t1."join_date" > 2011-11-11;
十四、事务
事务举例:
1.概念
如果一个包含步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败。
2.操作
- 开启事务:start transaction;
- 回滚:rollback;
- 提交:commit;
3.例子
添加数据:
4.MySQl数据库中事务默认自动提交
- 事务提交的两种方式:
- 自动提交
*mysql就是自动提交的
*一条DML(增删改)语句会自动提交一次事务。 - 手动提交:
*Oracle数据默认是手动提交事务
*需要先开启事务,再提交
- 自动提交
- 修改事务的默认提交方式:
查看事务的默认提交方式:
select @@autocommit; -- 1 代表自动提交 0代表手动提交
修改默认提交方式:
set @@autocommit = 0;
5.事务的四大特征
- 原子性:是不可分割的最小操作单位,要么同时成功,要么同时失败
- 持久性:当事务提交或回滚后,数据库会持久化保存数据
- 隔离性:多个事务之间,相互独立
- 一致性:事务操作前后,数据总量不变
6.事务的隔离级别(了解)
概念:多个事务之间隔离的,相互独立的。但是如果多个事务操作同一批数据,则会引发一些问题,设置不同的隔离级别就可以解决这些问题。
存在问题:
1. 脏读:一个事务,读取到另一个事务中没有提交的数据
2. 不可重复读(虚读):在同一个事务中,两次读取到的事务不一样
3. 幻读:一个事务操作(DML)数据表中所有记录,另一个事务添加了一条数据,则第一个事务查询不到自己的修改。隔离级别:
- read uncommitted:读未提交
产生问题:脏读、不可重复读、幻读 - read committed:读已提交(Oracle)
产生问题:不可重复读、幻读 - repeatable read:可重复读(MySQL默认)
产生问题:幻读 - serializable:串行化
可以解决所有问题
注意: 隔离级别从小到大安全级别越来越高,但是效率越来越低
数据库查询隔离级别:
select @@tx_isolation;
数据库设置隔离级别:
set globlal transaction isolation level 你别字符串;
设置隔离级别eg:
查看隔离级别:
- read uncommitted:读未提交
隔离案例:
第一个窗口表示张三,执行转账操作后并没有提交事务
第二个窗口代表李四,在张三没有提交事务的情况下查询到已经转账,然后写了欠条,具备法律效应了
但是,张三一回滚
李四第二次查账的时候发现钱没过来
但是这时候李四已经写下了具有法律效应的欠条,所以在没收到张三钱的情况下反倒欠张三500块
这就是脏读
上面的是第一隔离级别
——————————————————————————————
我们重新设置第二个隔离级别
这回在张三没提交之前,李四查询不到钱到账
只有当张三提交之后,李四才查询到修改的数据
——————————————————————————————
设置为第三隔离级别,同时开启事务
李四查询不到转账记录
当张三提交事务后李四还是查询不到记录
只有当李四也提交之后才能查询到记录
这样就解决了不可重复读的问题
——————————————————————————————
设置为第四个隔离级别
在张三还没提交时,李四不可以查询记录,光标一直在闪
只要张三一提交,李四立马就会显示查询结果
十五、用户管理和权限管理
1.管理用户
添加用户
语法:create user “用户名” @“主机名” identified by “密码”;
删除用户:
语法:drop user “用户名” @“主机名”;
修改用户密码:
update user password = password("新密码") where user = "用户名"; update user password = password("abc") where user = "lisi";
set password for "用户名"@"主机名" = password("新密码"); set password for "root"@"localhost" = password("123");
mysql中忘记了root密码怎么办?
1. cmd --> net stop mysql 停止mysql服务
需要管理员打开该cmd
2. 使用无验证方式启动mysql服务:mysql – skip - grant - tables
3. 打开新的·cmd窗口,直接输入mysql命令,敲回车。就可以登陆成功
4. use mysql;
5. update user set password = password(“你的新密码”) where user = “root”;
6. 关闭两个窗口
7. 打开任务管理器,手动结束mysql.exe的进程
8. 启动mysql服务
9. 使用新密码登录查询用户:
-- 1. 切换到mysql数据库 user mysql; -- 2.查询user表 select * from user;
通配符:% 表示可以在任意主机使用用户登录数据库
2.权限管理
查询权限
show grants for "用户名"@"主机名"; show grants for "lisi"@"%";
授予权限
grant 权限列表 on 数据库名.表名 to "主机名"; -- 给张三用户授予所有权限,在任意数据库任意表上 grant all on *.* to "zhangsan"@"localhost";
撤销权限
revoke 权限列表 on 数据库名.表名 from "用户名"@"主机名";revoke update on db3."account" from "lisi"@"%"
关于mysql就分享到这里,请继续关注小编哦~~
一看就懂的MySQL教程相关推荐
- 一看就懂的MySQL的FreeList机制
Hi,大家好!我是白日梦! 今天我要跟你分享的MySQL话题是:"了解InnoDB的FreeList吗?谈谈看!" 本文是MySQL专题的第 7 篇,共110篇. 一.回顾 前面几 ...
- 一看就懂的ReactJs教程
现在最热门的前端框架有AngularJS.React.Bootstrap等.自从接触了ReactJS,ReactJs的虚拟DOM(Virtual DOM)和组件化的开发深深的吸引了我,下面来跟我一起领 ...
- java还原三阶魔方_魔方小站四阶魔方教程2 一看就懂的魔方教程(魔方玩法视频教程+还原公式一步一步图解+3D动画)...
形成下图的样子, 这一步很简单,只需要学会一个很好理解的技术就行了,请看下面标准情况的例子,魔方 您可以用鼠标拖拽3D动画里的整个魔方,以看到魔方背面的变化. TR U' R U 我们要合并位于前面的 ...
- php - 超详细将 pdf 文档格式转换为图片格式,将 offce pdf 演示文稿转成图像 png / jpg(小白一看就懂的详细教程,附带完整示例源代码)
效果图 其他教程都有点乱而且有bug,本文站在新手小白的角度比较靠谱,超详细的完整流程及详细注释代码. 本文实现了 php 将 pdf 文档转为图片(png / jpg),完整流程及示例源代码, 你可 ...
- 前端app调起摄像头 只显示在页面_猫也能看得懂的教程之一分钟使用Vue搭建简单Web页面...
本教程适合人群: 已经了解过过html.js.css,想深入学习前端技术的小伙伴 有前端开发经验.但是没有使用过Vue的小伙伴 有过其他编程经验,对前端开发感兴趣的小伙伴 学习本教程之后你将会: 了解 ...
- 小白都能看懂的实战教程 手把手教你Python Web全栈开发(DAY 1)
小白都能看懂的实战教程 手把手教你Python Web全栈开发 Flask(Python Web)实战系列之在线论坛系统 第一讲 博主博客文章内容导航(实时更新) 更多优质文章推荐: 收藏!最详细的P ...
- c++ 结构体赋值_《零基础看得懂的C语言入门教程》—(十二)结构体是这么回事
一.学习目标 了解C语言的结构体的使用方法 了解C语言结构体的结构的赋值 了解多种C语言结构体变量的赋值方法和取值方法 目录 <零基础看得懂的C语言入门教程>--(二)简单带你了解流程 & ...
- python爬虫简单实例-最简单的Python爬虫案例,看得懂说明你已入门,附赠教程
原标题:最简单的Python爬虫案例,看得懂说明你已入门,附赠教程 这是最简单的Python爬虫案例,如果你能看懂,那么请你保持信心,因为你已经入门Python爬虫,只要带着信心和努力,你的技术能力在 ...
- 《零基础看得懂的C++入门教程 》——(10)面向对象
一.学习目标 了解C++类是什么 了解类对象与类型修饰一样进行创建 了解了类的属性如何使用 了解了类方法的使用方法 目录 预备第一篇,使用软件介绍在这一篇,C++与C使用的软件是一样的,查看这篇即可: ...
最新文章
- BZOJ3769:BST again(记忆化搜索DP)
- html支持了3种类型的按钮即,第3章HTML5.ppt
- TC工具后台模式_聊天能赚钱?来聊后台批量添加账号,伪装女性聊天赚钱内幕...
- C++ 获取文件大小
- sugarnms网管软件实用吗?
- 向量加减法首尾规律_向量加减口诀首尾相接
- 改名之后的 Java EE,现在有什么新进展?
- 浏览器从输入到输出的过程与原理一
- 使用Julia进行图像处理--使用形态学运算进行图像调整
- 《Python核心编程》第12章 习题
- 使用讯飞tts实现安卓语音中文合成播报
- c语言求闰年while,基础练习 闰年判断 c语言
- 阶乘的0 【南阳 oj 题目84】
- 毕业寄语 | 关于毕业季的温柔文案
- SuperMap BIM+GIS-Revit模型处理-背景
- Excel数据合并到统计分析自动处理的python示例(精益办公实战1)
- 智子观测宣布和数榜签约合作,强化大数据采集技术
- RHEL5.5下载地址及安装序列号
- APP (UniAPP) 微信支付回调的 HTTP_RAW_POST_DATA 报错情况 (wxpayv3)
- 【Gulimall】Spring Cloud:spring-cloud-gateway、spring-cloud-openfeign,Alibaba的注册+配置中心Nacos