榆林高端网站建设如何设计,网站怎样做注册窗口,php 网站制作的意义,织梦可以做商城网站吗目录
1、新增操作(Create)
1.1 单行数据 全列插入
1.2 多行数据 全列插入
1.3 单行数据 指定列插入
2、修改操作(Update)
3、删除操作(Delete) 1、新增操作(Create)
如何给一张表新增数据呢#xff1f; 新增(Create)#xff0c;在我们数据库中#xff0c;用 ins… 目录
1、新增操作(Create)
1.1 单行数据 全列插入
1.2 多行数据 全列插入
1.3 单行数据 指定列插入
2、修改操作(Update)
3、删除操作(Delete) 1、新增操作(Create)
如何给一张表新增数据呢 新增(Create)在我们数据库中用 insert into 来进行新增操作首先我们需要有一张表
create table student (id int,name varchar(10),sex varchar(2)
);
现在我们就对这个 student 这个表进行增加数据的操作。
1.1 单行数据 全列插入
这个意思就是一次只插入一行每一列都会插入数据不存在没有不插入数据的列
insert into student values(1, 张三, 男);
这样我们就插入了一条语句了这里也可以用 value 不用 values使用 value 在一次性插入多行的时候效率更优而 values 在只插入一行的时候速度更优所以不要看到有一个 s 就表示多行就更快了其实是反着的。
1.2 多行数据 全列插入
如果一次性我有很多行数据想要插入每列都要插入数据如何做呢
insert into student value (2, 小美, 女),(3, 赵六, 男);
-- Query OK, 2 rows affected (0.00 sec)
-- Records: 2 Duplicates: 0 Warnings: 0
这里通过 mysql 客户端给出的信息也能看到我们成功插入了 2 行数据了。
1.3 单行数据 指定列插入
在我们这个 student 表中所有的列都是允许为空值的也就是表示该列中可以不填任何数据如果我们要插入 李四而 李四又 不想告诉别人他的性别那我们就可以不用给 李四 插入性别那一列了
insert into student (id, name) values (4, 李四);
-- Query OK, 1 row affected (0.00 sec)
那里面 sex 这一列没有被填充怎么办呢那肯定就是用默认值去填充了我们这里就是 NULL
desc student;
-----------------------------------------------
| Field | Type | Null | Key | Default | Extra |
-----------------------------------------------
| id | int(11) | YES | | NULL | |
| name | varchar(10) | YES | | NULL | |
| sex | varchar(2) | YES | | NULL | |
-----------------------------------------------
-- 3 rows in set (0.00 sec)
注意values () 括号中的内容个数和类型一定要和表的结构匹配如果是指定列插入试具体情况而定
insert into student(id, name) values(1, 张三, 男);
-- ERROR 1136 (21S01): Column count doesnt match value count at row 1
就比如说我指定插入 id 和 name 这两列但是我插入了三列这样就会报错多行数据 指定列插入也是如此这里就在讲述了。 2、修改操作(Update)
很多同学在学习阶段不重视修改操作导致在面试的时候连修改的 SQL 是写错的所以增删改查一个都不能少
语法
update 表名 set 列名 值 where 条件; 我们先来看下表中有哪些数据
select * from student;
-----------------------------------
| id | name | sex | java | python |
-----------------------------------
| 1 | 张三 | 男 | 88.20 | 87.90 |
| 2 | 李四 | 男 | 92.50 | 78.20 |
| 3 | 小美 | 女 | 80.90 | 68.60 |
| 4 | 小花 | 男 | 97.00 | 71.30 |
| 5 | 李四 | 男 | NULL | NULL |
| 6 | 小花 | 女 | NULL | NULL |
-----------------------------------
-- 6 rows in set (0.02 sec)
● 这里 python 老师觉得有些同学分数太低决定把 python 分数低于 80 分的同学加上 5 分
update student set python python 5 where python 80;
-- Query OK, 3 rows affected (0.00 sec)
-- Rows matched: 3 Changed: 3 Warnings: 0mysql select * from student;
-----------------------------------
| id | name | sex | java | python |
-----------------------------------
| 1 | 张三 | 男 | 88.20 | 87.90 |
| 2 | 李四 | 男 | 92.50 | 83.20 |
| 3 | 小美 | 女 | 80.90 | 73.60 |
| 4 | 小花 | 男 | 97.00 | 76.30 |
| 5 | 李四 | 男 | NULL | NULL |
| 6 | 小花 | 女 | NULL | NULL |
-----------------------------------
-- 6 rows in set (0.00 sec)
这里我们发现 id 为 2id 为 3 id 为 4的同学 python 分数都加了 5 分而后面两个 python 成绩为 NULL 的同学为什么没有加呢前面不是说过 NULL 是最小值吗但是这里我们注意NULL 是最小值但是 NULL 是无法进行算数运算的 注意update 操作是实际在修改服务器硬盘上的数据 ● 将所有同学的 java 成绩减少 5 分
update student set java java - 5;
-- Query OK, 4 rows affected (0.00 sec)
-- Rows matched: 6 Changed: 4 Warnings: 0mysql select * from student;
-----------------------------------
| id | name | sex | java | python |
-----------------------------------
| 1 | 张三 | 男 | 83.20 | 87.90 |
| 2 | 李四 | 男 | 87.50 | 83.20 |
| 3 | 小美 | 女 | 75.90 | 73.60 |
| 4 | 小花 | 男 | 92.00 | 76.30 |
| 5 | 李四 | 男 | NULL | NULL |
| 6 | 小花 | 女 | NULL | NULL |
-----------------------------------
-- 6 rows in set (0.00 sec)
上述可以发现如果 update 后面不加 where 条件的话默认就是对指定列的每一行都匹配上了仍然还是有空值因为空值是无法进行算数运算的 注意这里的 java java - 5一定不要写成 java - 5因为 SQL 是一门比较老的语言很多的语法细节和 Java 啥的还是差别比较大的。 ● 如果小美考试作弊了被老师发现了每一科的成绩都将按照 0 分进行处理这时我们 update 也可以同时去修改多个列
update student set java 0, python 0 where name 小美;
-- Query OK, 1 row affected (0.00 sec)
-- Rows matched: 1 Changed: 1 Warnings: 0mysql select * from student;
-----------------------------------
| id | name | sex | java | python |
-----------------------------------
| 1 | 张三 | 男 | 83.20 | 87.90 |
| 2 | 李四 | 男 | 87.50 | 83.20 |
| 3 | 小美 | 女 | 0.00 | 0.00 |
| 4 | 小花 | 男 | 92.00 | 76.30 |
| 5 | 李四 | 男 | NULL | NULL |
| 6 | 小花 | 女 | NULL | NULL |
-----------------------------------
-- 6 rows in set (0.00 sec)
● 学校为了避免同学们成绩相差过大而失去信心现需将总分为前两名同学每科成绩降低 3 分
update student set java java - 3, python python - 3 order by java python desc limit 2;
-- Query OK, 2 rows affected (0.00 sec)
-- Rows matched: 2 Changed: 2 Warnings: 0
这个 SQL 执行是这样的先按照总分进行降序排序然后再只选取两个由于没有 where 条件所以匹配的是对应列所有行但是由于 limit 2限制了只有 2 行所以就能达到针对前两名的总分减 3 了
mysql select * from student;
-----------------------------------
| id | name | sex | java | python |
-----------------------------------
| 1 | 张三 | 男 | 80.20 | 84.90 |
| 2 | 李四 | 男 | 84.50 | 80.20 |
| 3 | 小美 | 女 | 0.00 | 0.00 |
| 4 | 小花 | 男 | 92.00 | 76.30 |
| 5 | 李四 | 男 | NULL | NULL |
| 6 | 小花 | 女 | NULL | NULL |
-----------------------------------
-- 6 rows in set (0.00 sec)
通过查询修改后的发现确实总分前两名的同学每科成绩都减少了 3 分。 对于 update 操作我们也需要谨慎update 中的条件务必保证要是正确的千万不能把不该改的数据给改了 3、删除操作(Delete)
delete from 表名 where 条件;
● 删除 java 成绩或者 python 成绩为 NULL 的同学信息
delete from student where java NULL or python NULL;
-- Query OK, 2 rows affected (0.01 sec)mysql select * from student;
-----------------------------------
| id | name | sex | java | python |
-----------------------------------
| 1 | 张三 | 男 | 80.20 | 84.90 |
| 2 | 李四 | 男 | 84.50 | 80.20 |
| 3 | 小美 | 女 | 0.00 | 0.00 |
| 4 | 小花 | 男 | 92.00 | 76.30 |
-----------------------------------
-- 4 rows in set (0.00 sec) 注意 删除操作也是在操作数据库服务器的硬盘需要小心 delete 的操作后面的条件是可以跟 update 一样的支持 whereorder bylimit 等操作。
如果没有写任何条件那就是把整个表中的数据都删除了
delete from student;
-- Query OK, 4 rows affected (0.00 sec)select * from student;
-- Empty set (0.00 sec)
对于这两期的内容来说并没有什么难点需要是多加练习熟悉 SQL 的语法不要去记忆一些关键字一定要孰能生巧你敲多了自然就记住了 下期预告【MySQL】查询操作基础篇