mysql删除所有男生_疯狂MySQL系列(二)

欢迎来到疯狂MySQL系列第二节

上一节我们主要介绍了MySQL的来历、简介,以及三个平台的安装方法

本节内容你将会学到:如何创建数据库,建表,以及表的CRUD(增删改查)

第一张表

首先我们进入mysql交互式命令行界面

打开终端,输入mysql -uroot,当出现mysql>时,说明你已经成功进入了

这是我们第一次进入MySQL,可以看看初始时候我们有哪些数据库

mysql> show databases;

+--------------------+

| Database |

+--------------------+

| information_schema | |

| mysql |

| performance_schema |

| sys |

+--------------------+

4 rows in set(0.03 sec)

可以看到初始的时候会有4个数据库,这4个数据库是MySQL自带的,具体有啥用我们以后再讲,这里我们来建立一个测试数据库test

mysql> create database test;

Query OK, 1 row affected (0.00 sec)

创建成功,现在我们进入这个数据库

mysql> use test;

Database changed

好了,现在我们已经进入test这个数据库了,以后我们的教学和测试都会在这个数据库里进行演示

既然数据库已经建好了,我们想看看里面有哪些表,该怎么看呢

mysql> show tables;

Empty set(0.00 sec)

空空如也,啥都没有。当然嘛,刚建立的数据库肯定是空的哇,别慌,现在我们创建我们人生中第一张表

我们以学校学生表作为对象,创建一张表student,用于管理学生的信息,建表语句如下:

CREATE TABLE `student` (

`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',

`name` VARCHAR(128) NOT NULL DEFAULT '' COMMENT '学生姓名',

`sex` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '1男2女',

PRIMARY KEY (`id`)

) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT '学生tb';

千万别忘了最后那个;号哦,在这个命令行中,MySQL区分一条语句的结束,就是以;号作为判断的,在结束之前,我们可以随便换行或者空格都行,反正最后必须加上;

这就是一张很简单的student表,现在我来解释下是什么意思id: 作为每一行的唯一标示,这个 id 叫做主键,它是必不可少的,没一张表都必须包含一个主键,这是数据库的规范

name:类型为 VARCHAR(128),这个类型叫变长字符串,允许最多存放128个字符,这里用来存放学生的姓名

sex:用来表示学生的性别,使用的是 TINYINT(1) 类型,这是MySQL里最小的整型类型,只有1个字节大小,这里用1来表示男生,2来表示女生

以上就是student表的数据类型说明啦,关于MySQL的数据类型,下一节我会专门讲这个,先不要急,咱们先慢慢玩下去

咱们再稍微解下最后一行是什么意思ENGINE=InnoDB:表示该表所用的数据库引擎为InnoDB,这个引擎是绝大部分情况下都会使用的,一般不会变,这里暂且不表

CHARSET=utf8mb4:表示字符集为utf8mb4,像VARCHAR这样的字符串类型,就会受到这个字符集的约束,这里也暂时不多解释

COLLATE=utf8mb4_general_ci:这个表示所使用的比较规则为utf8mb4_general_ci,这个是与上面的字符集相关的,也就是说不同的字符集会对应不同的比较规则,用于排序等等

COMMENT:这个很简单,就是对这个表进行一个简单的注释,说明这个表的用途

最后那一行,我们在建立绝大多数表的时候都是按照这个来,所以这里先不做过多解释,咱们现在不管建什么表,都先按这些规则来

好啦,表建立好了,如果你想看一下这个表的定义,可以输入下面的命令:

mysql> desc student;

+-------+--------------+------+-----+---------+----------------+

| Field | Type | Null | Key | Default | Extra |

+-------+--------------+------+-----+---------+----------------+

| id | int(11) | NO | PRI | NULL | auto_increment |

| name | varchar(128) | NO | | | |

| sex | tinyint(1) | NO | | 0 | |

+-------+--------------+------+-----+---------+----------------+

3 rows in set(0.00 sec)

可以很清晰的看到咱们表是如何定义的啦

总结

这里做一个小小的总结,对上面的内容进行一个小小的复习查看有哪些数据库:SHOW DATABASES

创建数据库:CREATE DATABASE [数据库名称];

删除数据库:DROP DATABASE [数据库名称];

选择数据库:USE [数据库名称];

查看该数据有哪些表:SHOW TABLES;

删除表:DROP TABLE [表名称];

查看表的定义:DESC [表名称];

建表语法:

CREATE TABLE (

字段名1 数据类型 [列级约束条件],

字段名2 数据类型 [列级约束条件],

...

[表级约束以及索引等]

)[数据库引擎] [字符集] [字符集比较规则] [表级注释];

插入数据

基于student表,咱们插入一行数据

INSERT INTO student (`name`, `sex`) VALUES ('小明', 1);

因为主键id是自增的,所以不需要咱们自己去显示地插入

现在student表已经新增了一条数据啦,咱们来查看一下

mysql> select* from student;

+----+--------+-----+

| id | name | sex |

+----+--------+-----+

| 1 | 小明 | 1 |

+----+--------+-----+

1 row in set(0.00 sec)

总结

插入操作的语法规则

INSERT [INTO] (列名1, 列名, ...) VALUES (列值1, 列值2, ...), (列值1, 列值2, ...) ...;列名需要和列值一一对应起来,只需要写你指定的数据列,对于没有指定的列,则该列的值为相应的DEFAULT的值,如果表定义时候没有指定DEFAULT,并且不是主键的话,则会抛出异常,数据插入失败

可以同时插入多条数据

插入的值一定要和该列的数据类型相匹配

列名如果要用引号包起来,那就只能用反引号 ``,这条规则适用于所有语句,当然你也可以不用引号,也是没问题的

更新数据

刚刚插入的小明同学改名字啦,现在需要更新下他的数据

UPDATE student SET name = '小张' WHERE name = '小明';

可以看到咱们在后面跟了WHERE子句,因为咱们要指定更新小明的名字,如果不指定的话,那表里所有的名字都叫小张了

同样,现在来查看下是否更新成功

mysql> select* from student;

+----+--------+-----+

| id | name | sex |

+----+--------+-----+

| 1 | 小张 | 1 |

+----+--------+-----+

1 row in set(0.00 sec)

成功修改!

总结

更新数据的语法规则

UPDATE SET 列名1 = 列值1, 列名2 = 列值2 ... ;更新时一定要注意 where 子句确定修改范围

多个列之间用,号隔开

删除数据

现在需要把刚刚修改的小张删除掉

DELETE FROM student WHERE name = '小张';

再来看看数据是否删除成功

mysql> select* from student;

Empty set(0.00 sec)

因为表里面就只有1条数据,现在删除之后表就空啦

总结

删除数据的语法规则

DELETE FROM ;和更新操作一样,注意 where 子句的范围

查询数据

前面的新增数据,更新数据和删除数据都非常简单,查询(Query)是MySQL中的重中之重,也是一个难点。我们在查询数据的时候,需要对查询结果进行筛选,还有需要确定显示的格式等等,咱们由浅入深,慢慢地剖析其中的奥妙

这里先介绍下查询的种类:单列数据查询

多列数据查询

子查询

连接查询

分组查询

以上只是对查询进行了一个粗略的分类,等我们具体用到的时候再进行分析

基于咱们的student表,本节先介绍简单的 单列数据查询和 多列数据查询

先插入几行数据,作为查询的基础

mysql> INSERT INTO student (name, sex) VALUES ('小明', 1), ('小红', 2), ('小张', 1);

Query OK, 3 rows affected (0.00 sec)

Records: 3 Duplicates: 0 Warnings: 0

查询1:查出名字为小明的数据

这是一条单列数据查询

mysql> SELECT* FROM student WHEREname = '小明';

+----+--------+-----+

| id | name | sex |

+----+--------+-----+

| 2 | 小明 | 1 |

+----+--------+-----+

1 row in set(0.00 sec)

查询2:查出性别为男的学生数据

很明显这是一条结果可能为多列的多列数据查询,由于咱们在表创建的时候规定了,sex字段为1的时候为男性,则查询语句如下

mysql> SELECT* FROM student WHEREsex = 1;

+----+--------+-----+

| id | name | sex |

+----+--------+-----+

| 2 | 小明 | 1 |

| 4 | 小张 | 1 |

+----+--------+-----+

2 rows in set(0.00 sec)

查询3:查出id大于2的数据

这也是一个多列数据的查询

mysql> SELECT* FROM student WHEREid > 2;

+----+--------+-----+

| id | name | sex |

+----+--------+-----+

| 3 | 小红 | 2 |

| 4 | 小张 | 1 |

+----+--------+-----+

2 rows in set(0.00 sec)

查询4:查出id范围在0~3的数据

这条语句需要用到BETWEEN AND进行范围查询

mysql> SELECT* FROM student WHEREid BETWEEN 0 AND 3;

+----+--------+-----+

| id | name | sex |

+----+--------+-----+

| 2 | 小明 | 1 |

| 3 | 小红 | 2 |

+----+--------+-----+

2 rows in set(0.00 sec)

写在最后

本节咱们讲了创建数据库,新增,修改,删除,以及简单的查询。接下来几节,咱们会系统地讲解,数据类型、高级查询等等MySQL的一系列知识,敬请期待吧

说明:本文首发于知乎专栏,同步于 简书 以及 CSDN 等平台,转发必须注明出处,违规转载必究

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值