精华内容
下载资源
问答
  • 创建这么一个表下来navicat好累!各位还有没有珍藏的别的...方法也行(PS:请忽视我臃肿不堪的表结构,毕竟我一个新人)那最好写sql语句生成了哦^_^还有一些通过代码映射的工具,比如有各种uml图转换之类的,但...

    bVuS6m

    创建这么一个表下来用navicat好累!各位还有没有珍藏的别的方便实用的mysql工具?方法也行

    (PS:请忽视我臃肿不堪的表结构,毕竟我是一个新人)

    回复内容:

    bVuS6m

    创建这么一个表下来用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字段声明过程。

    f68f2add0b68e4f9810432fce46917b7.png

    本文原创发布php中文网,转载请注明出处,感谢您的尊重!

    展开全文
  • 结构化查询语言(Structured Query Language)简称SQL,结构化查询语言一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;sql 语句就是对数据库进行操作的一种语言。程序功能:1、...

    2ca7b43fbaaf74e44fa71b54187bd9fc.png

    结构化查询语言(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

    展开全文
  • 准备我们需要的表结构和数据两张表 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一定使用第三种算法

    展开全文
  • 第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...
  • 在之前的讲解中我们从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 员工信息"

    例如:数据库中员工信息表内容如下:

    ecbd6d759c0844e5ab6f40e992b7e937

    上述数据中很多是有重复的。我们可以用下面的代码进行排重处理:

    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

    代码截图:

    f73027db73364dccb14ce1c6ac345ecb

    运行后显示数据:

    7c4f667d38224006a17f9d9d67714c08

    方式二 Select 查询表达式 From 数据区域 Where 条件表达式,通过使用Where可以设置查询条件。

    查询的条件表达式可以是:

    (1)任何逻辑表达式

    如:strSQL = "SELECT * FROM 员工信息 WHERE 部门='一厂'"

    这种查询在之前的讲解中讲过,这里不再举例。

    (2)IN/NOT IN ( 表达式1,表达式2,…. ) 注意上面的括号不可少,各表达式用逗号搁开。

    '查询姓名在括号中列出名单范围内的人,如总数据如下:

    a3542a114b5d46a1b222c0baecff5cb7

    我们要显示的是姓名为刘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

    f3c5c76195b64421b9d801daa602ee2f
    7e01ad41d2274644853941c03091c2f9

    三 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

    efd0ca328e6b41c99a96672280192c78

    显示的结果:

    7e89d09b04cd43d189a0e4e6675c8df8

    今日内容回向:

    1 本讲讲了几种常用的SQL查询,读者是否明白?

    2 上述实例希望读者能自己亲自操作一下。

    展开全文
  • 在执行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的话在innodbb-tree,俗称b+树,那么再到...
  • SQL语句是针对数据库而言的一门语言,它可以创建数据库,数据,可以针对数据库的数据进行增, 删,改,查等操作,可以创建视图,存储过程,可以赋予用户权限等。 2.SQL和T-SQL SQL的全程结构化查询语言...
  • 进一步说则该数据结构中存储了一张中某一列的所有值,也就是说索引基于数据中的某一列创建的。总而言之:一个索引中某一列上的数据组成,并且这些数据存储在某个数据结构中。 2.索引的作用。举个...
  • 有时候,我们事先并不知道where 后面要跟什么东西,只有在运行中才能确定,这就有点象其它语言中拼凑sql语句一样,abap也支持的,起来也很方便。详情请查看abap中动态指定查询条件,创建动态内有以为博主写的...
  • 1) explain执行结果,如下图:2) 表中的数据如下图:3) 表结构如下图:4) 创建的索引如下图: 答: 前提:1.mysql中索引btree索引,也就是说索引平衡二叉树...
  • 视图什么用的?通过视图,可以展现基表的部分数据;视图数据来自定义视图的查询中使用的,使用视图动态生成。基表:用来创建视图的叫做基表为什么要使用视图?因为视图的诸多优点,如下1)简单:使用视图的...
  • 在之前的讲解中我们从ADO的创建、连接到记录集的操作,已经讲了很多VBA对数据库的实际操作了,到这里,读者应该对VBA操作数据库有了一个清晰的印象,从各个步骤上看我们不难得出一个重要结论:要让ADO有效工作,关键...
  • 在之前的讲解中我们从ADO的创建、连接到记录集的操作,已经讲了很多VBA对数据库的实际操作了,到这里,读者应该对VBA操作数据库有了一个清晰的印象,从各个步骤上看我们不难得出一个重要结论:要让ADO有效工作,关键...
  • 在MySQL如何优化的问题上,怎么判断sql语句是否已经...表结构:文章的信息:有作者、目录、阅读数、评论数、标题号、内容(简单的表,用于演示~)   实验过程: 1.要求查询出所有文章的信息(普通查询) ...
  • 2.根据创建视图时给定的条件,视图可以一个数据的一部分,也可以多个基表的联合,它存储了要执行检索的查询语句的定义,以便在引用该视图时使用。二.why(为什么视图?视图的优点)1.简化数...
  •  1、说明:复制(只复制结构,源表名:a 新表名:b) (Access可用)  法一:select * into b from a where 1<>1  法二:select top 0 * into b from a  2、说明:拷贝(拷贝数据,源表名:a 目标表名:b) (Access...
  • 在之前的讲解中我们从ADO的创建、连接到记录集的操作,已经讲了很多VBA对数据库的实际操作了,到这里,读者应该对VBA操作数据库有了一个清晰的印象,从各个步骤上看我们不难得出一个重要结论:要让ADO有效工作,关键...
  • oracle创建与使用视图

    2018-06-25 14:13:18
    2.根据创建视图时给定的条件,视图可以一个数据的一部分,也可以多个基表的联合,它存储了要执行检索的查询语句的定义,以便在引用该视图时使用。 二.why(为什么视图?视图的优点)1.简化...
  • ORACLE 创建与使用视图

    2016-08-05 13:34:00
    一.what(什么是视图?...2.根据创建视图时给定的条件,视图可以一个数据的一部分,也可以多个基表的联合,它存储了要执行检索的查询语句的定义,以便在引用该视图时使用。 二.why(为什么...
  • 简化sql语句视图的用户完全不需要关心后面对应的结构、关联条件和筛选条件,对用户来说已经过滤好的复合条件的结果集。 保护基表的数据,提高了安全性,使用视图的用户只能访问他们被允许查询的结果集,...
  • 一、视图2.1 、什么是视图​视图mysql5.1版本出现的新...2.2、使用视图的好处简化sql语句视图的用户完全不需要关心后面对应的结构、关联条件和筛选条件,对用户来说已经过滤好的复合条件的结果集。保护...

空空如也

空空如也

1 2 3 4 5 ... 15
收藏数 300
精华内容 120
关键字:

创建表结构是用什么语句