0
点赞
收藏
分享

微信扫一扫

sky07笔记

桑二小姐 04-12 22:30 阅读 1

基础操作

一、增删改查

1、添加数据

INSERT INTO 表名[(字段名[,字段名])] VALUES (值的列表);
--[]表示里面的内容可选

添加数据分为插入数据记录和插入查询结果

插入数据记录
如果一个字段约束条件为空或者是主键约束有自增,那么在添加数据记录时可以不给它赋值,其他的情况一定要给其赋值。

如果要将一个字段改为非空约束,那么必须先检查已有的数据记录中这个字段是否为空,将为空的记录删除之后再进行改为非空约束的操作。

部分插入一条数据记录是可以的,前提是没有赋值的字段,一定要让MySQL知道如何处理,比如可以为空、有默认值,或者是自增约束字段等等,否则MySQL会提示错误的。

--插入数据
INSERT INTO demo.campus
(
name,
age,
gender
)
VALUES
(
'Mark',
20,
'男'
);
--将字段name修改为非空约束
UPDATE campu SET name = '' WHERE name IS NULL;
ALTER TABLE campus MODIFY name varchar(50) NOT NULL;

插入查询结果
MySQL支持把查询的结果插入到数据表中,我们可以指定字段,甚至是数值,插入到数据表中。语法结构如下:

INSERT INTO 表名(字段名)
SELECT 字段名或值
FROM 表名
WHERE 条件

2、删除数据

删除数据的语法:

DELETE FROM 表名
WHERE 条件

--删除campus表里的所有内容
DELETE FROM demo.campus;

MySQL有一种安全性设置,主要就是为了防止删除或者修改数据时出现误操作,导致删除或修改了不相关的数据。
如对数据的删除或修改操作中必须包含WHERE条件。而且这个WHERE条件中,必须用到主键约束或者唯一性约束的字段。

3、修改数据

UPDATE 表名
SET 字段名=WHERE 条件

4、查询语句

语法结构:

SELECT *|字段列表
FROM 数据源
WHERE 条件
GROUP BY 字段	--经常与MySQL聚合函数一起使用
HAVING 条件		--用于筛选查询结果,跟WHERE类似
ORDER BY 字段
LIMIT 起始点,行数

FROM后面括号中的叫派生部分或子查询,必须给这个派生表用AS取一个别名。举例如下:

SELECT a.goodsname,price
FROM (
SELECT * 
FROM demo.goodsmaster
) AS a;

二、主键

设置数据表主键的三种方式:数据表的业务字段做主键、添加自增字段
做主键,以及添加手动赋值字段做主键。

  • 用业务字段做主键,看起来很简单,但是我们应该尽量避免这样做。因为我们无法预测未来会不会因为业务需要,而出现业务字段重复或者重用的情况。
  • 自增字段做主键,对于单机系统来说是没问题的。但是,如果有多台服务器,各自都可以录入数据,那就不一定适用了。因为如果每台机器各自产生的数据需要合并,就可能会出现主键重复的问题。
  • 我们可以采用手动赋值的办法,通过一定的逻辑, 确保字段值在全系统的唯一性,这样就可以规避主键重复的问题了。

刚开始使用MySQL时,很多人都很容易犯的错误是喜欢用业务字段做主键,想当然地认为了解业务需求,但实际情况往往出乎意料,而更改主键设置的成本非常高。

所以,如果你的系统比较复杂,尽量给表加一个字段做主键,采用手动赋值的办法,虽然系统开发的时候麻烦一点,却可以避免后面出大问题。

三、外键和连接

在MySQL中,为了把2个表关联起来,会用到2个重要的功能:外键(FOREIGN KEY)和连接(JOIN) 。外键需要在创建表的阶段就定义;连接可以通过相同意义的字段把2个表连接起来,用在查询阶段。

1、外键

假设我们有2个表,分别是表A和表B,它们通过一个公共字段" id " 发生关联关系,我们把这个关联关系叫做R。

如果" id " 在表A中是主键,那么,表A就是这个关系R中的主表。相应的,表B就是这个关系中的从表,表B中的"id" ,就是表B用来引用表A中数据的,叫外键。

所以,外键就是从表中用来引用主表中数据的那个公共字段。
在这里插入图片描述
在MySQL中,外键是通过外键约束来定义的。外键约束就是约束的一种,它必须在从表中定义,包括指明哪个是外键字段,以及外键字段所引用的主表中的主键字段是什么。
MySQL系统会根据外键约束的定义,监控对主表中数据的删除操作。如果发现要删除的主表记录,正在被从表中某条记录的外键字段所引用,MySQL就会提示错误,从而确保了关联数据不会缺失。

--创建表时定义外键约束
CREATE TABLE 从表名
(
字段名 类型,
……
--定义外键约束,指出外键字段和参照的主表字段
CONSTRAINT 外键约束名
FOREIGN KEY (字段名) REFERENCES 主表名 (字段名)
)

--通过修改定义外键
ALTER TABLE 从表名 ADD CONSTRAINT 约束名 
FOREIGN KEY 字段名 REFERENCES 主表名 (字段名)

2、连接

在MySQL中,有2种类型的连接,分别是内连接(INNER JOIN)和外连接(OUTER JOIN)

  • 内连接表示查询结果只返回符合连接条件的记录,这种连接方式比较常用;
  • 外连接则不同,表示查询结果返回某一个表中的所有记录,以及另一个表中满足连接条件的记录。

内连接

在MySQL里面,关键字JOIN、INNER JOIN、CROSS JOIN的含义是一样的,都表示内连接。我们可以通过JOIN把两个表关联起来,来查询两个表中的数据。

外连接
跟内连接只返回符合连接条件的记录不同的是,外连接还可以返回表中的所有记录,它包括两类,分别是左连接和右连接。

  • 左连接,一般简写成LEFT JOIN,返回左边表中的所有记录,以及右表中符合连接条件的记录。
  • 右连接,一般简写成RIGHT JOIN,返回右边表中的所有记录,以及左表中符合连接条件的记录。
--内连接
SELECT 字段名
FROM 表名 AS a
JOIN 表名 AS b
ON (a.字段名=b.字段名);

--左外连接
SELECT 字段名
FROM 表名 AS a
LEFT JOIN 表名 AS b
ON (a.字段名=b.字段名);
举报

相关推荐

3.2笔记

《6.824笔记》

4.26笔记

12/31笔记

as3笔记

1/19笔记

0 条评论