我们先创建一个表格
创建的语法我们下一站会讲 也就是DDL语言 这里我们只要运行就行了:
USE data1;
DROP TABLE IF EXISTS project;
CREATE TABLE project(
项目编号 INT NOT NULL ,
项目识别码 INT NOT NULL ,
专利申请号 CHAR(20) NOT NULL ,
项目名称 CHAR(20) NOT NULL ,
项目负责人 CHAR(20) NOT NULL ,
CONSTRAINT pk_project PRIMARY KEY(项目编号,项目识别码,专利申请号,项目名称),
CONSTRAINT ck_responsibility CHECK(项目负责人 = 'Ryan' OR 项目负责人 = 'SST')
);
这样我们在data1数据库就有一张表名为project 是一个没有任何记录(行)只有列的表
然后我们利用INSERT 插入数据
语法就是
INSERT INTO [table]([column1], [clolumn2], [column3],)
VALUES([value1], [value2], [value3]);
所以我们可以这么写:
INSERT INTO project(项目编号, 项目识别码, 专利申请号, 项目名称, 项目负责人)
VALUES(1,2233,2333,'基于MEMS传感器的跌到检测系统','Ryan');
插入几行以后就是这个样子
输入多行数据 就逗号隔开即可 比如:
INSERT INTO `locations` (
`location_id`,
`street_address`,
`postal_code`,
`city`,
`state_province`,
`country_id`
)
VALUES
(
1000,
'1297 Via Cola di Rie',
'00989',
'Roma',
NULL,
'IT'
),
(
1100,
'93091 Calle della Testa',
'10934',
'Venice',
NULL,
'IT'
),
(
1200,
'2017 Shinjuku-ku',
'1689',
'Tokyo',
'Tokyo Prefecture',
'JP'
),
(
1300,
'9450 Kamiya-cho',
'6823',
'Hiroshima',
NULL,
'JP'
),
(
1400,
'2014 Jabberwocky Rd',
'26192',
'Southlake',
'Texas',
'US'
);
当然,栏目可以省略——只要你的数据是按栏目默认的顺序就行,注意数据的数量要和列的数量对的上:
INSERT INTO project VALUES(2,2233,2333,'基于树莓派和内置深度学习算法的','Ryan1');
有时少了也没事,SQL会认为那一列的数据为NULL 但是我建议不要这么写.
还有种奇葩的方法:采用键值对的方式 当然仅能输入一行数据
INSERT INTO project SET 项目编号=123,项目识别码=234,专利申请号=345,项目名称='基于stm32F4的zigbee组网系统',项目负责人='SST';
这种插入的时候不方便 不过修改UPDATE的时候就比较简洁了
修改其实就是利用WHERE筛选出需要改的行 然后进行修改
UPDATE project SET 项目负责人='SST'
WHERE 项目负责人 LIKE 'Ryan%';
这里我筛选的行就是所有项目负责人数据以‘Ryan’开头的行 然后将其修改更新为SST
当然 我们除了对单表操作 多表也是可以的
注意 多表不过是多表连接后形成新的一张表 然后针对新生成的表进行修改操作而已
男神女神案例中 我想修改所有张无忌的女朋友的电话号码为13333333333
修改前 我们查询一下
SELECT f.name AS 女神名字, m.`boyName` AS 男朋友名字, f.`phone` AS 女神手机号
FROM boys m INNER JOIN beauty f ON m.id = f.boyfriend_id
WHERE m.boyName='张无忌';
那么这个修改 单表是无法完成的 我们就利用内连接那套路 请看下面的方法(UPDATE [新生成的表] SET [] WHERE [])
USE data2;
UPDATE boys m INNER JOIN beauty f ON m.id = f.boyfriend_id
SET f.phone='13333333333'
WHERE m.boyName='张无忌';
UPDATE [表1] [表1别名] INNER|LEFT|RIGHT JOIN [表2] [表2别名] ON [连接条件]
SET [键值对]
WHERE [筛选条件];
其实讲完前面两个 这个无需多言了——
大体上 UPDATE和DELETE都是锁定某一行的数据 只不过看你想做的是 修改还是删除了
当然对于多表删除,还是有个细节要注意:你删除的是哪个表上的数据呢?
语法就是:
DELETE [要删除的表名字]
FROM [表1] [表1别名] INNER|LEFT|RIGHT JOIN [表2] [表2别名] ON [连接条件]
WHERE [筛选条件];
所以 你要是想删除 在女神表上所有张无忌的女朋友信息 你可以:
USE data2;
DELETE f
FROM beauty f INNER JOIN boys m ON f.`boyfriend_id` = m.`id`
WHERE m.`boyName`='张无忌';
因此 两个表男神表和女神表上的数据都想删除
就改成:
USE data2;
DELETE f, m
FROM beauty AS f INNER JOIN boys AS m ON f.`boyfriend_id` = m.`id`
WHERE m.`boyName`='张无忌';
这节就把DML讲完了 其实对于数据的操作挺简单的 但是下一节的DDL内容很容易和这节搞混 注意区分:
DML是对数据而言 DDL是对表 对数据库而言的
下一站:数据库学习之MySQL (二十三)—— DDL(一) 概述