月嫂公司网站建设构思,wordpress添加广告插件,河南建设网,在线制图免费一.增
方式1#xff08;简写插入#xff09;#xff1a;
语法#xff1a;insert into 表名 values#xff08;值#xff0c;值#xff0c;值……#xff09;;
这里insert into 代表要插入一条新数据行#xff0c;values后面就是该行的值#xff0c;其中后面的值的…一.增
方式1简写插入
语法insert into 表名 values值值值……;
这里insert into 代表要插入一条新数据行values后面就是该行的值其中后面的值的顺序和个数按照创建表时的字段的顺序一一对应如果顺序不一样或者个数不一样就会报错
方式2指定列插入
语法insert into 表名字段1字段2…… values值1值2……
这里就是指定对应的字段插入后面对应的值没有指定到的字段就使用的默认值同时后面的值也不是像上面那样按照创建表时的字段的顺序来对应的了而是按照前面指定字段的顺序来对应
如下就成功插入一条数据进入表里面同时goods_describe这个字段因为没有被指定所以使用的默认值为null
select是查这一部分的知识稍后会讲到 方式3多行插入
语法insert into 表名字段1字段2……values值1值2……值1值2…………
这里就是表示连续插入多行数据其中前面是否采用简写插入还是指定列插入自己选择后面则以逗号来区别不同行的数据
问题一次插入一条数据和一次插入多条数据哪个效率高
首先有两种开销一种是网络开销另一种是磁盘IO的开销
执行所有的SQL时都有网络开销这是一个不可控的因素
写入数据时则会产生网络开销
而每执行一条SQL语句都会开启一个事务事务的开启和关闭都需要消耗系统资源
所以在可控范围之内一次插入多条数据比一次插入一条数据效率高那么一点
用手机充电来类比充电线插入手机一次充满和充电线充一会电拔出来又插上去充一会电又拔那么充电口多次插拔肯定对手机硬件的损耗更大 二.查
方式1全列查询
语法select * from 表名
select就是查询的意思*代表全部数据from就代表查询哪里的数据
但是在生产环境中一个表的数据量可能会很多很多有可能达到TB级而每查询一条数据都会产生磁盘开销和网络开销所以如果使用全列查询就有可能把服务器的资源吃光其他的程序或是数据库操作就要等待当前SQL执行完之后才能继续执行
所以不加任何限制的查询在生产环境不要使用
方式2指定列查询
语法select 列名1列名2…… from 表名
同理就是只查询指定列名对应的数据
注这里可以不只是列名而可以是个表达式比如列名10就代表在原来的数据基础上10然后返回出来
例子如下 列于列之间也可以进行运算 但是这样子看起来比较繁冗可以通过别名来简化
别名语法表达式 as 别名 其中as可以省略就直接表达式 别名这个看个人习惯选择有人习惯最简单的书写方式有人习惯逻辑格式完整的书写方式
可以给别名加上单引号但是如果别名中间有空格那么必须加单引号包裹起来
我们的表里本来没有总分这一列但是为什么这里查询表为什么会有这么一列呢
是因为通过表达式查询出来的结果集是通过一个临时表返回给我们的执行完之后临时表就删除了在MySQL中所有的查询结果都会通过临时表返回给用户
同样可以对多个表达式命名别名
select 列名1 as 别名1列名2 as 别名2…… from 表名
去重distinct
语法select distinct 列名 from 表名
如果该列的值有重复的那么查询的时候只会有一个
注如果查询的列名有多个那么只有当所有列名对应的值都相同才判断为重复否则还是当作两条不一样的数据行
排序order by
语法select 列名 from 表名 order by 列名 [ASC|DESC]
其中order by 列名表示按照该列名的值进行排序而ASC代表升序从小到大往下排DESC代表降序从大到下往下排注意的是desc这个关键字之前代表描述表现在又代表降序一个关键字代表了两个意思这是MySQL不好的方面当初设计的时候就没有很好的规范我们要吸取这个教训写代码的时候要注意一下命名规范
没有指定ASC或者DESC则默认按照ASC升序排序但还是强烈建议指定排序规则更便于理解
如果没有使用order by子句那么MySQL默认根据哪个字段进行排序是不确定的所以如果我们有排序的意向那么就明确指定排序字段和排序方式
注null在数据排序时视为比任何值都小比负数都小所以升序一定在最上面降序一定在最下面而且null与其他值进行运算时最终的返回值都是null比如100nullnull。而且null始终被判定为false同时也不像其他编程语言可以等于0null就是null比较特殊
同样order by后面这个列名可以使用别名前提是前面已经提前进行了别名命名
如果指定多个列名进行order by 排序呢
语法order by 列名1[asc|desc]列名2[asc|desc]列名3[asc|desc]……
比如出现并列的情况就会先按照列名1的值进行排序再在该基础上按照列名2的值进行排序如此类推