数据库应该怎么学习,零基础 。1、 自己在windows和linux上安装了mysql,自学linux的基础知识,学习mysql的最基础的知识,即怎么写sql , 存储过程,表的设计等,从0到熟悉大概花了3个月 ,推荐《mysql入门很简单》 。
2、系统地较为深入地学习mysql的sql优化,备份和恢复,参数优化,架构优化,硬件层面的优化,高可用方案,复制技术等等,这段时间你不一定能实际接触到这些,就像我当初那样,肯定没什么公司招一个小白 。
我选择自己看书,推荐《高性能mysql》,里面所有的章节都需要看一遍,以现在的水平肯定看不懂,但需要知道大概怎么回事 , 为后续的找mysql初级dba的工作打一个铺垫,这个过程大概也需要3个月 。
3、 纸上得来终觉浅,完成以上两步 , 我开始准备找一份mysql相关的工作,而不是天天用着excel表格做着select * from table_sb这样的工作 。
当然我这么猥琐的人肯定不会裸辞 , 该画的电路板也一样画,业余时间开始投初级mysql dba的工作 , 并且不间断地学习 , 网上各种找mysql面试的相关题目(实际上我当时完全没有任何实战经验),陆续收到一些面试,凭借之前自学的mysql知识,开始胡乱吹牛逼,先混进去再说 。
你不做mysql实际相关的工作,永远也不知道自己之前认知的db知识有多幼稚 。
友情提示一点,一般公司都没有专职dba的,所以面试的时候一定要自信,其实你学了这么多 , 虽然毫无实战经验,理论知识很大概率比面试你的人牛逼,所以各种吹,我就这样真正进入初级dba的圈子(由于这时对linux还处于cd ls的水平 , 所以之前也根本没做过运维),这个边工作边找工作的过程又持续了2个月 。
4、真正进入互联网,接触生产环境后 , 这是我进步最大的时候 。
第一步需要将之前所学真正地应用起来 , 并且应用的过程中,再回头看之前的书籍,这时候需要真正去理解,而不是似是而非,一知半解 。
这时再推荐《高性能mysql 第三版》 , 全本再看一遍 , 这时需要全部看懂,另外还有《mysql技术内幕:innodb存储引擎》等等 。
总之这段时间就需要开始关注mysql一些细节了,比如db故障处理,高可用,负载均衡等等的具体实现了 。
另外,linux的知识同步也要深入去学习 , 至少会写shell脚本,常见的linux知识等 , 我在这花了1年多;
5、dba的工作一般是非常轻闲的 , 毕竟不是大公司,技术能力有限,该学的也学得差不多了,接触不到海量数据,高并发等比较锻炼人的场合 , 于是我又准备跳了 。
于是来了公有云 , 现在每天运维万多个db实例,平均每天处理5 个紧急db故障 , 几乎mysql会遇到的问题,感觉都遇到了,能感觉到技术实力和经验也在每天都在积累,在进步 。
但是感觉还是欠缺了很多,下一步就看你选择了,是再去研究源代码 , 底层原理的东西多点 , 还是数据库运维和应用多一点,就比如业界姜承尧 , 何登成与叶金荣的区别 。
由于我的历史原因,对c等几乎不懂 , 平时也用不到,所以看代码等事实际太累,于是我再去学mongodb , 接了公司mongodb运维的活,算是在广度上的一个扩展,万一哪天mysql不行了呢
6、 总之,对于db小白来说,最重要的一点就是,学习的过程不能断 。
PS上面的方法比较野路子 , 适合没什么基础的童鞋,如果本来就是DBA,比如从oracle转到mysql,那么建议直接看mysql官方文档 , 而官方文档是db达到一定水平后必看,出问题时必查的权威文档 。
怎样学习sqlSQL学习路线
1、下载安装MySQL,或者安装软件phpstudy(这个软件自带了mysql数据库,而且安装启动方便) 。
2、我这里用的是phpstudy,打开phpstudy后,点击下图中的启动 , 点击后数据库服务就会启动了
3、下载安装Navicat软件
这个软件可以轻松连接数据库,我们可以在这个软件中练习学习SQL语法
4、使用Navicat建立数据库连接
点击文件——新建连接,连接名随便填写,比如写“本地” 。主机名、端口都不需要修改,用户名和密码都是root(因为我们安装的phpstudy里的mysql默认用户名密码就是root),点击连接测试显示为成功后点确定保存 。
以后再次访问时 , 双击即可 。
5、下载习题进行学习,内含习题需要用到的数据表 。
6、导入第5步中下载的数据表 。(后台回复关键词“SQL”获得)
右击第4步中的“本地”,新建一个数据库test1 , 双击打开新建的数据库(打开后颜色是绿色) 。
拖拽刚才下载的数据表文件(sqltest1.sql)到test1上面 。
这时会出现上述弹窗 , 点击开始,等待导入完成后,点击关闭
在左侧空白处右击,选择“刷新”,即可看到刚才导入的数据表了 。
7、打开sql语法编辑器
如下图点击查询——新建查询,在空白处输入sql语法 , 点击运行 , 如果输入错误会有报错,输入正确则会返回查询内容 。
8、边做边学
打开第一部分习题,边做边学,通过查询w3c的sql语法手册完成
9、巩固练习
尝试不看sql语法手册,独立完成第二部分习题 。
以上是sql的学习路径 。
MySQL能去哪里学习?首先 , 学习基本的SQL语法 。完成这个后,你就可以编写SQL语句了 。这一步推荐:W3Schools的 SQL 教程 。
其次,学习数据库的主要功能和使用方法 , 比如用户相关或者权限相关等等 。
我推荐两本书:
一、《MySQL必知必会》 这本书讲的非常全,从基本概念,到查询到插入新建表,用户的管理 , 都有具体的例子,非常适合没有任何基础的同学来学习Mysql,总之这本书学习的方法就是:1、十分钟了解下数据库的基本概念 2、找到练手的数据库 3、对照着上面的内容去敲 。本书里也有大量的内容是讲sql的,可以结合w3c的sql教程一起 , 有取舍地看 。
二、《数据库系统概念》这本书是dba必看的 。看完这些并且实践 思考之后 , 可以算入门了 。接下来对于希望深入学习的童鞋我推荐几本书(很多大神都这么推荐),《高性能MySQL(第3版)》、 《MySQL技术内幕(第4版)》,《MySQL技术内幕 InnoDB存储引擎》,《深入理解MySQL》还有Mysql的官网 。读完这些东西,再加些丰富的经验,理论上来讲就具备DBA的水平了 。十分推荐阅读Planet MySQL上汇总的博客,特别是Percona's MySQLInnoDB performance and scalability blog但是,正如我开头所言的 。
面对问题的时候一定要积极思考!比如:我问你,面对一个并发量比较高的场景,如何配置mysql的连接数?你可能会回答:“哦,就是调高max_connection的数值吧 。”那,你有没有思考过调到多少是最合适的呢?为什么这样设置就最合适呢?也许你会回答:“恩我知道,可以看系统之前的max_used_connection的数值,然后来设置 。也可以调高back_log的值 。”那你有没有思考过,max_connection连接数太高会有什么不好的影响呢?back_log设置的太高有什么不好的地方呢?max_connect的上限其实是取决于mysql能获得的文件描述符的数量,也就是说你就算设置成10000,最后也是没用的,系统会根据机器的情况自动调低 。也许你会回答:“恩我知道 , 设置太高,会有系统开销...”那你有没有思考过,这些开销具体是什么呢?是什么工作导致了需要这些内存开销?也许你还会回答,在连接创建的时候,会立刻为它分配连接缓冲区以及查询缓冲区 , 这些都会吃内存 。那你有没有思考过,占据的资源具体是多少呢?取决于哪些因素呢?好了,我们先结束这个问题 。回到知乎的问题上来,其实我说了这么多,就是表达要如何自学mysql 。所以的所以,你必须不断思考,才能在工作中面对具体场景的时候,非常淡定地推断:“哦,一定是这里出了问题 。应该怎么怎么做 。”面对问题,拿出打破砂锅问到底的精神,先思考一番,给出自己的假设,不要着急地去找度娘,谷歌 。思考过后 , 带着你的推断或者答案,大胆地去搜索吧!去看看别人的见解 , 去看看官方的描述!这才是一个工程师应有的态度 。最后我想给出一些有价值的学习资料 。可以省去一些时间 。-电子书:我认为多看书还是有好处的 。有些书值得反复看许多遍,有时候只看一遍无法深刻理解吸收,思考也不够充分
如何熟练 mysql多看书 。少用工具,多在命令窗口下管理数据库,自然而然就会熟悉的 。
mysql功能并不像Oracle那样复杂 。官方的帮助文档永远是最好的老师 。
经过一段时间的学习,你只要看几遍文档,好好操作 , 你离DBA就接进一步了 。
加油吧
mysql听不懂,该如何下手?可以试着从单词名开始,比如很多查询语句,数据库的内连关系...他们的命名都跟单词词义有关,只要读懂了单词的语义,你基本就能看懂SQL语句了 , 而这时候你就单纯的停留在看懂但不会写的层次上 。
网上花一些时间进行SQL简单习题的练习,坚持2个星期就有效果了
如何更好地学习Mysql数据库UPDATE worker_view4 SET name='hi';
ERROR............The target table worker_view4 of the UPDATE is not updatable.
(4)视图中怎么练mysql的SELECT中包含子查询 。
CREATE VIEW worker_view5(name)
AS SELECT (SELECT name FROM worker);
UPDATE worker_view5 SET name = '刘佳';
该视图中包含了子查询 , 因此也是不能更新的 。
(5)由不可更新的视图导出的视图 。
CREATE VIEW worker_view6
AS SELECT * FROM worker_view5;
UPDATE worker_view6 SET name = '王仔';
因为worker_view6是不可更新的视图,所以worker_view6也不可以更新的视图 。使用UPDATE语句更新时,会出现系统报错 。
(6)创建视图时,ALGORITHM为TEMPTABLE类型 。
CREATE ALGORITHM=TEMPTABLE
VIEW worker_view7
AS SELECT * FROM worker;
UPDATE worker_view7 SET name = '王仔';
因为该视图ALGORITHM为TEMPTABLE类型,所以worker_view7不可以更新的视图 。TEMPTABLE类型就是临时表类型 。系统默认临时表是不能更新的 。
(7)视图对应的表上存在没有默认值的列,而且该列没有包含在视图里 。例如,表中包含的name字段没有默认值,但是视图中不包含该字段 。那么这个视图是不能更新的 。因为,在更新视图时,这个没有默认值的记录将没有值插入,也没有NULL值插入 。数据库系统是不会允许这样的情况出现的,数据库系统将会阻止这个视图更新 。
注意:视图中虽然可以更新数据,但是有很多的限制 。一般情况下,最好将视图作为查询数据的虚拟表,而不要通过视图来更新数据 。因为 , 使用视图更新数据时,如果没有全面考虑在视图中更新数据的限制,可能会造成数据更新失败 。
除了上述条件不能更新视图以外,WITH[CASCADED|LOCAL]CHECK OPTION也将决定视图能否更新 。"LOCAL"参数表示更新视图时要满足该视图本身的定义的条件即可怎么练mysql;
8.6 删除视图
删除视图是指删除数据库中已经存在的视图 。删除视图时 , 只能删除视图的定义 , 不会删除数据 。MYSQL中 , 使用DROP VIEW语句来删除视图,不会删除数据 。MySQL中,使用DROP VIEW语句来删除视图 。但是,用户必须拥有DROP权限 。
DROP VIEW[IF EXISTS] 视图名列表 [RESTRICT|CASCADE]
实例一:
SELECT Drop_priv
FROM mysql.user
WHERE user='root';
CREATE VIEW worker_view_del1
AS SELECT * FROM worker;
CREATE VIEW worker_view_del2
AS SELECT * FROM worker;
CREATE VIEW worker_view_del3
AS SELECT * FROM worker;
DROP VIEW IF EXISTS worker_view_del2, worker_view_del3;
8.7 本章实例
在test数据库中work_info表上进行视图操作 。
1. 在test数据库中work_info表
2. 插入记录
3. 创建视图info_view
4. 查看视图info_view的基本结构和详细结构
5. 查看视图info_view的所有记录
6. 修改视图info_view
7. 更新视图
8. 删除视图
work_info表的结构
字段名 字段描述 数据类型 主键 外键 非空 唯一 自增
id 编号 INT(10) 是 否 是 是 否
name 姓名 VARCHAR(20) 否 否 是 否 否
gender 姓别 VARCHAR(4) 否 否 是 否 否
age 年龄 INT(5) 否 否 否 否 否
address 家庭住址 VARCHAR(50) 否 否 否 否 否
tel 电话号码 VARCHAR(20) 否 否 否 否 否
work_info表中的内容
id name gender age address tel
1 张三 M 18 北市市海淀区 01-155151
2 李四 M 22 北京市昌平区 01-215151
3 王五 F 17 湖南省永州市 025-545845
4 赵六 F 25 辽宁省阜新市 0625-514545
(1) 创建work_info表
USE test;
CREATE TABLE IF NOT EXISTS work_info (
id INT(10) NOT NULL UNIQUE PRIMARY KEY,
name VARCHAR(20) NOT NULL,
gender VARCHAR(4) NOT NULL,
age INT(5),
address VARCHAR(50),
tel VARCHAR(20)
) DEFAULT CHARSET=utf8;
(2)向work_info表中插入几条记录 。
INSERT INTO work_info VALUES
(1, '张三', 'M', 18, '北市市海淀区','01-155151'),
(2,'李四', 'M', 22, '北京市昌平区', '01-215151'),
(3,'王五','F',17,'湖南省永州市','025-545845'),
(4,'赵六','F',25,'辽宁省阜新市','0625-514545');
(3) 创建视图info_view 。从work_info表中选出age20的记录来创建视图 。视图的字段包括id、name、gender和address 。ALGORITHM设置为MERGE类型 。加上WITH LOCAL CHECK OPTION条件 。
CREATE ALGORITHM=MERGE
VIEW info_view(id, name, gender, address)
AS SELECT id, name, gender, address
FROM work_info
WHERE age20
WITH LOCAL CHECK OPTION;
(4)查看视图info_view的基本结构和详细结构 。
SHOW CREATE VIEW info_view \G
(5)查看视图info_view的所有记录 。
SELECT * FROM info_view;
(6)修改视图info_view,使其显示age20的信息,其怎么练mysql他条件不变 。
ALTER ALGORITHM=MERGE
VIEW info_view(id, name, gender, address)
AS SELECT id, name, gender, address
FROM work_info
WHERE age20
WITH LOCAL CHECK OPTION;
(7)更新视图,将id为3的记录进行更新 。设置其gender为M 。
UPDATE info_view SET gender='M' WHERE id=3;
(8)删除视图 。
DROP VIEW info_view;
8.8 上机实践
题目要求:
(1)在数据库example下创建college表 。
(2)在college表上创建视图college_view 。视图的字段包括student_num、student_name、student_age和department 。ALGORITHM设置为UNDEFINED类型 。加上WITH LOCAL CHECK OPTION条件 。
(3)查看视图college_view的详细结构 。
(4)更新视图 。向视图中插入三条记录 。
(5)修改视图,使其显示专业为"计算机"的信息,其怎么练mysql他条件不变 。
(6)删除视图college_view 。
college表的结构
字段名 字段描述 数据类型 主键 外键 非空 唯一 自增
number 学号 INT(10) 是 否 是 是 否
name 姓名 VARCHAR(20) 否 否 是 否 否
major 专业 VARCHAR(20) 否 否 是 否 否
age 年龄 INT(5) 否 否 否 否 否
college_view表的内容
student_num student_name student_age department
0901 张三 20 外语
0902 李四 22 计算机
0903 王五 19 计算机
USE example;
CREATE TABLE college(
number INT(10) NOT NULL UNIQUE PRIMARY KEY,
name VARCHAR(20) NOT NULL,
major VARCHAR(20) NOT NULL,
age TINYINT(3)
) DEFAULT CHARSET=utf8;
CREATE ALGORITHM=UNDEFINED
VIEW college_view(student_num, student_name, student_age, department)
AS SELECT number, name, age, major
FROM college
WITH LOCAL CHECK OPTION;
SHOW CREATE VIEW college_view \G
INSERT INTO college_view VALUES
(0901, '张三', 20, '外语'),
(0902, '李四', 22, '计算机'),
(0903, '王五', 19, '计算机');
CREATE OR REPLACE ALGORITHM=UNDEFINED
VIEW college_view(student_num, student_name, student_age, department)
AS SELECT number, name, age, major
FROM college
WHERE major='计算机'
WITH LOCAL CHECK OPTION;
【怎么练mysql 怎么练马甲线】关于怎么练mysql和怎么练马甲线的介绍到此就结束了 , 不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
推荐阅读
- ppt2016怎么模板,ppt怎样用模板
- 苹果ios12.1耗电怎么样,ios1212耗电吗
- 情感书单无人直播,情感主播必看的书
- vb.net累加和 vb累加累乘算法
- 下载广告,爸爸去哪儿2下载广告
- word锁定怎么编辑,锁定word文档怎么编辑
- 国外服务器怎么配置php环境,国外服务器怎么配置php环境信息
- go语言自动加qq go语言自举
- wordpress读什么,wordpress是什么