MySQL从入门到精通教程,十年开发经验前端架构师

show engines 查询存储引擎

describe 数据表名 查看表结构,简写desc 查看单列 desc 数据表名 列名

modify 修改子句定义字段

show variables like “%char%”;------查看数据库编码

新建数据库

create database new_databases;

删除数据库

drop database new_database;

操作数据表

show tables;(需指定数据库,use 数据库)

show columns from 数据表 显示数据表属性,类型等其它信息

新建数据表

use new_databases; create table new_table( -> id int, -> username char(10));

if not exists 屏蔽错误

查询指定行 select * from 数据表 where 条件表达式

删除数据表

drop table new_table;

复制表

create table 数据表名

as like 源数据表名

不加as只是复制表的结构不复制内容

删除表

drop table 数据表名

删除多张数据表可用逗号“,”分隔

重命名表

rename table 源数据表名 to 新数据表名

可对多个数据表进行重命名,多个表之间用逗号“,”分隔

查看表数据

select * from 数据表

运算符

^开头

$结尾

mysql> select id=2,id,name,pwd from tb_admin;

±-----±—±----------±----+

| id=2 | id | name | pwd |

±-----±—±----------±----+

| 0 | 1 | mr | 111 |

| 1 | 2 | 肖承聪 | 222 |

| 0 | 3 | 张三 | 333 |

±-----±—±----------±----+

查看id等于2的,id等于2返回值为1,否则0

插入数据

  1. insert into 数据表 values(值1,值2…);-----------------------(完整插入)

insert into 数据表 (列1,列2…)values(值1,值2…);------------(部分插入)

insert into 数据表 (列1,列2,列3…)

values(值1,值1,值1)

,(值2,值2,值2)

,…

  1. insert into 数据表

set id=8,name=‘xiao’,pwd=888;-------------------(指定插入)

  1. 插入查询结果

insert into 数据库名.插入到的表

(列1,列2…)

select 列1,列2 from 插入到的表

修改数据

update 数据表 set 列=666 where 条件表达式

查询指定行 select * from 数据表 where 条件表达式

删除数据

delete from 数据表 where 条件表达式

truncate table 数据表名--------------清空数据表内容

更新数据

update new_table -> set id=2,username=“cat” -> where id =1;

数据查询

*代表所有列,可单独查列1,列2 之间用逗号隔开

查询一个数据表

select * from 数据表

查询表中的一列或多列

select 列1,列2 from 数据表

从一个表或者多个表获取数据

select 数据表1.列,数据表1.列,数据表2.列,数据表2.列 from 数据表1,数据表

查询指定数据

select * from 数据表 where 列=‘查询的内容’

select *from 表名 where 列 [not] in (元素1,元素2…)—not可选项 ,相反的意思

去空格查询

rtim

BETWEEN范围查询

select *from 数据表 where 列 [not] between 取值1 and 取值2

LIKE字符匹配查询

select * from 数据表 where 列 like ‘内容%’----------- %匹配一个或多个---------------- _匹配一个

IS NULL查询空值

select * from 数据表 where 列 is null

AND,OR多条件查询

select * from 数据表 where 条件1 and 条件2…-----需两个都满足

select * from 数据表 where 条件1 or 条件2…-----满足一个即可

DISTINCT去除结果中的重复行

select distinct 列 from 数据表

ORDER BY对查询结果排序

order by 字段名 [asc(升)|esc(降)]

GROUP BY 分组查询

in 查询(规定多值)=规定一个值

SELECT column_name(s)

FROM table_name

WHERE column_name IN (value1,value2,…);

LIMIT限制查询结果数量

select * from 数据表 order by id asc limit 3;

按照id 编号进行升序排序,显示前3条记录

select * from 数据表 order by id asc limit 1,2;

从编号1开始,查询两条记录

count()函数 查看()有多少记录

sum()函数 计算字段数值总和

avg( )函数 求表中某个字段取值的平均值

max()函数 求最大值

min()函数 最小值

连接查询

EXISTS 子查询 ,返回一个真假值,判断括号内的子查询是否真,真就执行外层查询

select *from 数据表 where exists (select * from 数据表 where id =27)

查询表中是否存在id值为27,存在则执行括号外层数据表内容

当exists与其它查询条件一起使用时,需使用and或者or来连接表达式exists关键字

UNION合并查询

select user from数据表1

union

select user from 数据表2---------------合并表1和表2user的内容去除重复值

union all 不去除重复项

定义表和字段的别名

为表取别名

select * from tb_program p where p.talk=‘PHp’;

tb_program表的别名为p;p.talk表示tb_program表中的talk字段

为字段取别名

select talk AS new from tb_program

正则表达式

字段名 regexp ‘匹配方式’

* 任意多少个

^开头

$结尾

. 匹配任意字符包括回车换行符

[字符集合] 匹配字符集中任意一个字符

[^字符集合] 匹配除字符集合以外的任意一个字符

s1|s2|s3 匹配s1,s2和s3中的任意一个字符串

+ 匹配多个该字符之前的字符,包括一个-----------‘j+a’;查询字段中a字符前面至少一个j字符的记录

字符串{n}匹配字符串出现n次

字符串{m,n}匹配字符串出现至少m次,最多n次

CREATE TABLE 时的 SQL PRIMARY KEY 约束

下面的 SQL 在 “Persons” 表创建时在 “P_Id” 列上创建 PRIMARY KEY 约束:

MySQL:CREATE TABLE Persons

( P_Id int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), PRIMARY KEY (P_Id) )

SQL Server / Oracle / MS Access:CREATE TABLE Persons

( P_Id int NOT NULL PRIMARY KEY, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255) )

ALTER TABLE 时的 SQL PRIMARY KEY 约束

当表已被创建时,如需在 “P_Id” 列创建 PRIMARY KEY 约束,请使用下面的 SQL:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Persons

ADD PRIMARY KEY (P_Id)

如需命名 PRIMARY KEY 约束,并定义多个列的 PRIMARY KEY 约束,请使用下面的 SQL 语法:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Persons

ADD CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName)

注释:如果您使用 ALTER TABLE 语句添加主键,必须把主键列声明为不包含 NULL 值(在表首次创建时)。

撤销 PRIMARY KEY 约束

如需撤销 PRIMARY KEY 约束,请使用下面的 SQL:

MySQL:

ALTER TABLE Persons

DROP PRIMARY KEY

SQL Server / Oracle / MS Access:

ALTER TABLE Persons

DROP CONSTRAINT pk_PersonID

常用函数

备份数据库

备份一个数据库(终端操作无需进入mysql)

mysqldump -uroot -p dbname table1 table2…>BackuoName.sql

dbname:数据库的名称

table1和table2参数表示表的名称,没有该参数时将备份整个数据库

BackNme.sql 参数表示备份文件的名称,文件名前可加一个绝对路径

使用rot用户备份tes数据库下的studen表

mysqldump -uroot -p test student >D:\student.sql

备份多个数据库

mysqldump -u username -p --databases dbname1 dbname2 >BackName.sql

加上databases这个选项,后面可以加上很多数据库的名称

备份所有数据库

mysqldump -u root -p --all -databases >D:\all.sql

数据恢复

mysql -uroot -p [dbname]

dbname 参数表示数据库名称

指定数据库名,表示还原该数据库下的数据表,不指定数据库名时,表示还原特定一个数据库

mysql -u root -p

表的导入与导出

musqldump

mysqldump -u root -p --xml dbname table >D:/name.xml

将website数据库下的jsj表导出为xml格式到D盘,文件名为xsgl.xml

mysqldump -u root -p --xml website jsj >D:/xsgl.xml

mysql

mysql -u root -p -e “select * from 语句” dbname >D:/sfzh.txt

使用-e选项就可执行sql语句,select用来查询记录

mysql -u root -p -e “select * from sfzh” website >D:/sfzh.txt

可用mysql导出xml文件和htnl文件

mysql -u root -p --xml或html -e “select * from sfzh” website >D:/sfzh.txt

存储过程与存储函数

创建存储过程

create procedure proc_name ([proc_parameter[…]])

[characteristic…] routine_body

sp_name参数时存储过程的名称;proc_parameter 表示存储过程的参数列表;characteristic参数指定存储过程的特性;routine_body 参数时sql代码的内容,可以用begin…end来标识sql代码的开始和结束。

proc_parameter中的参数由3部分组成,它们分别时输入输出类型,参数名称和参数类型。其中形式为[in | out | inout ]param_name type。param_name 参数时存储过程的参数名称;type参数指定存储过程的参数类型,可以为mysql数据库的任意类型。

mysql存储过程的语句块以begin开始,以end结束。内部以分号结束,分号“;”应更改为其它字符,更改结束标志可以用关键字delimiter定义,例如:将myql结束符设置为//

  • mysql>delimiter //

定义一个输出变量count_num,存储过程应用select语句从jsj表中获取记录总数,最后将结果传递给变量count_num。

show create count_of_student 查看存储过程

创建存储函数

create function sp_name ([proc_parameter[,…]])

returns type

[characteristic…] routine_body

参数

说明

sp_name

存储函数的名称

fun_parameter

存储函数的参数列表

returns type

指定返回值的类型

characteristic

指定存储过程的特性

routine_body

sql代码的内容

变量的应用

1.局部变量

declare a int

使用default为变量指定默认值

declare a int default 10

2全局变量(会话变量)

会话变量名以字符’@‘作为起始符

光标的应用

创建触发器

create trigger 触发器名 before | after 触发事件

on 表名 for each row 执行语句

for each row 表示任何一条记录上的操作满足触发事件都会触发该触发器(包括插入,更新,删除)

执行语句指触发器被触发后执行的程序

例:

创建一个由插入命令insert触发的触发器auto_save_time

(1)创建一个名称为timelog的表格

(2)创建名称为auot_save_time的触发器

定义了结束符为//

接下来通过向jsj表插入一条信息来查看触发器的作用

创建具有多条执行语句的触发器

create trigger 触发器名 before | after 触发事件

on 表名 for each row 执行语句

begin

执行语句列表

end

begin与end之间的多条执行语句需以结束分隔符“;”分开

创建一个delete触发多条执行语句的触发器delete_time_info

------创建timeinfo数据表

create table timeinfo( id int(11) primary key auto_increment, info varchar(50) not null )//

-------创建由delete触发多条执行语句的触发器 delect_time_info

create trigger delect_time_info after delete on jsj for each row begin insert into timelog(savetime)values(now()); insert into timeinfo(info)values(‘deleteact’); end //

---------执行delete并查看触发结果

查看触发器

show triggers;-------选择xsgl数据库查看该数据库中存在的触发器

select * from information_schema.triggers;-------查看数据库中所有触发器的详细信息

information_schema是mysql中默认存在的库

select * from information_schema.reiggers where trigger_name=‘触发器名称’;---------查看指定触发器内容

删除触发器

drop trigger 触发器名称;

事务的应用

MyISAM类型的数据表不能支持事务,只有InnoDB或BDB

create table table_name(field_defitions)type=innodb/bdb

table_name为表名,而field_defitions为表内定义的字段等属性,type指定数据表的类型,既可以是inodb也可以是bdb类型

alter table table_name type=innodb/bdb;----------在原有的数据表中可以更改支持的事务处理的类型

初始化事务

start transaction

创建事务

向名称为jsj的数据表插入一条记录,讲解事务的从创建。首先打开数据库,选定某个数据库,然后初始化事务,最后创建事务,向指定的数据表中添加记录

在用户插入新表为innodb类型或更新原来表类型为innodb时,输入命令却提示“The InnoDB feature is disabled;you need ‘InnoDB’ to have it working”警告,则说明InnoDB表类型并没有被开启,用户需要在MySQL文件目录下找到my.ini文件,定位skip_innodb选项位置,改为#skip_innodb后保存文件,重新启动MySQL服务器,即可令数据库支持innodb类型表。

提交事务

commit

因为事务具有孤立性,并未把结果写入磁盘中

撤销事务

rollback

如果执行一个回滚操作,则在start transction(初始化事务)命令后的所有SQL语句都将执行回滚操作。如果用户开启事务后,没有提交事务,则默认为自动回滚状态,既不保留用户之前的任何操作

事务的存在周期

从start transction指令开始直到用户输入commit结束

事务不支持嵌套,在多个事务中,它自动默认会提交前一个事务,在MySQL中很多命令都隐藏执行commit命令

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
img

Vue 面试题

1.Vue 双向绑定原理
2.描述下 vue 从初始化页面–修改数据–刷新页面 UI 的过程?
3.你是如何理解 Vue 的响应式系统的?
4.虚拟 DOM 实现原理
5.既然 Vue 通过数据劫持可以精准探测数据变化,为什么还需要虚拟 DOM 进行 diff 检测差异?
6.Vue 中 key 值的作用?
7.Vue 的生命周期
8.Vue 组件间通信有哪些方式?
9.watch、methods 和 computed 的区别?
10.vue 中怎么重置 data?
11.组件中写 name 选项有什么作用?
12.vue-router 有哪些钩子函数?
13.route 和 router 的区别是什么?
14.说一下 Vue 和 React 的认识,做一个简单的对比
15.Vue 的 nextTick 的原理是什么?
16.Vuex 有哪几种属性?
17.vue 首屏加载优化
18.Vue 3.0 有没有过了解?
19.vue-cli 替我们做了哪些工作?

算法

  1. 冒泡排序
  2. 选择排序
  3. 快速排序
  4. 二叉树查找: 最大值、最小值、固定值
  5. 二叉树遍历
  6. 二叉树的最大深度
  7. 给予链表中的任一节点,把它删除掉
  8. 链表倒叙
  9. 如何判断一个单链表有环
  10. 给定一个有序数组,找出两个数相加为一个目标数

由于篇幅限制小编,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!有需要的程序猿(媛)可以帮忙点赞+评论666

…(img-YYAi2U2N-1712098218751)]
[外链图片转存中…(img-g0rh3QBk-1712098218751)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
[外链图片转存中…(img-9gnwkhL2-1712098218751)]

Vue 面试题

1.Vue 双向绑定原理
2.描述下 vue 从初始化页面–修改数据–刷新页面 UI 的过程?
3.你是如何理解 Vue 的响应式系统的?
4.虚拟 DOM 实现原理
5.既然 Vue 通过数据劫持可以精准探测数据变化,为什么还需要虚拟 DOM 进行 diff 检测差异?
6.Vue 中 key 值的作用?
7.Vue 的生命周期
8.Vue 组件间通信有哪些方式?
9.watch、methods 和 computed 的区别?
10.vue 中怎么重置 data?
11.组件中写 name 选项有什么作用?
12.vue-router 有哪些钩子函数?
13.route 和 router 的区别是什么?
14.说一下 Vue 和 React 的认识,做一个简单的对比
15.Vue 的 nextTick 的原理是什么?
16.Vuex 有哪几种属性?
17.vue 首屏加载优化
18.Vue 3.0 有没有过了解?
19.vue-cli 替我们做了哪些工作?

[外链图片转存中…(img-wfvwP7HZ-1712098218752)]

算法

  1. 冒泡排序
  2. 选择排序
  3. 快速排序
  4. 二叉树查找: 最大值、最小值、固定值
  5. 二叉树遍历
  6. 二叉树的最大深度
  7. 给予链表中的任一节点,把它删除掉
  8. 链表倒叙
  9. 如何判断一个单链表有环
  10. 给定一个有序数组,找出两个数相加为一个目标数

    [外链图片转存中…(img-Vb6okpHg-1712098218752)]

由于篇幅限制小编,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!有需要的程序猿(媛)可以帮忙点赞+评论666

  • 10
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值