Questions tagged «mysql»

MySQL是一个开放源代码的关系数据库管理系统。

4
如何真正掌握MySQL?
我使用mysql的时间与使用PHP的时间相同。但是我对PHP的信心提高了10倍;或任何其他编程语言。但是我似乎无法真正掌握SQL。我的意思是,我可以选择,更新,插入,删除,加入等,但是涉及到更复杂的内容时,我会迷失方向。如何编写更复杂的select语句,如何正确使用索引,使用哪个引擎等。 由于某些原因,我真的很难遵循mysql文档,但是php易于遵循。 我开始认为,也许我的大脑只是以某种方式使编程成为可能,但是SQL却使人困惑。我不知道。大多数人认为Regex是如此令人困惑,但对我而言,它比如何构造sql语句更具科学意义。请不要误会我的意思,我不是讨厌SQL,我真的很喜欢它,我只是想更好地理解它。 真正掌握MySQL的最佳/最快方法是什么? 当我说“大师”时,我并不是指大师中的大师,我的意思是足够聪明,可以在不需要帮助的情况下解决我对SO提出的大多数问题。
13 mysql 


5
关于Web开发角色的服务器,我需要了解什么?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 6年前关闭。 我知道这听起来可能有点含糊,所以我将尝试进一步解释... 在从事自营开发人员多年之后,我现在正在寻找商业Web开发人员。我对服务器和托管的唯一经验是通过FTP上传并使用CPanel / WHM。我要使用的角色是Web开发PHP,MySQL,HTML,CSS类型角色,但是在最近的采访中,有人问我有关在服务器上进行设置的问题,我不知道在说什么...这不理想! 在不了解更多信息的情况下,很难解释我到底想学什么,但是基本上,这只是我作为Web开发人员应该知道的服务器元素?如果您是Web开发人员,除了上载文件之外,您还可以处理服务器吗?Web开发团队是否经常设置诸如Subversion(SVN)和版本控制系统之类的东西,这就是他们所说的吗?

2
如何临时保存查询结果,以用于另一个?
我有这个问题,我想您可能会帮助我。 PS:我不确定如何称呼它,所以如果有人找到一个更合适的标题,请进行编辑。 背景 我正在使用此应用程序搜索公交线路。 总线是3位数字,并且是唯一的,永远不会改变。 要求是能够搜索从站点A到站点B的线路。 用户界面已经成功提示用户仅使用有效的站点名称。 要求是能够显示一条路线是否有一条直线,如果没有,则显示2条甚至3条线的组合。 例: 我需要从A点到达D点。该程序应显示: 如果有一条直线AD。 如果不是,则显示2行组合,例如AC,CD。 如果没有任何2行组合,请搜索3行组合:AB,BC,CD。 当然,该应用程序应显示总线线路号以及何时切换总线。 是)我有的: 我的数据库结构如下(简化后,实际的数据库包括位置和时间等信息): +-----------+ | bus_stops | +----+------+ | id | name | +----+------+ +-------------------------------+ | lines_stops_relationship | +-------------+---------+-------+ | bus_line | stop_id | order | +-------------+---------+-------+ 在哪里lines_stops_relationship描述公交线路和车站之间的多对多关系。 顺序,表示止损单行显示的顺序。并非所有的行都来回移动,并且顺序具有含义(顺序2的A点在顺序1的B点之后)。 问题 我们找出一条线是否可以轻松通过该路线。只需搜索一条以正确顺序穿过两个点的直线。 如何找到2/3线组合?我当时想搜索一条与源站点相匹配的线,与目标站点相匹配的线,以查看是否可以在它们之间找到一个公共站点,以便用户可以切换公交车。我怎么记得那站? 3行组合更加棘手,我找到了一条线作为源,一条线用于目的地,然后呢?我想搜索一条有2个停靠点的线,但是,我又如何记住停靠点? tl; dr 我如何记住查询结果才能再次使用?我希望在单个查询中实现此目的(对于每个查询,都是针对1行路线的查询,针对2行的查询以及针对3行组合的查询)。 注意:我不介意有人建议使用与我完全不同的方法,我愿意接受任何解决方案。 …
12 php  mysql  routing 

3
在MySQL数据库中对关系数据进行版本控制的模式?
我正在尝试为项目找到一种方法,用户可以在其中编辑记录,并能够查看这些记录的过去版本。这是一个使用列表的简化示例架构: TABLE list ( id int auto_increment primary key, user_id int, title varchar(255) ); TABLE list_tasks ( id int auto_increment primary key, list_id int, title varchar(255), order int, is_complete tinyint ); 因此,用户可能会进来并对列表进行几次编辑(例如,添加或删除任务,重新排序任务,标记某些任务完成,重命名任务等),然后保存它们。此时,我想生成列表和任务的“版本2”,并让他们能够查看以前的版本,但是当他们访问列表时,请始终获取最新版本。 是否存在用于以这种方式在MySQL数据库中处理版本控制数据的通用方法/设计模式?
12 mysql  versioning 

5
什么时候最好将工作卸载到RDBMS而不是用代码完成?
好的,我会解决的:我是一个比数据库更好的编码器,而且我想知道关于“最佳实践”的想法是关于在SQL查询中还是在SQL查询中进行“简单”计算的。代码,例如此MySQL示例(我没有编写它,我只需要维护它!)-这将返回用户名,以及用户从上次事件开始的年龄。 SELECT u.username as user, IF ((DAY(max(e.date)) - DAY(u.DOB)) < 0 , TRUNCATE(((((YEAR(max(e.date))*12)+MONTH(max(e.date))) -((YEAR(u.DOB)*12)+MONTH(u.DOB)))-1)/12, 0), TRUNCATE((((YEAR(max(e.date))*12)+MONTH(max(e.date))) - ((YEAR(u.DOB)*12)+MONTH(u.DOB)))/12, 0)) AS age FROM users as u JOIN events as e ON u.id = e.uid ... 与在代码中进行“繁重”的提升相比: 查询: SELECT u.username, u.DOB as dob, e.event_date as edate FROM users as u JOIN events …
12 php  mysql 

1
从原点向外产生最大边数为3的边和顶点的算法
我正在为一个网站创建2D游戏,在该网站上,宇宙可以变得非常大(基本上是无限大)。最初,宇宙由6个与原点(0,0)等距离的恒星组成。我的任务是能够生成更多的恒星,这些恒星将具有相互连接的“路径”(边缘)。如何设计满足以下限制的算法: 恒星是向外随机产生的。(例如,新星的(x,y)坐标将在所有方向上从(0,0)缓慢向外移动,最好采用螺旋格式) 边缘不会交叉。 尽管应该有一些差异,但新星不应与其他星相距太远或太近。(例如必须有一个最小半径) 星星/点的倍数不得超过3。 鉴于所有这些都将存储在数据库中,该算法不会太昂贵。换句话说,我很想达到O(n)的复杂度(我不知道这是否可行)。 本质上,我要寻找的是一个螺旋状的星系,其中的恒星是图形上的点,恒星之间的行进由这些恒星之间的边缘描绘。 我需要解决的特定步骤是: 在尚未重合3的其他恒星附近随机产生一个点。 查找尚未有多重度3且不会产生边缘冲突的第一颗恒星。 如果星形距离最小x单位,则在两点之间创建一条边。 我尝试寻找解决方案,但是我的数学技能(以及关于图论的知识)需要大量工作。此外,将不胜感激与此问题有关的任何资源/链接。 这是我在想的一些伪代码,但是我不确定这是否还能奏效,并且我确定在经过10,000次等运算后,它的性能将无法令人满意。 newStar = randomly generated (x, y) within radius of last star from origin while(newStar has not been connected): for (star in the known universe): if(distance between newStar and star > x units): if(star has < 3 multiplicity): …

1
社交网络通知系统
背景 我正在为包含一些社交网络功能的客户端开发应用程序。我原本是在开发移动前端,但当时的情况也让我负责开发后端。 作为一般背景,我们的系统允许用户关注其他用户,并收到有关他们关注的人的通知,这是您期望从社交网络获得的。需要注意的是,只有一小部分用户(最多几百个)是可追踪的,并期望大多数用户群将关注这些个人中的至少一个。 在用户界面侧,我们将有一个带有数字的通知按钮,单击该按钮将带您进入通知屏幕。 问题 我一直在研究实现通知的策略,发现的大多数资源都指向在数据库中创建一个或多个通知表。(我喜欢的一个示例是此处接受的答案:https : //stackoverflow.com/questions/9735578/building-a-notification-system)。 让我烦恼的是,大多数数据库驱动的通知策略都要求为每个关注者的每个通知插入一行。因此,如果有一千人在关注​​Sally,我们将在相应表中插入一千行。那可扩展吗?如果我们到了成千上万的用户关注Sally并且她每天发表数十条帖子的情况,会发生什么? 我最初的想法是处理查询的所有问题:通知按钮上的数字将通过请求比上次访问通知屏幕最近发布的内容的行计数来获得,而单个通知将通过更详细的查询生成当您访问通知屏幕时。这种方法不需要写入或额外的存储空间,但是不灵活,可能会严重影响服务器。 设定 后端(由先前的开发人员建立)使用CodeIgniter和MySQL数据库。它目前在糟糕的GoDaddy共享托管帐户上运行,但我认为(希望吗?)在我们投入生产之前,将对其进行升级,并且托管软件包将随着用户的增长而扩展。 目前,我们唯一的前端是移动应用程序,但我们计划稍后再建立一个网站。我现在不关心从服务器获取有关通知的实时推送更新。 附录 我不专门研究后端,而我在那个部门负责。客户知道这一点,并且我已尽力解释这种性质的项目的范围,但是他们已经明确表示,在这一点上,他们将不信任任何其他人来从事该项目。在开始添加测试人员之前,我们可能还要再做一个月的工作,我才能获得任何类型的性能指标。我真的无法估计未来5年我们将拥有多少用户,或者我们将使用什么硬件,但是我认为客户希望有成千上万的用户或更多。 我希望这个问题足够具体,可以在此处发布。如果需要,我可以对其进行优化。请询问您是否有任何疑问,或者我省略了重要的详细信息。 tl; dr 当所有用户都只跟随数百人时,数据库驱动的通知系统是否会对长期可扩展性产生负面影响? 有没有一种方法可以使通知由数据库驱动,而无需为每个关注者的每个通知单独的通知行? 完全由查询驱动的通知系统是否具有可伸缩性,或者除了不向数据库写入任何数据以外,还具有其他优点? 我想得太早了吗?我是否应该仅构建一个目前可以使用的产品,并且由于客户预算有限并且我们不知道最终产品是否会流行,如果问题出现,我们可以担心对其进行优化吗?

2
首选数据库规范化还是架构透明性?
新的要求出现在旧的代码库上,该代码库基本上实现了两个以前不直接相关的用户类之间的直接(内部)通信(存储在具有完全不同模式的不同表中,并且可悲的是,该代码几乎不面向对象)设计较少,因此没有父类)。由于我们不愿使用这种从未考虑过此功能的旧设置,因此无法保证不存在PK冲突-在使用数据集的情况下,实际上可以保证存在ARE。 因此,解决方案似乎很明显:用火杀死它并重写整个混乱的 A映射表。我已经为实现地图的可能方法提供了两个指导,但是我不是DBA,所以我不确定是否有我遗漏的利弊。 为了阐明抽象,请考虑三组不同的用户数据:教授,行政管理和学生(不,这不是一项家庭作业。应许!) 映射1 (professor_id,admin_id和student_id是它们各自表的外键) | mailing_id (KEY) | professor_id | admin_id | student_id | ------------------------------------------------------- | 1001 | NULL | 87 | NULL | | 1002 | 123 | NULL | NULL | | 1003 | NULL | NULL | 123 | 这种方法的+/-在缺点上非常繁重: 每行两个“浪费”字段 违反2NF 容易插入/更新异常(例如,只有0-1字段设置为NULL的行) 但是,专业人士并非没有自己的优点: 可以通过一次查找完成映射 …

7
何时开始考虑可伸缩性?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 我遇到了一个有趣但又可怕的问题。我将要启动一个新的(iPhone)应用程序。这是在我自己的自定义后端上运行的基于回合的多人游戏。但是我怕发射。 由于某种原因,我认为它可能会变得很大,并且它的流行将杀死我可怜的孤独的单服务器+ MySQL数据库。 一方面,我在想如果它正在增长,那么我最好做好准备,并拥有可扩展的基础架构。 另一方面,我只是想将其发布到世界上,看看会发生什么。 我经常读诸如“过早的优化是万恶之源”之类的文章,或者有人说您应该立即使用手头的工具来构建杀手级游戏,而后再担心诸如可扩展性之类的问题。 我很想听听专家或有经验的人对此的一些看法。谢谢!

4
使用C ++和MySQL构建Web应用程序是否存在任何概念上的弊端?
我继承了一个非常有趣的项目,在这里有一个很好的机会将现有软件移植到SaaS Web应用程序中。随着项目的继承,代码库/框架已经定义为C ++和MySQL。该应用程序本身已编译并在Windows Server上作为EXE运行。UI是基于Web的,该应用程序可作为一种服务器使用。根据我对现代Web应用程序的了解,这也许是一个不寻常的选择。如今,大多数人似乎选择使用PHP框架或Ruby on Rails。当然,这是我从阅读有关该主题的博客中获得的印象。因此,我非常想知道MySQL支持的C ++ EXE是否是Web应用程序的坚实基础,还是我们是否应该以其他方式构建?

9
是否有使用Mysql或PostgreSQL的大型银行?[关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 我一直认为最大规模的银行使用Oracle。但是,没有证据表明他们真正使用Oracle而不是Mysql或PostgreSQL,没人知道这个秘密。 知道他们真正使用了什么吗?我可以使用Mysql建立一个可以进行数百万笔交易的ATM /银行系统吗?我可以使用PostgreSQL吗?还是只能使用Oracle?

2
对于任何大小的数据,blob是否比varchar更有效?
设置数据库时,我想对可能相当长的数据使用最有效的数据类型。目前,我的项目是存储有关该歌曲的歌曲标题和想法。有些标题可能是5个字符或超过100个字符,并且想法可能会持续很长时间。 使用varchar设置为8000还是使用Blob更有效?使用blob与varchar一样,因为有一个固定大小的分配对象,而不管它持有什么大小?还是只是一个指针,它实际上并没有在表上占用太多空间?Blob是否有特定的大小设置,还是可以扩展?
9 mysql 


6
就我而言,MongoDB是正确的选择吗?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 6年前关闭。 我将在Rails中构建我的第一个真实项目,该项目包含一个由3个主要部分组成的网络应用程序: 不使用数据库的静态部分 用户注册部分将需要一个数据库,我可以使用MySQL,因为每个用户的行将具有相同的字段 用户可以在其中创建,组织,编辑...项目的“应用”,并与其他用户共享 将有几种项目类型,每种类型都有不同的选项,例如,我可能有带有以下选项的“视频”项目: ID 用户身份 collection_id 标题 平台(如果嵌入式) 网址(如果已嵌入) 文件名(如果托管在我的应用程序中) 文件大小(我的应用程序上托管的ID) 和“地图”项: ID 用户身份 collection_id 标题 平台(谷歌地图,必应地图...) 位置 网址 地图尺寸 对于用户,我可能会使用MySQL作为项目,因此MongoDB的灵活性可能会很有用,因为每个项目可能需要与另一个项目不同的选项 到目前为止,我一直使用PHP和MySQL(始终在小型项目的共享主机上使用),而可扩展性对我来说是一个全新的词。 我有时间学习,但我希望能够在1个月内完成一些具体的工作。 我已经阅读了很多有关MongoDB和NoSQL以及RDMS和MySQL的文章,尝试之后,我不得不说我喜欢MongoDB的工作方式:没有表,没有行以及它的文档JSON像这样: 在我的情况下,您会推荐什么?为什么? 关于可伸缩性,MongoDB可能存在问题?如果是的话(以数据库大小计),是否会出现这些问题,从而使我的应用程序速度大大降低? 编辑:应用程序将如何工作 由于许多人问这是我希望该应用程序如何工作: 用户注册 他已登录 他创建了自己的第一个收藏系列,可以创建无限的物品 项目是各种类型的,每种类型需要在数据库中保存不同的数据,并且可以添加或修改项目的类型 用户可以在其中创建其他集合和项目。 因此,对于集合及其内部的项目,我们都有CRUD,每个集合/项目都针对特定的用户 MySQL的主要问题是它没有灵活的架构,有办法解决这个问题(解决方法?)? 考虑NoSQL时,我唯一的疑问就是联接,例如,鉴于某个特定的选择,我想检索与集合中id = user_id的User相关的数据 编辑:继续使用MySQL的想法 在“项目”表中创建带有可选设置的字段,每个设置均用|分隔。或其他符号。 然后,我将在某处保存每个项目的可选设置的结构,例如,“ notes”项目类型需要两个可选设置“ colour”和“ strange_setting”,当我从MySQL获取数据时,我会将可选设置的字段拆分为一个知道数组中的第一项是用于“颜色”的,依此类推。 …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.