CodewithMosh MySQL课程

第二章

选择语句

1.sql命令不区分大小写,但最好还是语句大写

2.语句之间用分号表示结束,换行、大间隔、tab在执行sql语句时没有作用。最好每个子句单独一行

3.use使用数据表单

SELECT *从表单中选择,*代表通识符

SELECT *

FROM *\\选择子句

WHERE *\\数据筛选

ORDER BY *\\排列

注释在语句前加-- 注意两个--后有一个空格

4.子句有顺序的,先SELECT后FROM再WHERE再ORDER

5.SELECT后跟的对象可直接进行运算,需要遵守运算符优先级

6.AS可将计算的对象重命名,在输出结果中按照新的名字展示

7.AS命名中如果要加空格必须单或双引号包裹

8.使用Where语句来筛选数据 逻辑运算符中AND最优先,逻辑运算符不能连接不同数据类型,因此需要写上查询条件

in子句

WHERE state = 'va' OR state = 'fl' OR state = 'ga'

与 WHERE state IN ('va','fl','ga'')完全相同,IN子句是上述的简略形式

9.BETWEEN子句适用于筛选条件是范围之内

10.LIKE子句可以检索特定字符串模式

例如

WHERE last_name LIKE 'b%' \\百分号表示任何长度的任何字符,姓中以b开头的所有数据

或者

WHERE last_name LIKE '%b%' \\表示姓氏中有b的所有数据

_表示单字符,例如

WHERE last_name LIKE '__y' \\表示姓氏一共有三个字符,最后一个字符是y

11.正则表达式REGEXP

^表示字符串开头,$表示字符串结尾,|表示逻辑或,[]匹配任意在括号里并列的单字符,[a-f]使用-来表示范围,代表a到f

IS NULL子句用来查询条件确实的数据

13.ORDER BY子句用来进行排序,条件后跟DESC表示降序

14.LIMIT子句用来限制显示的结果数量,比如LIMIT 3代表限制显示3条数据

第三章

1.inner join 内连接

将两个表连接起来用join子句

JOIN customers ON order.customer_id = customer.customer_id \\将customers表与order表连接,条件是基于两个表中customer_id是相同列

也可在SELECT中直接选择要显示的列,但如果选中了两个表的相同列会报错,需要在相同列上加上表格名前缀,例如:

SELECT order_id, orders.customer_id, first_name, last_name

FROM orders

JOIN customers

ON orders.customer_id = customers.customer_id

\\ customer_id列在两个表中都有,因此直接选择会报错,需要改成order.customer_id

另外为了简洁代码,可以将重复出现的字段写简写,例如

SELECT order_id, o.customer_id, first_name, last_name

FROM orders o

JOIN customers c

ON o.customer_id = c.customer_id

跨数据库连接,只需要给不在当前数据库的表前加前缀即可

多表连接只需多写JOIN子句链接就可以,但是要注意好表格的前缀标注

复合连接 在写条件时用AND连接即可

隐式链接 例如

SELECT *

FROM order o

JOIN customers c

ON o.customer_id = c.customer_id

SELECT *

FROM order o, customer c

WHERE o.customer_id = c.customer_id

\\两个查询是完全一样的,第二个就是隐式连接,但不建议使用隐式连接,因为一旦忘记WHERE,就会造成交叉连接

6.外连接

分为LEFT JOIN和RIGHT JOIN两种,和内连接的区别在于,是把对应表格的所有信息都显示,而不是只显示符合条件的列

7.USING

USING用于在连接时,如果两个表连接的列名称完全相同,就可以用USING来简化代码,例如

SELECT *

FROM orders o

JOIN customers c

ON o.customer_id = c.customer_id

USING (customer_id)

\\ 上面两行的作用是完全一样的,用USING可以简化代码

多主键连接时,在USING()里将多个主键写上即可

8.CROSS JOIN 交叉连接

交叉连接用于连接第一个表中的每条记录与第二个表中的每条记录,交叉连接也有显式和隐式两种写法

显式写法

SELECT *

FROM customers c

CROSS JOIN products p

隐式写法

SELECT *

FROM customers c, products p

两种是相同的,但显式代码看起来更清晰易懂

9.UNION 联合

UNION可以将多个查询的结果联合到一张表 ,也可以基于不同表写查询然后利用UNION将结果联合到一个结果集,例如

SELECT *

FROM orders

WHERE orders_id > 10

UNION

SELECT *

FROM products

WHERE product_id < 10

第四章

1.列属性

数据类型

INT 整数

VARCHAR(50)可变字符,50代表最多可以容纳50个字符,如果不够50个会自动缩减空间

CHAR(50)字符,不可变,如果不够50个字符会用空格来自动补齐到50个字符

属性

PK 主键 primary key

NN 非空 not null 有该属性的列必须非空

AI 自动递增 auto increment 通常被用在主键

Default/Expression 每列的默认值

2.插入单行

INSERT INTO customers

VALUES ()

\\ VALUES子句中,添加插入行的各个数据,根据表格属性为NN的必须赋值,其他可用DEFAULT系统自动按照默认值

也可以采用这种形式

INSERT INTO customers ()

VALUES ()

括号中写上属性为NN的项,VALUES后直接赋值即可

3.插入多行

INSERT INTO shippers

VALUES ('shipper1'),

('shipper2')

\\ 插入多行只需要在VALUES后面用逗号将不同的值隔开即可

4.插入分层行

数据库中存在一个表中的一条数据可以对应另一表中的多条数据,类似于一笔订单可以有多个项目,也就是表之间的亲子关系,插入分层行也就是在亲子关系表单中插入数据。例如

INSERT INTO orders (customer_id, order_date, status)

VALUES (1, '2020-01-01', 1);

INSERT INTO order_items

VALUES(LAST_INSERT_ID(), 1, 1, 2.95)

(LAST_INSERT_ID(), 2, 1, 3.95)

\\ 为了获取新插入的列的id来在子表中插入数据,使用函数LAST_INSERT_ID(),就能获得刚刚插入的新列的id。

上面的例子展示了如何在母表中插入数据,又在对应子表中插入多行数据

5.创建表复制

快速将数据从一个表复制到另一个表

CREATE TABLE ordercopy AS

SELECT *

FROM orders

这就代表复制了orders表中的所有内容到一个新的表格ordercopy中,但需要注意的是,复制的表格属性是空的,没有PK 没有NN

我们也可以在CREATE句下进行数据筛选和链接,作为子查询来进行数据处理

6.更新单行

UPDATE invoices

SET payment_total = 0,

payment_date = '2020-01-01'

WHERE invoice_id = 1

\\ 命令是将id为1的列的两项数据进行了更新

7.更新多行

与更新单行写法一样,只是注意筛选数据的条件。

MySQL中,默认在安全模式下运行,不允许一次更新多行数据

8.Update中使用子查询

UPDATE orders

SET comments = 'Gold customer'

WHERE customer_id IN

(SELECT customer_id

FROM customers

WHERE points > 3000)

上面就是选中customers表中points大于3000的顾客将其订单数据更新为金牌顾客,注意的是,由于选择要更新的项有多个,第一个WHERE用IN来选择

9删除行

DELETE FROM invoices

WHERE client_id = (子查询)

如果不加WHERE就是直接删除整个invoices表

mysql数据类型的学习心得_MySQL自学总结 (一到四章)相关推荐

  1. 《Python网络爬虫——从入门到实践》第六章将数据存储至MySQL数据库的学习心得与总结(出错与纠正方法)

    <Python网络爬虫--从入门到实践>第六章将数据存储至MySQL数据库的学习心得与总结(出错与纠正方法) 作为刚开始入门python的小白,对大数据,网络爬虫比较感兴趣.完全是自我修炼 ...

  2. OpenGL ES着色器语言之变量和数据类型(二)(官方文档第四章)

    OpenGL ES着色器语言之变量和数据类型(二)(官方文档第四章) 4.5精度和精度修饰符 4.5.1范围和精度 用于存储和展示浮点数.整数变量的范围和精度依赖于数值的源(varying,unifo ...

  3. R语言学习笔记——高级篇:第十四章-主成分分析和因子分析

    R语言 R语言学习笔记--高级篇:第十四章-主成分分析和因子分析 文章目录 R语言 前言 一.R中的主成分和因子分析 二.主成分分析 2.1.判断主成分的个数 2.2.提取主成分 2.3.主成分旋转 ...

  4. Linux(b站视频兄弟连)自学笔记第十四章——日志管理

    Linux(b站视频兄弟连)自学笔记第十四章--日志管理 简介 rsyslogd 日志轮替 简介 rsyslogd 日志轮替

  5. C++的学习心得和知识总结 第十五章(完美结束)内容极为重要

    本章重点:C++经典的例题大全解这一部分内容,非常重要.主要包括C++常见的经典例题.以及本人学习C++ primer的学习心得.和C++最为重要的核心知识点(设计模式.智能指针.STL等). 文章目 ...

  6. 《JavaScript高级程序设计(第四版)》红宝书学习笔记(2)(第四章:变量、作用域与内存)

    个人对第四版红宝书的学习笔记.不适合小白阅读.这是part2.持续更新,其他章节笔记看我主页. (记 * 的表示是ES6新增的知识点,记 ` 表示包含新知识点) 第四章:变量.作用域与内存 4.1 原 ...

  7. 《学习JavaScript数据结构与算法》 第四章笔记 栈

    文章目录 前言 一.栈? 二.构建两种栈的大致步骤 三.创建基于数组的栈 创建class Stack 定义用于操作栈的方法 使用栈 四.创建基于对象的栈 创建class Stack 定义用于操作栈的方 ...

  8. 关于我在学习Javaweb时对Linux服务器安装配置jdk,tomcat,mysql的一些学习心得

    学习javaweb有一段时间了,最近刚好完成一个小的web项目. 勿喷!!!!!!!! 主要参考问题: 1.jdk,tomcat,mysql的安装配置. 2.tomcat,mysql的开机自启(我不会 ...

  9. mysql初体验学习笔记_MySQL数据库初体验

    克隆表,将数据表的数据记录生成到新的表中 方法一: create table test01 like GCC01; #通过 LIKE 方法,复制GCC01表结构生成test01表 insert int ...

最新文章

  1. 服务器根目录文件配置文件,在文档根目录中存储安装和配置文件
  2. [CLR via C#]5.3 值类型的装箱和拆箱
  3. Linux下防火墙iptables用法规则详及其防火墙配置
  4. 【WP7】对象序列化
  5. C++_系列自学课程_第_9_课_C语言风格字符串_《C++ Primer 第四版》
  6. codefore 213 C Relay Race (朴素DP)
  7. CRM Fiori应用 Appointment的close date字段
  8. NC16886 炮兵阵地
  9. Codeforces Round #653 (Div. 3)
  10. [自动调参]深度学习模型的超参数自动化调优详解
  11. 面向对象举例(一) —— 顶点(vertex)、边(edge)与图(graph)
  12. python课程价格-少儿编程培训机构哪家好,儿童编程价格多少钱?家长知多少
  13. JAVA上百实例源码网站
  14. 安防监控系统的几个基础小知识
  15. 二次型对自变量向量的导数
  16. win10如何打开计算机窗口,Win10如何打开运行窗口_Win10打开运行窗口快捷键-192路由网...
  17. 《Java 后端面试经》微服务篇
  18. FLV科普11 FLV视频信息
  19. NANDFlash-W25N01GVZEIG的学习笔记
  20. GitHub学生认证,可以愉快的使用Copilot了

热门文章

  1. 射线和三角形的相交检测(ray triangle intersection test)
  2. Firebase可监控网页应用程序效能 更新其Analytics受众系统
  3. HTML初识HTML
  4. 【shell脚本学习-3】
  5. shell中日期的使用当前日期的加减
  6. Tensorboard详解(下篇)
  7. 高可用Hadoop平台-Oozie工作流之Hadoop调度
  8. myeclipse查询mysql出来的汉字是乱码
  9. POJ-1426 Find The Multiple
  10. 微服务怎么部署到服务器的_微服务的部署与发布:持续交付与持续部署微服务...