shell变量加单引号sql_sql不难,但这些细节你注意了吗?

5295c4f77096eaf6564247e51398831a.png
写在前面:
SQL不难,学习SQL的四字箴言是“孰能生巧”,两周的时间把《SQL基础教程》学习完了,一边学习一边跟着做思维导图,方便日后复习关键点,在这篇文章中我不仅会把思维导图放上来,还会不断更新一些琐碎的,重要但是容易忘记的概念和代码。

思维导图

788dde0b9b7d2ab3e4898fd59242e6be.png

要点一:有关创建表的一些细节

CREATE TABLE Product(

product_id CHAR(4) NOT NULL,

product_name VARCHAR(100) NOT NULL,

product_type VARCHAR(100) NOTNULL,

sale-price INT,

purchase_price INT,

regist_date DATE,

PRIAMRY KEY (product_id)

);

  • 命名规则:字母,数字和下划线,不能有空格
  • 四种基本数据类型:INT 整形:用于存储整数,可不设置长度

CHAR 字符型:用于存储字符串,字符串以定长字符串形式保存,

要设置长度, CHAR(10)表示最多10个字符

VARCHAR 字符串类型:用于存储字符串,字符串以可变长形式保存,

要设置长度,VARCHER(10)表示最多10个字符

  • 约束:1.NOT NULL约束

2.主键约束:用于确定唯一的一行数据,可组合。PRIMARY KEY(product_id)

关于varchar的到底能存多少个汉字和英文,以及各种编码的解释,这篇文章给了详细的解释:https://ruby-china.org/topics/24920

关于char、varchar和text的区别:https://blog.csdn.net/brycegao321/article/details/78038272

关于varchar(n)的最大空间是65535的解释:数据库一个字段最多可存16位二进制即两个字节,转化为十进制即65535.(不能用64*1024计算)。

要点二:(group)having函数和where的区别

  • 使用group by函数时,后面的条件元素是select中出现的,而不能按照其他的七七八八的元素来分类
  • where是一个约束声明,在查询数据库的结果返回之前对数据库中的查询条件进行约束,即在结果返回之前起作用,且后面不能接聚合函数,where后面之所以不能使用聚合函数是因为where的执行顺序在聚合函数之前
  • having是一个过滤声明,所谓过滤是在查询数据库的结果返回之后进行过滤,即结果返回之后起作用,且后面可以接聚合函数

要点三:联结Join的含义

  • 基于ANSI标准的SQL列出了五种JOIN方式:内连接(INNER),全外连接(FULL OUTER), 左外连接(LEFT OUTER), 右外连接(RIGHT OUTER)和交叉连接(CROSS)。在特定情况下,一张表可以和自身进行连接,成为自连接(self-join).
  • 连接产生的结果集,可以定义为首先对两张表做笛卡尔积(交叉连接)--将A中的每一行和B中的每一行组合,然后返回满足连接谓词的记录。
  • 语法:JOIN ON接在from后面,SELECT a.s_id

FROM (SELECT s_id,s_score FROM score WHERE c_id='01') AS a

JOIN (SELECT s_id,s_score FROM score WHERE c_id='02') AS b

ON a.s_id=b.s_id

WHERE a.s_score>b.s_score;

要点四:为什么不加group by的时候,结果只显示一行呢?

0f3d493c8f19f27041b5d36a0c43ef92.png
  • 原因是:不加group by的时候,没有分组依据,每次sum操作是针对已有的所有的分数进行的,因此每次sum后只有一个单一结果,即只会显示一行数据。

要点五:错误Every derived table must have its own alias(每个派生表都需要有它自己的别名)

  • from后面括起来的sql的执行结果是一张派生表,要留下姓名!

7bcaf7eed1ed74876d96b202bbf81048.png

要点六:一个栗子搞定update的用法

05f593c67ebbf82ce660b68dfd020aa5.png

要点七:sql如何求百分数?

9ce6fb3036d9a7f5711450729276d98a.png

要点八:遇到复杂的题目,先分别求出结果,在用join连接起来

82dfee78999a1c5f50d7f2ac352be19b.png

要点九:单引号的使用' '

  • 加单引号--表示一个名字;不加单引号--表示一个变量(一张表,一个视图什么的)?
  • 别表名不加单引号,加了会报错
  • 给变量名命名,可以加也可以不加

7aa6befc0122959b13a931044a09efc7.png

要点十:怎么计算名次?

16be6c10e6bc2168ebece58b788c5d09.png

要点十一:limit的妙用~

要点十二:delete和drop的区别

要点十三:insert的注意事项

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值