暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL学习笔记04-插入、修改、删除数据_简单select查询

数据字节大爆炸 2021-08-10
296

前言时刻,这一篇文章是简单的增删改查操作,下一篇才是难点。

写作环境:

MacOS、MySQL8.0

写SQL工具:Navicat15.0和电脑自带终端

写作软件:Typora

作者:西园公子:www.zwjjiaozhu.top

首先先创建一个t7
表,以下所有命令均是对该表进行操作。


CREATE TABLE t7 (`name` VARCHAR(10), age TINYINT DEFAULT 20) CHARACTER SET utf8 COLLATE utf8_bin;
# 增加一个job字段,因为我是忘记添加了,你也可以放到上面
ALTER TABLE t7 ADD job VARCHAR(20) NOT NULL;

# 输出当前数据库下所有表的名称
SHOW TABLES;

复制



01
 插入表数据

1)指定所有字段对应的数据:

此时可以省略部分字段。

# 1.1 全部插入
INSERT INTO t7 VALUE('张', 18, '干饭人');

复制


2)只指定几个字段的值:

不指定某字段的值时:

  • 若该字段设置了默认值,则默认插入该值,若没有则插入空白NULL

  • 若该字段设置了不允许为空not null,有默认值就插入,若没有则会报错。

# 1.2 插入部分数据
INSERT INTO t7 (`name`, job) VALUES('章', '敲键盘'); # ✅
INSERT INTO t7 (`name`) VALUES('章'); # ❌

复制


02
 修改表数据


如果添加 where 子句的话,则默认修改表中全部数据。


UPDATE `table_name` SET column_name='value' [WHERE 条件];
复制


小例子:

# 2、修改表数据
# 2.1 不加选择显示where的话,则默认修改表中全部数据
UPDATE t7 SET job='键盘';
# 2.2 添加where限制条件,只有where为true才修改。
UPDATE t7 SET age=19 WHERE `name`='张';

复制



03
 删除表数据


如果不加 where 子句,则默认选择全表,结果就是删除表中的全部内容。


DELETE FROM t9 [WHERE 条件];
复制


小例子:

mysql> DELETE FROM t9 WHERE name='张飞';
Query OK, 1 row affected (0.00 sec)

复制


04
 查询数据


首先新建表t9,并插入一些测试数据。


# 1、创建一个表
CREATE TABLE t9 (`name` VARCHAR(20), math TINYINT DEFAULT 0, chinese TINYINT DEFAULT 0, english TINYINT DEFAULT 0) CHARACTER SET utf8 COLLATE utf8_bin;

# 2、插入数据
INSERT INTO t9 VALUES('张飞', 68, 76, 52);
INSERT INTO t9 (`name`, chinese) VALUES('关羽', 58);
INSERT INTO t9 VALUES('宋江', 98, 96, 82);
INSERT INTO t9 VALUES('宋无缺', 98, 96, 92);
INSERT INTO t9 VALUES('我是及时雨', 78, 86, 92);

复制


4.1
 简单查询


1)查询表中全部数据:

select * from table_name其中*表所有列

mysql> select * from t9;
+--------+------+---------+---------+
| name | math | chinese | english |
+--------+------+---------+---------+
| 张飞 | 68 | 76 | 52 |
| 关羽 | 0 | 58 | 0 |
| 宋江 | 98 | 96 | 82 |
+--------+------+---------+---------+
3 rows in set (0.00 sec)

复制


2)只查询部分列内容:

select column_name1, ..., column_name6 from table_name,其中column_name代表列名。

mysql> select name, math, english from t9;
+--------+------+---------+
| name | math | english |
+--------+------+---------+
| 张飞 | 68 | 52 |
| 关羽 | 0 | 0 |
| 宋江 | 98 | 82 |
+--------+------+---------+
3 rows in set (0.00 sec)

复制


4.1
 where筛选作用


写 where 语句,就不得不介绍一下 where 子句中的运算符。

  1. 比较运算符:

    >大于)、<大于)、>=(大于)、<=(大于)<>(不等于)、!=不等于)。

    between A and B(在 A 和 B 之间吗?包括 A 和 B)

    in(set)在集合 set 中吗?)

    is NULL判断为空吗?)

    like 'a%'(模糊匹配,判断是否像这个字符串,%表示可以匹配任何长度的字符串),或者not like 'a%'

  2. 逻辑运算符:从左到右运算,括号最优先

    and:逻辑与or:逻辑或,not:逻辑非。


一笼小问题




1)筛选名字是宋开头的同学:

# like
mysql> SELECT * FROM t9 WHERE `name` LIKE '宋%';
+-----------+------+---------+---------+
| name | math | chinese | english |
+-----------+------+---------+---------+
|
 宋江 | 98 |      96 | 82 |
| 宋无缺 |   98 | 96 |      92 |
+-----------+------+---------+---------+

复制


2)筛选出数学成绩是78或者68的同学:

# in
mysql> SELECT * FROM t9 WHERE math IN (78, 68); # in
+-----------------+------+---------+---------+
| name | math | chinese | english |
+-----------------+------+---------+---------+
|
 张飞 | 68 |      76 | 52 |
| 我是及时雨 |   78 | 86 |      92 |
+-----------------+------+---------+---------+

复制


3)筛选数学大于70分且英语不等于82,或者是语文在90和100之间的同学:

mysql> SELECT * FROM t9 WHERE math > 70 and english != 82 OR chinese BETWEEN 90 AND 100;
+-----------------+------+---------+---------+
| name | math | chinese | english |
+-----------------+------+---------+---------+
|
 宋江 | 98 |      96 | 82 |
| 我是及时雨 |   78 | 86 |      92 |
|
 宋无缺 | 98 |      96 | 92 |
+-----------------+------+---------+---------+

复制



4.3
 as 起别名


1)起别名可利于展示:

mysql> SELECT `name` AS '姓名', math AS '数学' FROM t9;
+-----------------+--------+
| 姓名 | 数学 |
+-----------------+--------+
|
 张飞 | 68 |
| 关羽 |      0 |
|
 宋江 | 98 |
| 我是及时雨 |     78 |
|
 宋无缺 | 98 |
+-----------------+--------+

复制

复制

2)美观:

前面定义的别名,后面可以使用,简化了代码。

mysql> SELECT `name`, (math+chinese+english) AS total_score FROM t9 ORDER BY total_score ASC;
+-----------------+-------------+
| name | total_score |
+-----------------+-------------+
|
 关羽 | 58 |
| 张飞 |         196 |
|
 我是及时雨 | 256 |
| 宋江 |         276 |
|
 宋无缺 | 286 |
+-----------------+-------------+

复制



4.5
 排序


1)升序order by column_name ASC若不设置 ASC 则默认就是升序

mysql> SELECT name, math FROM t9 ORDER BY math ASC;
+-----------------+------+
| name | math |
+-----------------+------+
|
 关羽 | 0 |
| 张飞 |   68 |
|
 我是及时雨 | 78 |
| 宋江 |   98 |
|
 宋无缺 | 98 |
+-----------------+------+

复制


2)降序:order by column_name DESC

mysql> SELECT name, math FROM t9 ORDER BY math DESC;
+-----------------+------+
| name | math |
+-----------------+------+
|
 宋江 | 98 |
| 宋无缺 |   98 |
|
 我是及时雨 | 78 |
| 张飞 |   68 |
|
 关羽 | 0 |
+-----------------+------+

复制



总结


Just do it!

文章转载自数据字节大爆炸,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论