-
mysql建立表结构的工具_有没有什么可以方便创建表结构mysql工具?
2021-01-19 16:44:11创建这么一个表下来用navicat好累!各位还有没有珍藏的别的...方法也行(PS:请忽视我臃肿不堪的表结构,毕竟我是一个新人)那最好是写sql语句生成了哦^_^还有一些通过代码映射的工具,比如有各种uml图转换之类的,但...创建这么一个表下来用navicat好累!各位还有没有珍藏的别的方便实用的mysql工具?方法也行
(PS:请忽视我臃肿不堪的表结构,毕竟我是一个新人)
回复内容:
创建这么一个表下来用navicat好累!各位还有没有珍藏的别的方便实用的mysql工具?方法也行
(PS:请忽视我臃肿不堪的表结构,毕竟我是一个新人)
那最好是写sql语句生成了哦^_^
还有一些通过代码映射的工具,比如有各种uml图转换之类的,但是不推荐使用。
其实,工具主要是辅助,比如你现在使用的Navicat,一是为了完成目标(得到表结构),二是熟悉加深对sql语句的理解。如果哪天你能脱离这些工具,直接sql语句完成,那样肯定效率是最高的(当然必须炉火纯青才行,不然,出现一个错误,你的纠结老半天,也就谈不上效率了)
ps:我主要是弄前端的,自己玩玩后端,所以对于sql之类的工具,sql语句之类的也只是熟悉,会用而已,共勉!
手写 SQL 最快最便捷
工具流
Win 下 PowerDesigner
Mac/Linux 下 MySQL Workbench
Migration 啊。
你这个也不算手写,用的是是图形化工具。
要么写sql。
看你标签有PHP,去了解下Migration吧,用PHP代码生成mysql表,蛮好用的,迁移也方便。
Yii2,laravel好多框架都由这个模块。
除了我现在用的Yaf。(手动斜眼)
没有,手写建表sql是最快的,migration也属于手写,只是格式区别罢了。手写建表因为可以直接粘贴复制,然后改改就行了,用工具通常没办法copy字段声明过程。
本文原创发布php中文网,转载请注明出处,感谢您的尊重!
-
mysql语句有什么用_sql语句的作用是什么?
2021-01-20 20:50:02结构化查询语言(Structured Query Language)简称SQL,结构化查询语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;sql 语句就是对数据库进行操作的一种语言。程序功能:1、...结构化查询语言(Structured Query Language)简称SQL,结构化查询语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;
sql 语句就是对数据库进行操作的一种语言。
程序功能:
1、创建数据库CREATE DATABASE database-name
2、删除数据库drop database dbname
3、创建新表create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)
4、删除新表drop table tabname
5、增加一个列Alter table tabname add column col type
6、添加主键Alter table tabname add primary key(col)
7、删除主键Alter table tabname drop primary key(col)
8、创建索引create [unique] index idxname on tabname(col….)
9、删除索引drop index idxname
10、创建视图create view viewname as select statement
11、删除视图drop view viewname
-
mysql驱动用什么通信的_掌握MySQL连接查询到底什么是驱动表
2021-01-21 08:40:39准备我们需要的表结构和数据两张表 studnet(学生)表和score(成绩)表, 创建表的SQL语句如下CREATE TABLE student (id int(11) NOT NULL,no varchar(20) DEFAULT NULL,name varchar(20) DEFAULT NULL,PRIMARY KEY (id...准备我们需要的表结构和数据
两张表 studnet(学生)表和score(成绩)表, 创建表的SQL语句如下
CREATE TABLE student (
id int(11) NOT NULL,
no varchar(20) DEFAULT NULL,
name varchar(20) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE score (
id int(11) NOT NULL,
no varchar(20) DEFAULT NULL,
chinese double(4,0) DEFAULT NULL,
math double(4,0) DEFAULT NULL,
engilsh double(4,0) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
MySQL连接查询分为以下三种 left join 左连接,用法如下,这种查询会把左表(student)所有数据查询出来,右表不存在的用空表示,结果图如下
select * from student s1 left join score s2 on s1.on = s2. on
right join 右连接, 用法如下,这种查询会把右表(score)所有数据查询出来,左表不存在的用空表示,结果图如下
select * from student s1 right join score s2 on s1.no = s2.no
inner join 内连接,用法如下,这种查询会把左右表都存在的数据查询出来,不存在数据忽略,结果图如下
select * from student s1 inner join score s2 on s1.no = s2.no
连接查询中需要注意的点
什么是驱动表,什么是被驱动表,这两个概念在查询中有时容易让人搞混,有下面几种情况,大家需要了解。
当连接查询没有where条件时,左连接查询时,前面的表是驱动表,后面的表是被驱动表,右连接查询时相反,内连接查询时,哪张表的数据较少,哪张表就是驱动表
当连接查询有where条件时,带where条件的表是驱动表,否则是被驱动表
怎么确定我们上面的两种情况呢,执行计划是不会骗人的,我们针对上面情况分别看看执行计划给出的答案
首先第一种情况,student表中3条数据,score表中2条数据,但两张表中只有一条数据是关联的(编号是1),看如下SQL查询
//左连接查询
explain select * from student s1 left join score s2 on s1.no = s2.no
//右连接查询
explain select * from student s1 right join score s2 on s1.no = s2.no
//内连接查询
explain select * from student s1 inner join score s2 on s1.no = s2.no
执行计划中靠前的表是驱动表,我们看下面三种图中,是不是全度符合情况一,第一张图中s1是驱动表,第二张图中s2是驱动表,第三种途中s2是驱动表
其次第二种情况,还是上面三种SQL语句,我们分别加上where条件,再来看看执行计划的结果是什么样呢?
//左连接查询
explain select * from student s1 left join score s2 on s1.no = s2.no
where s2. no = 1
//右连接查询
explain select * from student s1 right join score s2 on s1.no = s2.no
where s1.no = 1
//内连接查询
explain select * from student s1 inner join score s2 on s1.no = s2.no
where s1.no = 1
我们看下面三种执行计划结果,全都以where条件为准了,而且跟上面情况一的都相反了,因此情况二也是得到了验证.
连接查询优化
要理解连接查询优化,得先理解连接查询的算法,连接查询常用的一共有两种算法,我们简要说明一下
Simple Nested-Loop Join Algorithms (简单嵌套循环连接算法)
比如上面的查询中,我们确定了驱动表和被驱动表,那么查询过程如下,很简单,就是双重循环,从驱动表中循环获取每一行数据,再在被驱动表匹配满足条件的行。
for (row1 : 驱动表) {
for (row2 : 被驱动表){
if (conidtion == true){
send client
}
}
}
Index Nested-Loop Join Algorithms (索引嵌套循环连接算法)
上面双重for循环的查询中,相信很多研发人员看到这种情况第一个想法就是性能问题,是的,join查询的优化思路就是小表驱动大表,而且在大表上创建索引(也就是被动表创建索引),如果驱动表创建了索引,MySQL是不会使用的
for (row1 : 驱动表) {
索引在被驱动表中命中,不用再遍历被驱动表了
}
Block Nested-Loop Join Algorithm(基于块的连接嵌套循环算法)
其实很简单就是把一行变成了一批,块嵌套循环(BNL)嵌套算法使用对在外部循环中读取的行进行缓冲,以减少必须读取内部循环中的表的次数。例如,如果将10行读入缓冲区并将缓冲区传递到下一个内部循环,则可以将内部循环中读取的每一行与缓冲区中的所有10行进行比较。这将内部表必须读取的次数减少了一个数量级。
MySQL连接缓冲区大小通过这个参数控制 : join_buffer_size
MySQL连接缓冲区有一些特征,只有无法使用索引时才会使用连接缓冲区;联接中只有感兴趣的列存储在其联接缓冲区中,而不是整个行;为每个可以缓冲的连接分配一个缓冲区,因此可以使用多个连接缓冲区来处理给定查询;在执行连接之前分配连接缓冲区,并在查询完成后释放连接缓冲区
所以查询时最好不要把 * 作为查询的字段,而是需要什么字段查询什么字段,这样缓冲区能够缓冲足够多的行。
从上面的执行计划中其实我们已经看到了 useing join buffer了,是的,那是因为我们对两张表都有创建索引
三种算法优先级
第一种算法忽略,MySQL不会采用这种的,当我们对被驱动表创建了索引,那么MySQL一定使用的第二种算法,当我们没有创建索引或者对驱动表创建了索引,那么MySQL一定使用第三种算法
-
精通sql结构化查询语句
2012-11-03 17:35:29第1章 SQL语言的概述 1.1 认识SQL语言 1.1.1 什么是SQL语言 1.1.2 SQL的历史与发展 1.1.3 SQL的功能和优点 1.2 认识数据库 1.2.1 什么是数据库 1.2.2 数据库系统的结构 1.2.3 数据库系统的工作流程 1.2.4 常见的SQL... -
出生日期范围的Sql语句_结构化查询语言SQL在VBA中几种常见的查询表达方式
2020-11-19 18:41:26在之前的讲解中我们从ADO的创建、连接到记录集的操作,已经讲了很多VBA对数据库的实际操作了,到这里,读者应该对用VBA操作数据库有了一个清晰的印象,从各个步骤上看我们不难得出一个重要结论:要让ADO有效工作,关键是...在之前的讲解中我们从ADO的创建、连接到记录集的操作,已经讲了很多VBA对数据库的实际操作了,到这里,读者应该对用VBA操作数据库有了一个清晰的印象,从各个步骤上看我们不难得出一个重要结论:要让ADO有效工作,关键是我们给它发出什么样的SQL指令。
在每一讲的讲解中,我已经简单介绍了SQL的情况。现在我们有必要总结一下VBA中SQL语句的几种常见查询的表达方式。
方式一:Select 查询表达式 From 数据区域
其中,"查询表达式"可以是下列之一或其组合,对多种方式的组合,用逗号搁开:
(1)星号(*)表示"数据源"的所有字段。
(2)字段名
(3)常量表达式
(4)任何有效的计算表达方式
这类查询的SQL语句我们已经用了非常多了:如 strSQL = "SELECT * FROM 员工信息"
注意点:
1 有时使用AS重新命名字段名称 当查询表达式使用(2)字段名时,字段名就是其本身,使用(3)常量表达式和(4)任何有效的计算表达方式时,系统将为该字段重新命名一个字段名,这个字段名通常没有意义,这时可以在表达式中使用AS为字段重新命名,当然对字段名也可以通过使用AS为其重新命名。AS并不对查询结果造成实质影响。下面是使用AS的一个例子:strSQL = "Select 班级,姓名 AS 名字,语文+数学+英语 AS 总成绩 from员工信息"
2 使用DISTINCT删除重复记录
例如:在"员工信息"表中有重复记录,如果希望若干重复的记录只显示一条,可以使用DISTINCT进行限定。
strSQL = "Select distinct * from 员工信息"
例如:数据库中员工信息表内容如下:
上述数据中很多是有重复的。我们可以用下面的代码进行排重处理:
Sub mynzdate_2() '有重复数据,排重
Dim cnADO, rsADO As Object
Dim strPath, strSQL As String
Dim i As Integer
Set cnADO = CreateObject("ADODB.Connection")
Set rsADO = CreateObject("ADODB.RecordSet")
strPath = ThisWorkbook.Path & "mydata2.accdb"
cnADO.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strPath
'strSQL = "SELECT * FROM 信息参考"
strSQL = "Select distinct * from 信息参考"
rsADO.Open strSQL, cnADO, 1, 3
Cells.ClearContents
For i = 0 To rsADO.Fields.Count - 1
Sheets("Sheet1").Cells(1, i + 1) = rsADO.Fields(i).Name
Next i
For i = 1 To rsADO.RecordCount
For j = 0 To rsADO.Fields.Count - 1
Sheets("Sheet1").Cells(i + 1, j + 1) = rsADO.Fields(j)
Next j
rsADO.MoveNext
Next i
rsADO.Close
cnADO.Close
Set rsADO = Nothing
Set cnADO = Nothing
End Sub
代码截图:
运行后显示数据:
方式二 Select 查询表达式 From 数据区域 Where 条件表达式,通过使用Where可以设置查询条件。
查询的条件表达式可以是:
(1)任何逻辑表达式
如:strSQL = "SELECT * FROM 员工信息 WHERE 部门='一厂'"
这种查询在之前的讲解中讲过,这里不再举例。
(2)IN/NOT IN ( 表达式1,表达式2,…. ) 注意上面的括号不可少,各表达式用逗号搁开。
'查询姓名在括号中列出名单范围内的人,如总数据如下:
我们要显示的是姓名为刘1和朱5的信息,SQL语句如下:
strSQL = "SELECT * FROM 员工信息 where 姓名 in ('刘1','朱5')" 代码如下:
Sub mynzdata_4() '总数据内的数据指定显示
Dim cnADO, rsADO As Object
Dim strPath, strSQL As String
Dim i As Integer
Set cnADO = CreateObject("ADODB.Connection")
Set rsADO = CreateObject("ADODB.RecordSet")
strPath = ThisWorkbook.Path & "mydata2.accdb"
cnADO.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strPath
strSQL = "SELECT * FROM 员工信息 where 姓名 in ('刘1','朱5')"
rsADO.Open strSQL, cnADO, 1, 3
Cells.ClearContents
For i = 0 To rsADO.Fields.Count - 1
Sheets("Sheet1").Cells(1, i + 1) = rsADO.Fields(i).Name
Next i
For i = 1 To rsADO.RecordCount
For j = 0 To rsADO.Fields.Count - 1
Sheets("Sheet1").Cells(i + 1, j + 1) = rsADO.Fields(j)
Next j
rsADO.MoveNext
Next i
rsADO.Close
cnADO.Close
Set rsADO = Nothing
Set cnADO = Nothing
End Sub
三 Select 查询表达式 From 数据区域 [Where 条件表达式] Order by 排序字段。同时可以使用Top限制返回行数,可以使用Top限制返回的行数。
1 下面语句返回前2条记录。
Sql = "Select top 2 * from 员工信息"
2 通过使用Order by可以对查询结果按一列或多列进行排序。
'首先按语文成绩降序排列,语文成绩相同的按数学成绩升序排列
Sql = "Select * from学生信息Order by 语文 desc,数学 asc"
备注:ASC是升序排列,在不指定排序方式的情况下是默认的,因此可以省略
如员工信息中我们要显示的是,按生日排序的前5人 SQL语句如下:
strSQL = "SELECT Top 5 * FROM 员工信息 Order by 出生日期 asc"
代码:
Sub mynzdata_5() '排序前5名显示
Dim cnADO, rsADO As Object
Dim strPath, strSQL As String
Dim i As Integer
Set cnADO = CreateObject("ADODB.Connection")
Set rsADO = CreateObject("ADODB.RecordSet")
strPath = ThisWorkbook.Path & "mydata2.accdb"
cnADO.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strPath
strSQL = "SELECT Top 5 * FROM 员工信息 Order by 出生日期 asc"
rsADO.Open strSQL, cnADO, 1, 3
Cells.ClearContents
For i = 0 To rsADO.Fields.Count - 1
Sheets("Sheet1").Cells(1, i + 1) = rsADO.Fields(i).Name
Next i
For i = 1 To rsADO.RecordCount
For j = 0 To rsADO.Fields.Count - 1
Sheets("Sheet1").Cells(i + 1, j + 1) = rsADO.Fields(j)
Next j
rsADO.MoveNext
Next i
rsADO.Close
cnADO.Close
Set rsADO = Nothing
Set cnADO = Nothing
End Sub
显示的结果:
今日内容回向:
1 本讲讲了几种常用的SQL查询,读者是否明白?
2 上述实例希望读者能自己亲自操作一下。
-
什么是索引?如何创建索引,索引的类型
2021-01-21 14:32:50在执行CREATE TABLE语句时可以创建索引,也可以单独用CREATE INDEX 或 ALTER TABLE来为表增加索引。 1.ALTER TABLE可以用来创建普通索引、UNIQUE索引或PRIMARY KEY索引。 2.CREATE INDEX可对表增加普通索引或UNIQUE... -
结构化查询语句格式
2014-09-19 20:31:57存放的是一张一张的表,特别像Excel,都以表格形式存放数据,可以创建多张表 常见的数据库: sqlite ,access, MySQL,SqlServer, Oracle; 为什么要用数据库; 1.文件读写,归档读取数据需要一次把数据全部读出来... -
什么是mysql锁表
2020-04-12 20:32:48首先我们了解一下数据库查询机制,首先我们用工具进行连接查询时,会创建一个connection,此时数据库会将查询语句解析成一棵“树”,各个引擎底层的结构不一样,mysql的话在innodb用的是b-tree,俗称b+树,那么再到... -
C#语言和SQL Server数据库技术_用SQL语句操作数据
2017-10-20 21:52:28SQL语句是针对数据库而言的一门语言,它可以创建数据库,数据表,可以针对数据库的数据进行增, 删,改,查等操作,可以创建视图,存储过程,可以赋予用户权限等。 2.SQL和T-SQL SQL的全程是“结构化查询语言... -
数据库索引是什么,有什么用,怎么用
2018-12-04 23:30:36进一步说则是该数据结构中存储了一张表中某一列的所有值,也就是说索引是基于数据表中的某一列创建的。总而言之:一个索引是由表中某一列上的数据组成,并且这些数据存储在某个数据结构中。 2.索引的作用。举个... -
动态创建信息类型结构,动态指定查询条件,并写入
2021-01-19 17:31:12有时候,我们事先并不知道where 后面要跟什么东西,只有在运行中才能确定,这就有点象其它语言中拼凑sql语句一样,abap也是支持的,用起来也很方便。详情请查看abap中动态指定查询条件,创建动态内表有以为博主写的... -
【转】同一个SQL查询语句,为什么使用到的索引不同?
2017-08-18 15:46:001) explain执行结果,如下图:2) 表中的数据如下图:3) 表结构如下图:4) 创建的索引如下图: 答: 前提:1.mysql用中索引是btree索引,也就是说索引是平衡二叉树... -
r mysql视图显示语句_MySQL视图详解
2021-03-07 02:07:27视图是干什么用的?通过视图,可以展现基表的部分数据;视图数据来自定义视图的查询中使用的表,使用视图动态生成。基表:用来创建视图的表叫做基表为什么要使用视图?因为视图的诸多优点,如下1)简单:使用视图的... -
as my sql 后面加表达式_结构化查询语言SQL在VBA中几种常见的查询表达方式
2021-01-03 10:49:28在之前的讲解中我们从ADO的创建、连接到记录集的操作,已经讲了很多VBA对数据库的实际操作了,到这里,读者应该对用VBA操作数据库有了一个清晰的印象,从各个步骤上看我们不难得出一个重要结论:要让ADO有效工作,关键是... -
sql 删除重复记录保留一条_VBA中结构化查询语言SQL查询的几种常见表达方式
2020-12-09 09:47:16在之前的讲解中我们从ADO的创建、连接到记录集的操作,已经讲了很多VBA对数据库的实际操作了,到这里,读者应该对用VBA操作数据库有了一个清晰的印象,从各个步骤上看我们不难得出一个重要结论:要让ADO有效工作,关键是... -
(MySQL性能优化)Explain分析sql语句优劣
2018-04-21 16:52:20在MySQL如何优化的问题上,怎么判断sql语句是否已经...表结构:文章的信息:有作者、目录、阅读数、评论数、标题号、内容(简单的表,用于演示~) 实验过程: 1.要求查询出所有文章的信息(普通查询) ... -
mysql. Oracle创建视图_ORACLE 创建与使用视图
2021-02-05 16:45:282.根据创建视图时给定的条件,视图可以是一个数据表的一部分,也可以是多个基表的联合,它存储了要执行检索的查询语句的定义,以便在引用该视图时使用。二.why(为什么要用视图?视图的优点)1.简化数... -
经典全面的SQL语句大全
2009-11-23 16:31:091、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用) 法一:select * into b from a where 1<>1 法二:select top 0 * into b from a 2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access... -
sql server显示生日在用户指定区间内_结构化查询语言SQL在VBA中的几种常见的查询表达方式...
2020-12-17 03:36:44在之前的讲解中我们从ADO的创建、连接到记录集的操作,已经讲了很多VBA对数据库的实际操作了,到这里,读者应该对用VBA操作数据库有了一个清晰的印象,从各个步骤上看我们不难得出一个重要结论:要让ADO有效工作,关键是... -
oracle创建与使用视图
2018-06-25 14:13:182.根据创建视图时给定的条件,视图可以是一个数据表的一部分,也可以是多个基表的联合,它存储了要执行检索的查询语句的定义,以便在引用该视图时使用。 二.why(为什么要用视图?视图的优点)1.简化... -
ORACLE 创建与使用视图
2016-08-05 13:34:00一.what(什么是视图?...2.根据创建视图时给定的条件,视图可以是一个数据表的一部分,也可以是多个基表的联合,它存储了要执行检索的查询语句的定义,以便在引用该视图时使用。 二.why(为什么要用... -
Mysql中的视图、变量、存储过程、流程控制结构、函数和触发器
2020-09-21 11:40:14简化sql语句,用视图的用户完全不需要关心后面对应的表的结构、关联条件和筛选条件,对用户来说已经是过滤好的复合条件的结果集。 保护基表的数据,提高了安全性,使用视图的用户只能访问他们被允许查询的结果集,... -
mysql 变量 视图_Mysql中的视图、变量、存储过程、流程控制结构、函数和触发器...
2021-01-19 04:19:29一、视图2.1 、什么是视图视图mysql5.1版本出现的新...2.2、使用视图的好处简化sql语句,用视图的用户完全不需要关心后面对应的表的结构、关联条件和筛选条件,对用户来说已经是过滤好的复合条件的结果集。保护...