MySQL中的load data、source及其更改、删除表中字段分组、排序等SQL语句、表连接

load data指令

load data infile '文件的绝对路径加文件名'  into '数据表名';

将文本文件(后缀名为txt)中的信息按照表的方式来导入进数据库,文本文件中的数据必须和原有创建的表有相同的结构!而且默认分隔符是制表符’\t’当作各个列之间的分割条件。当文本数据不是用制表符作为分割条件时,可以通过load data infile '文件的绝对路径加文件名' into '数据表名'; field terminal by '文本文件中的分割符'来导入数据。文件路径之间用/分割
这里load data中需要我们开启向MySQL数据库中用文件添加数据的功能。在安装文件的my.ini配置文件中添加secure-file-priv=表明可以向MySQL数据库中添加任意路径下的文件中数据。

source指令

source 文件绝对路径及文件名;

将文件中的SQL语句导入在MySQL环境中执行。这里的文件路径之间用/分割,该文件后缀名是sql,其文件中的内容必须是合法的SQL语句。
文件编码和操作系统编码需要保持一致。这里的文件路径用\来分割不用转义,也不用’’包括

  • 修改表中数据
update table 数据表名 set 列名 =;

将表中该列下的所有字段元素都替换为该值

  • 修改表信息
alter table 表名 (添加、删除、修改列);

alter table 表名 add 列名 数据类型;来新增列
alter table 表名 drop 列名 数据类型;删除列信息

常用SQL语句

  • where条件表达式
    选择匹配成立的数据
    = 表示等值匹配
    ! 表示不等值匹配
    < 小于匹配
    > 大于匹配
    <= 小于等于匹配
    >= 大于等于匹配
    当含有多个条件时,可以用条件表达式来连接。
    逻辑与 and
    逻辑或 or
    逻辑非 not
    between 整数1 and 整数2 表示选择包括整数1和整数2及其中间包含的数(整数1小于整数2)
    列名 in (整数1, 整数2, …整数n) 表示选择整数1到整数n这n个数
  • like 模糊查询
    列名 like "要查询的字符";这里的字符中可以使用通配符来查询"_“表示一个任意字符,”%"表示没有或多个任意字符。
  • order by 排序(一般用于select查询语句中)
    order by 列名 排序方式按照列名来进行单列排序
    order by 整数通过该整数作为列的索引排序的条件这里的索引是从1开始,这里的索引值不能超过列的个数
    排序方式可以是正向排序asc反向排序desc
    order by 列名1 排序方式, 列名2 排序方式, ...按照多种方式来进行排序 ,先按照列1的排序方式排序,当列1有多个重复元素时按照列2进行排序…
  • limit 选择数量
    limit 整数选择整数个字段
    limit 整数1, 整数2从第下标为整数1开始选择整数2个字段(这里的下标从0开始)
  • group by 分组
    group by 列名根据该列的值相同的元素分为一组(这里的select中不能直接加*)单列分组
    group by 列名1, 列名2...根据列名1分组,然后分组后的每个列中按照列名2分组…错误!多列分组和group by后的顺序无关!!多列分组时顺序不影响结果(只是左右位置上的差别)
    select * from 表名 group by 列名错误!这种方式应为分组后的个数和*不一样,这样可能造成多种对应关系。
    select中的数据只能是group by分组的列的相关信息,可以是count(*)求和信息,max(该列名)该列的最大值,min(该列名)该列的最小值,sum(列名)对该列求和,avg(列名)对该列求平均值。
    分组后的select子句中只能出现分组条件列和组函数,当其他列中存在一对多关系的不能出现在select中(可能存在一对多的映射关系)。
  • having 过滤(不同于where的是having可以过滤由group by分组后来过滤)
    假如在分组时,用where count (*) > 整数来作为输出条件,会发生错误,因为MySQL中的执行步骤是先执行where再执行group by最后执行having,这样count(*)中不能直接获得相关数据而造成Invalid use of group function的错误
    select count(*) from 表名 group by 列 having count(*) > 整数正确,这里having中的元素有效
    当having和where都可以合法地过滤数据时,我们建议使用用where来过滤,这样减少未来判断的次数来提高查找效率。

多个表的连接

select ... from1 inner join2 on 连接条件;

将表1的列和表2的值按照一定的规则连接起来一起输出(把两列取值相等的记录联系在一起)这里一般的连接规则是两个列有相同的取值,当两个列名相同时,用表1.列名 = 表2.列名来区分列。
为了便于处理我们可以给表取别名来方便使用,这里的别名只针对该条语句,不针对表结构。格式表名 表别名
当这里的表1中的列数据在表2中没有与之对应的值,则这种情况不输出。
两张表的记录完全满足连接条件才会出现的结果中。

select ... from1 left out join2 on 连接条件;

这里的out可以省略,位于连接左侧的表,不管是否连接到了记录(表2中有相对应的值),和内连接一样都会出现在结果中,当没有的连接到的记录,对应的表中显示null

select ... from1 right out join2 on 连接条件;

这里out可以省略

  • 连接查询的另一种写法
    内连接的等价写法
select ... from1,2 where 连接条件;

select ... from1 inner join2 using(列名);

这个是内连接的MySQL独有语法 ,前提是两个表中有相同的列名,且连接关系为两个表的列名值相等

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值