学习MySQL遇到的问题记录

 最近在学校mysql,所有开篇博客记录在学习的过程遇到的一些问题,使用的是Navicat

1.mysql存在外键时导入数据

创建一个数据表有外键约束,导致在插入数据时不成功,上网查找后发现可以先把外键约束关闭,插入完数据后,在把外键约束打开,

SET FOREIGN_KEY_CHECKS=0; //关闭

SET FOREIGN_KEY_CHECKS=1;//打开

2.设置外键约束

设置外键关系的两张表必须是相同的存储引擎,如都是InnoDB,而且相关联的两个字段的类型,长度都必须一致,外键的好处是出入的数据必须是存在的,避免插入不必要的数据 

3.一次性插入多组数据

INSERT INTO 

[表名]([列名],[列名]) 

 VALUES

([列值],[列值])),

([列值],[列值])),

([列值],[列值]));

使用Navicat用上面的语句批量的插入数据一直不成功,不知道是什么原因,心luilui

4.ORDER BY

ORDER BY子句对查询结果按照一个或多个属性列的升序(ASC)或降序(DESC)排列,默认为升序

查询选修了3号课程的学生学号以及成绩,查询结果按成绩降序排列

SELECT Sno,Grade FROM SC WHERE Cno='3' ORDER BY Grade DESC;

5.GROUP BY 

GROUP BY子句将查询结果按某一列或多列的值文组,值相等的为一组

求各个课程号以及相应的选课人数

SELECT Cno,COUNT(Sno) FROM SC GROUP BY Cno

该语句对查询结果按Cno的值分组,所有具有相同Cno值的元祖为一组,然后对每一组用聚集函数COUNT进行计算

如果分组后还要求按一定的条件对这些组进行筛选,最终只输出满足指定条件的组,则可以使用HAVING短语指定筛选条件

查询平均成绩大于等于90分的学生学号和平均学号

SELECT Sno,AVG(Grade) FROM SC GROUP BY Sno HAVING AVG(Grade)>=90;

WHERE子句作用于基本表或视图,从中选择满足条件的元组,HAVING短语作用于组,从中选择满足条件的组。

6.字符匹配

%代表任意长度的字符串,a%b表示以啊开头,以b结尾的任意长度的字符串 

_代表任意单个字符,a_b表示以a开头,以b结尾的长度为3的任意字符串

7.外连接

SELECT 字段名称 FROM 表名1 LEFT|RIGHT JOIN 表名2 ON 表1.字段名 1=表名2.属性名 2;

8.嵌套连接

嵌套连接的子查询的SELECT语句中不能使用ORDER BY子句,其只对最终查询结果排序

9.多表连接

a)内连接 

SELECT 列名... FROM 表一 INNER JOIN 表二 ON 表1.外键=表2.主键

b)外连接,左连接能取得两个表中键值一致的记录以及只在左边表中存在的记录,右连接与之相反

 

SELECT 列名... FROM 表一 LEFT OUTER JOIN 表二 ON 表1.外键=表2.主键//左连接


SELECT 列名... FROM 表一 RIGHT OUTER JOIN 表二 ON 表1.外键=表2.主键//右连接

10.分隔符

MySQL默认以";"为分隔符,如果没有声明分割符,则编译器会把存储过程当成SQL语句进行处理,因此编译过程会报错,所以要事先用“DELIMITER //”声明当前段分隔符,让编译器把两个"//"之间的内容当做存储过程的代码,不会执行这些代码;“DELIMITER ;”的意为把分隔符还原。

11.MySQL的存储过程

语法

CREATE PROCEDURE  过程名([[IN|OUT|INOUT] 参数名 数据类型[,[IN|OUT|INOUT] 参数名 数据类型…]]) [特性 ...] 过程体

MySQL的存储过程

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lpepsi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值