当前位置: 首页 > news >正文

MySQL数据库专栏(二)SQL语句基础操作

目录


数据库操作
        创建数据库
        查看数据库
        选择数据库
        删除数据库
数据表操作
        数据表数据类型
        数据表列约束
        数据表索引
        创建表
        查看表
        查看表结构
        删除表
数据表的增删改操作
        数据插入
        数据修改
        数据删除


1、数据库操作

1.1、创建数据库

格式:create database if not exists [数据库名称] character set [字符集] COLLATE [排序规则];

例如:创建数据库db_demo使用utf8mb4编码,utf8mb4_general_ci的排序规则

create database if not exists db_demo character set utf8mb4 COLLATE utf8mb4_general_ci;

if not exists:判断数据库是否存在,如果不存在则创建
db_demo:数据库名称
character set utf8mb4:设置字符集为utf8mb4
COLLATE utf8mb4_general_ci:设置排序规则为utf8mb4_general_ci

修改数据库编码

ALTER DATABASE db_demo CHARACTER SET=utf8;

1.2、查看数据库

show databases;

+--------------------+
| Database           |
+--------------------+
| db_demo            |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

查看数据库定义

show create database db_demo;

+----------+-----------------------------------------------------------------------------------------------------------------------------------+
| Database | Create Database                                                                                                                   |
+----------+-----------------------------------------------------------------------------------------------------------------------------------+
| db_demo  | CREATE DATABASE `db_demo` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */ |

1.3、选择数据库

use db_demo;

1.4、删除数据库

drop database if exists db_demo;

1.5、MySQL数据库命名规范

        可以采用26个英文字母 (不区分大小写) 和0-9的自然数 (一般不需要) 加上下划线 ‘_’ 组成,命名简介明确 (School),多个单词用下划线 ‘_’ 分隔,一个项目一个数据库,多个项目慎用同一个数据库

2、数据表操作

2.1、数据表数据类型

2.1.1、整数类型

        整数类型是数据库中最基本的数据类型。标准SQL中支持INTEGER和SMALLINT这两种数据类型。MySQL数据库除了支持这两种类型以外,还扩展支持了TINYINT、MEDIUMINT和BIGINT。下表从不同整数类型的字节数、取值范围等方面进行对比。

 

使用场景:

TINYINT:适用于存储小范围整数值,如布尔值(0 或 1)、年龄等。

SMALLINT:适用于存储中小范围整数值,如年份、商品数量等。

MEDIUMINT:适用于存储中等范围整数值,如大型系统的用户 ID、订单编号等。

INT:适用于存储大范围整数值,如用户 ID、订单编号、库存量等。

BIGINT:适用于存储非常大范围整数值,如银行账户余额、大型电商系统的订单编号等。

实现原理: 整型数据类型在 MySQL 内部是通过固定长度的字节数组实现的,依据存储数据的范围不同,分配的字节数也不同。无符号整型数据类型通过去掉符号位,扩大了可表示的数值范围。

2.1.2、小数类型

        数据表中用浮点数类型和定点数类型来表示小数。浮点数类型包括单精度浮点数(FLOAT型)和双精度浮点数(DOUBLE型)。定点数类型就是DECIMAL型。下面从这三种类型的字节数、取值范围等方面进行对比,如下表所示。

 

三种类型的区别:

float数值类型用于表示单精度浮点数值,而double数值类型用于表示双精度浮点数值,float和double都是浮点型,而decimal是定点型。

2.1.3、日期类型

日期与时间类型是为了方便在数据库中存储日期和时间而设计的,数据库有多种表示日期和时间的数据类型。其中,YEAR类型表示年,DATE类型表示日期,TIME类型表示时间,DATETIME和TIMESTAMP表示日期和时间。下面从这5种日期与时间类型的字节数、取值范围和零值等方面进行对比,如下表所示。

2.1.4、字符串类型

        CHAR类型和VARCHAR类型,CHAR类型和VARCHAR类型都在创建表时指定了最大长度,其基本形式如下:字符串类型(M),其中“字符串类型”参数指定了数据类型为CHAR类型还是VARCHAR类型;M参数指定了该字符串的最大长度为M。例如,CHAR(4)就是数据类型为CHAR类型,其最大长度为4。

        CHAR类型的长度是固定的,在创建表时就指定了。其长度可以是0~255的任意值。例如,CHAR(100)就是指定CHAR类型的长度为100。CHAR 存储值时,它们会用空格右填充到指定的长度。

        VARCHAR类型的长度是可变的,在创建表时指定了最大长度。定义时,其最大值可以取0~65535之间的任意值。指定VARCHAR类型的最大值以后,其长度可以在0到最大长度之间。例如,VARCHAR(100)的最大长度是100,但是不是每条记录都要占用100个字节,而是在这个最大值范围内使用多少就分配多少。VARCHAR类型实际占用的空间为字符串的实际长度加1或2,这样即可有效节约系统的空间。

2.1.5、TEXT类型

     TEXT类型是一种特殊的字符串类型,包括TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT,其长度和存储空间的对比下表所示:

 

         各种TEXT类型的区别在于允许的长度和存储空间不同。因此,在这几种TEXT类型中,根据需求选取既能满足需要又节省空间的类型即可。

2.1.6、ENUM类型

        ENUM类型又称为枚举类型。在创建表时,ENUM类型的取值范围以列表的形式指定,其基本形式如下:

        属性名  ENUM('值1',  '值2', …, '值n'),其中,“属性名”参数指字段的名称,“值n”参数表示列表中的第n个值。ENUM类型的值只能取列表中的一个元素。其取值列表中最多能有65535个值。如果数据值列表在255个以内,那么一个字节就够,如果超过255但是小于65535,那么系统采用两个字节保存。列表中的每个值独有一个顺序排列的编号,MySQL中存入的是这个编号,而不是列表中的值。默认编号从1开始!Enum(‘男’,’女’,‘选择保密’)  # ‘男’=>1  ‘女’=>2  ‘选择保密’=> 3

        如果ENUM类型加上了NOT NULL属性,其默认值为取值列表的第一个元素。如果不加NOT NULL属性,ENUM类型将允许插入NULL,而且NULL为默认值。

2.1.7、SET类型

        在创建表时,SET类型的取值范围就以列表的形式指定了,其基本形式如下:属性名  SET('值1',  '值2', …, '值n'),其中,属性名参数指字段的名称,“值n”参数表示列表中的第n个值,这些值末尾的空格将会被系统直接删除。其基本形式与ENUM类型一样。SET类型的值可以取列表中的一个元素或者多个元素的组合。取多个元素时,不同元素之间用逗号隔开。SET类型的值最多只能是由64个元素构成的组合。

2.1.8、二进制类型

        二进制数据和文本数据在mysql 中的最大区别在于:二进制类型存储原始的二进制数据(如图片,视频,exe文件等)。文本类型(TEXT)用来存储字符字符串(如由英文字符、中文字符或其它语言字符组成的字符串)。二进制类型没有字符集,并且排序和比较基于列值字节的数值。而TEXT类型有字符集,并且根据字符集的校对规则对值进行排序和比较。二进制类型是存储二进制数据的数据类型,包括BINARY、VARBINARY、BIT、TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。二进制类型之间的对比如下表所示。

2.2、数据表列约束

2.2.1、列约束概念

        数据表的列约束(列的限制)是在数据库表中定义列时,为了保证数据的完整性和一致性而设置的规则。列约束可以确保列中的数据有效、有意义,并满足特定的业务规则

2.2.2、主键约束

        设置表字段的主键约束(PRIMARY KEY,PK)

        主键是表的一个特殊字段,能唯一标识该表中的每条信息。主键和记录的关系,如同身份证和人的关系。主键用来标识每个记录,每个记录的主键值都不同。身份证用来表明人的身份,每个人都具有唯一的身份证号。设置表的主键是指在创建表时设置表的某个字段为该表的主键。

        主键的主要目的是帮助数据库管理系统以最快的速度查找到表的某一条信息。主键必须满足的条件就是主键必须是唯一的,表中任意两条记录的主键字段的值不能相同,并且是非空值。主键可以是单一的字段,也可以是多个字段的组合。

        以t_user表为实DROP TABLE IF EXISTS `t_department`;

DROP TABLE IF EXISTS `t_user`;

CREATE TABLE IF NOT EXISTS `t_user` (

  `id` INT unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',

  `user_name` varchar(128) NOT NULL DEFAULT '' COMMENT '登录名',

  `password` varchar(512) NOT NULL DEFAULT '' COMMENT '密码',

  `nick_name` varchar(128) NOT NULL DEFAULT '' COMMENT '昵称',

  `user_no` varchar(128) NOT NULL DEFAULT '' COMMENT '身份证号',

  `status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '0(正常);1(禁用)',

  `phone` char(11) NOT NULL DEFAULT '' COMMENT '手机号',

  PRIMARY KEY (`id`),

  UNIQUE KEY `user_name` (`user_name`),

  UNIQUE KEY `phone` (`phone`)

) ENGINE = InnoDB DEFAULT CHARACTER SET = utf8 COLLATE = utf8_bin;

        使用DESC命令查看表结构:

Desc t_user;
+-----------+--------------+------+-----+---------+----------------+
| Field     | Type         | Null | Key | Default | Extra          |
+-----------+--------------+------+-----+---------+----------------+
| id        | int unsigned | NO   | PRI | NULL    | auto_increment |
| user_name | varchar(128) | NO   | UNI |         |                |
| password  | varchar(512) | NO   |     |         |                |
| nick_name | varchar(128) | NO   |     |         |                |
| user_no   | varchar(128) | NO   |     |         |                |
| status    | tinyint      | NO   |     | 0       |                |
| phone     | char(11)     | NO   | UNI |         |                |
+-----------+--------------+------+-----+---------+----------------+

        可以看到id列的Key字段值为PRI,表示该列为主键。

2.2.3、外键约束

        设置表字段的外键约束(FOREIGN KEY,FK)

        外键是表的一个特殊字段,外键约束是为了保证多个表(通常为两个表)之间的参照完整性,即构建两个表的字段之间的参照关系。

        设置外键约束的两个表之间具有父子关系,即子表中某个字段的取值范围由父表决定。例如,表示一个部门和员工关系,即每个部门有多个员工。首先应该有两个表:部门表和员工表,然后员工表有一个表示部门编号的字段no,其依赖于部门表的主键,这样字段no就是员工表的外键,通过该字段员工表和部门表建立了关系。

        实例

DROP TABLE IF EXISTS `t_department`;

CREATE TABLE IF NOT EXISTS `t_department` (

  `department_no` INT unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',

  `department_name` varchar(128) NOT NULL DEFAULT  ''  COMMENT '部门名称',

  PRIMARY KEY (`department_no`),

  UNIQUE KEY `department_name` (`department_name`)

) ENGINE = InnoDB DEFAULT CHARACTER SET = utf8 COLLATE = utf8_bin;

DROP TABLE IF EXISTS `t_employee`;

CREATE TABLE IF NOT EXISTS `t_employee` (

  `id` INT unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',

  `department_no` INT unsigned NOT NULL DEFAULT  '0'  COMMENT '部门表id',

  `name` varchar(128) NOT NULL DEFAULT  ''  COMMENT '登录名',

  `position` varchar(128) NOT NULL DEFAULT  ''  COMMENT '岗位',

  `phone` char(11) NOT NULL DEFAULT '' COMMENT '手机号',

`salary` INT unsigned NOT NULL DEFAULT  '0'  COMMENT '薪资',

  PRIMARY KEY (`id`),

  FOREIGN KEY (`department_no`) REFERENCES `t_department`(`department_no`),

  INDEX `name` (`name`),

  UNIQUE KEY `phone` (`phone`)

) ENGINE = InnoDB DEFAULT CHARACTER SET = utf8 COLLATE = utf8_bin;

2.2.4、非空约束

        设置表字段的非空约束(NOT NULL, NK)

        当数据库表中的某个字段上的内容不希望设置为NULL时,可以使用NK约束进行设置。NK约束在创建数据库表时为某些字段上加上“NOT NULL”约束条件,保证所有记录中的该字段都有值。如果在用户插入的记录中该字段为空值,那么数据库管理系统会报错。

        设置表中某字段的NK约束非常简单,查看帮助文档可以发现,在MySQL数据库管理系统中是通过SQL语句NOT NULL来实现的。

        实例

DROP TABLE IF EXISTS `t_department`;

CREATE TABLE IF NOT EXISTS `t_department` (

  `department_no` INT unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',

  `department_name` varchar(128) NOT NULL DEFAULT  ''  COMMENT '部门名称',

  PRIMARY KEY (`department_no`),

  UNIQUE KEY `department_name` (`department_name`)

) ENGINE = InnoDB DEFAULT CHARACTER SET = utf8 COLLATE = utf8_bin;

DROP TABLE IF EXISTS `t_employee`;

CREATE TABLE IF NOT EXISTS `t_employee` (

  `id` INT unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',

  `department_no` INT unsigned NOT NULL DEFAULT  '0'  COMMENT '部门表id',

  `name` varchar(128) NOT NULL DEFAULT  ''  COMMENT '登录名',

  `position` varchar(128) NOT NULL DEFAULT  ''  COMMENT '岗位',

  `phone` char(11) NOT NULL DEFAULT '' COMMENT '手机号',

`salary` INT unsigned NOT NULL DEFAULT  '0'  COMMENT '薪资',

  PRIMARY KEY (`id`),

  FOREIGN KEY (`department_no`) REFERENCES `t_department`(`department_no`),

  INDEX `name` (`name`),

  UNIQUE KEY `phone` (`phone`)

) ENGINE = InnoDB DEFAULT CHARACTER SET = utf8 COLLATE = utf8_bin;

2.2.5、唯一约束

        设置表字段唯一约束(UNIQUE,UK)

        当数据库表中某个字段上的内容不允许重复时,可以使用UK约束进行设置。UK约束在创建数据库时为某些字段加上“UNIQUE”约束条件,保证所有记录中该字段上的值不重复。如果在用户插入的记录中该字段上的值与其他记录中该字段上的值重复,那么数据库管理系统会报错。

        设置表中某字段的UK约束非常简单,可以在MySQL数据库管理系统中通过SQL语句UNIQUE来实现

        实例

DROP TABLE IF EXISTS `t_department`;

CREATE TABLE IF NOT EXISTS `t_department` (

  `department_no` INT unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',

  `department_name` varchar(128) NOT NULL DEFAULT  ''  COMMENT '部门名称',

  PRIMARY KEY (`department_no`),

  UNIQUE KEY `department_name` (`department_name`)

) ENGINE = InnoDB DEFAULT CHARACTER SET = utf8 COLLATE = utf8_bin;

DROP TABLE IF EXISTS `t_employee`;

CREATE TABLE IF NOT EXISTS `t_employee` (

  `id` INT unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',

  `department_no` INT unsigned NOT NULL DEFAULT  '0'  COMMENT '部门表id',

  `name` varchar(128) NOT NULL DEFAULT  ''  COMMENT '登录名',

  `position` varchar(128) NOT NULL DEFAULT  ''  COMMENT '岗位',

  `phone` char(11) NOT NULL DEFAULT '' COMMENT '手机号',

`salary` INT unsigned NOT NULL DEFAULT  '0'  COMMENT '薪资',

  PRIMARY KEY (`id`),

  FOREIGN KEY (`department_no`) REFERENCES `t_department`(`department_no`),

  INDEX `name` (`name`),

  UNIQUE KEY `phone` (`phone`)

) ENGINE = InnoDB DEFAULT CHARACTER SET = utf8 COLLATE = utf8_bin;

2.2.6、自动增长

        设置表字段值自动增加(AUTO_INCREMENT)

        AUTO_INCREMENT是MySQL唯一扩展的完整性约束,当向数据库表中插入新记录时,字段上的值会自动生成唯一的ID。在具体设置AUTO_INCREMENT约束时,一个数据库表中只能有一个字段使用该约束,该字段的数据类型必须是整数类型。由于设置AUTO_INCREMENT约束后的字段会生成唯一的ID,因此该字段也经常会同时设置成PK主键。

        设置表中某字段值的自动增加约束非常简单,可以在MySQL数据库管理系统中通过SQL语句AUTO_INCREMENT来实现

        设置表字段的默认值(DEFAULT)

        当为数据库表中插入一条新记录时,如果没有为某个字段赋值,数据库系统就会自动为这个字段插入默认值。为了达到这种效果,可通过SQL语句关键字DEFAULT来设置。

        设置数据库表中某字段的默认值非常简单,可以在MySQL数据库管理系统中通过SQL语句DEFAULT来实现

        实例

DROP TABLE IF EXISTS `t_department`;

CREATE TABLE IF NOT EXISTS `t_department` (

  `department_no` INT unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',

  `department_name` varchar(128) NOT NULL DEFAULT  ''  COMMENT '部门名称',

  PRIMARY KEY (`department_no`),

  UNIQUE KEY `department_name` (`department_name`)

) ENGINE = InnoDB DEFAULT CHARACTER SET = utf8 COLLATE = utf8_bin;

DROP TABLE IF EXISTS `t_employee`;

CREATE TABLE IF NOT EXISTS `t_employee` (

  `id` INT unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',

  `department_no` INT unsigned NOT NULL DEFAULT  '0'  COMMENT '部门表id',

  `name` varchar(128) NOT NULL DEFAULT  ''  COMMENT '登录名',

  `position` varchar(128) NOT NULL DEFAULT  ''  COMMENT '岗位',

  `phone` char(11) NOT NULL DEFAULT '' COMMENT '手机号',

`salary` INT unsigned NOT NULL DEFAULT  '0'  COMMENT '薪资',

  PRIMARY KEY (`id`),

  FOREIGN KEY (`department_no`) REFERENCES `t_department`(`department_no`),

  INDEX `name` (`name`),

  UNIQUE KEY `phone` (`phone`)

) ENGINE = InnoDB DEFAULT CHARACTER SET = utf8 COLLATE = utf8_bin;

2.3、数据表索引

2.3.1、索引概念

        索引可以看作是一种特殊的表,其中包含了对数据表中特定列的值及其在数据表中的位置信息。通过使用索引,MySQL可以在不需要扫描整个表的情况下快速找到与查询条件匹配的记录。

2.3.2、索引的类型

        MySQL支持多种类型的索引,以满足不同的查询需求:

        B-Tree索引:

        最常见的索引类型,适用于大部分场景。

        支持全值匹配、范围查询和前缀匹配。

        哈希索引:

        基于哈希表实现,支持全值匹配,但不支持范围查询和前缀匹配。

        主要应用于MEMORY存储引擎。

        空间索引:

        用于地理空间数据查询的特殊索引,基于R树实现。

                主要应用于MyISAM和InnoDB存储引擎。

        全文索引:

        用于文本数据模糊查询的特殊索引,基于倒排索引实现。

        主要应用于MyISAM和InnoDB存储引擎。

        普通索引(BTREE索引):

        最常见的索引类型,可用于匹配列的值、范围或前缀搜索。

        可以有多个列,但不保证列值的唯一性。

        唯一索引:

        确保索引列的值唯一,不能有重复。

        在创建唯一索引时,MySQL会自动检查表中是否存在重复值。

        主键索引:

        主键列的唯一索引,每个表只能有一个主键索引。

        主键索引的值必须唯一且非空。

        外键索引:

        指向另一表主键的索引,用于在表之间建立关系并强制完整性约束。

        复合索引:

        基于多个列的索引,可以加快基于多个列的查询速度。

        复合索引中列的顺序很重要,应根据查询条件的使用频率和列的选择性来确定。

2.3.3、索引的作用

        提高查询速度:通过索引,MySQL可以快速定位到与查询条件匹配的记录,避免全表扫描。

确保数据唯一性和引用完整性:通过主键索引和唯一索引,可以确保数据的唯一性和引用完整性。

优化排序和范围查询:对于排序和范围查询操作,使用B-Tree索引可以显著提高查询效率。

加速全文搜索:对于文本数据的模糊查询,使用全文索引可以提高查询速度

2.3.4、索引的创建和管理

        在创建表时创建索引

 CREATE TABLE users (  

    id INT AUTO_INCREMENT PRIMARY KEY,  

    username VARCHAR(255) UNIQUE,  

    email VARCHAR(255) UNIQUE,  

    age INT,  

    INDEX idx_age (age)  

);

在已有表上创建索引

CREATE INDEX idx_age ON users (age);

CREATE UNIQUE INDEX idx_email ON users (email);

使用ALTER TABLE添加或删除索引

ALTER TABLE users ADD INDEX (age);

ALTER TABLE users DROP INDEX idx_age;

 2.3.5、索引的优缺点和使用建议

        优点:

提高查询速度。

确保数据唯一性和引用完整性。

        缺点:

增加存储空间和维护成本。

影响写操作性能(插入、更新、删除)。

        使用建议:

为频繁查询的列创建索引。

选择合适的索引类型,根据查询需求和数据特点。

避免过度索引,过多的索引会降低写操作性能并占用额外存储空间。

定期评估索引效果,根据查询日志和性能监控工具调整索引策略

2.4、创建

        基本语法:CREATE TABLE <表名> ([表定义选项])[表选项][分区选项];

实例:

DROP TABLE IF EXISTS `t_user`;

CREATE TABLE IF NOT EXISTS `t_user` (

  `id` INT unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',

  `user_name` varchar(128) NOT NULL DEFAULT '' COMMENT '登录名',

  `password` varchar(512) NOT NULL DEFAULT '' COMMENT '密码',

  `nick_name` varchar(128) NOT NULL DEFAULT '' COMMENT '昵称',

  `user_no` varchar(128) NOT NULL DEFAULT '' COMMENT '身份证号',

  `status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '0(正常);1(禁用)',

  `phone` char(11) NOT NULL DEFAULT '' COMMENT '手机号',

  PRIMARY KEY (`id`),

  UNIQUE KEY `user_name` (`user_name`),

  UNIQUE KEY `phone` (`phone`)

) ENGINE = InnoDB DEFAULT CHARACTER SET = utf8 COLLATE = utf8_bin;

2.5、查看表 

show tables;

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

| Tables_in_db_demo |

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

| t_department      |

| t_employee        |

| t_user            |

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

2.6、查看表结构 

        查看表的基本结构 

desc t_user;

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

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

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

| id        | int unsigned | NO   | PRI | NULL    | auto_increment |

| user_name | varchar(128) | NO   | UNI |         |                |

| password  | varchar(512) | NO   |     |         |                |

| nick_name | varchar(128) | NO   |     |         |                |

| user_no   | varchar(128) | NO   |     |         |                |

| status    | tinyint      | NO   |     | 0       |                |

| phone     | char(11)     | NO   | UNI |         |                |

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

        查看表的所有结构 

show full columns from t_user;

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

| Field     | Type         | Collation   | Null | Key | Default | Extra          | Privileges                      | Comment               |

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

| id        | int unsigned | NULL        | NO   | PRI | NULL    | auto_increment | select,insert,update,references | 主键                  |

| user_name | varchar(128) | utf8mb3_bin | NO   | UNI |         |                | select,insert,update,references | 登录名                |

| password  | varchar(512) | utf8mb3_bin | NO   |     |         |                | select,insert,update,references | 密码                  |

| nick_name | varchar(128) | utf8mb3_bin | NO   |     |         |                | select,insert,update,references | 昵称                  |

| user_no   | varchar(128) | utf8mb3_bin | NO   |     |         |                | select,insert,update,references | 身份证号              |

| status    | tinyint      | NULL        | NO   |     | 0       |                | select,insert,update,references | 0(正常);1(禁用)      |

| phone     | char(11)     | utf8mb3_bin | NO   | UNI |         |                | select,insert,update,references | 手机号                |

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

2.7、删除表 

drop table t_user; 

3、数据表的增删改操作

3.1、数据插入

        数据库插入可以使用INSERT INTO语句来实现这一目的。下面是一些基本的示例来展示如何向MySQL数据表中插入数据。

        插入单条记录,以t_user表为例

  insert into t_user (user_name,password,nick_name,user_no,status,phone) values('张三','12345678','红太阳','131024685941523145',0,'13465231587');

        多条语句插入,以t_user表为例 

insert into t_user(user_name,password,nick_name,user_no,status,phone) values('张三1','12345671','红太阳1','131024685941523141',1,'13465231581'),('张三2','12345672','红太阳2','131024685941523142',1,'13465231582'); 

Select * from t_user;

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

| id | user_name | password | nick_name  | user_no            | status | phone       |

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

|  1 | 张三      | 12345678 | 红太阳     | 131024685941523145 |      0 | 13465231587 |

|  2 | 张三1     | 12345671 | 红太阳1    | 131024685941523141 |      1 | 13465231581 |

|  3 | 张三2     | 12345672 | 红太阳2    | 131024685941523142 |      1 | 13465231582 |

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

        注意事项

确保在插入数据前,数据表中的字段类型和长度等约束条件满足你要插入的数据。

如果表中有主键或唯一索引约束,确保你插入的数据不会违反这些约束。

插入大量数据时,考虑使用批量插入(如上所示)来提高效率。

对于自增字段,无需手动指定值,MySQL会自动处理。

插入数据后,可以通过SELECT语句来验证数据是否正确插入。

3.2、数据修改

        在MySQL中,更新数据表中的数据通常使用UPDATE语句。这个语句允许你修改表中已存在的记录。基本的UPDATE语句的语法如下:

        UPDATE 表名 SET 列1 = 值1, 列2 = 值2, ... WHERE 条件;

        表名:你想要更新数据的表名。

        SET:后面跟着你想要修改的列名和它们对应的新值。你可以一次更新多个列。

        WHERE:指定哪些记录需要被更新。这是非常重要的,因为如果你省略了WHERE子句,那么表中的所有记录都会被更新,这通常不是你想要的结果。

        实例:

update t_user set user_name='张三3',nick_name='红太阳3',status=0 where id=3;

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

| id | user_name | password | nick_name  | user_no            | status | phone       |

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

|  1 | 张三      | 12345678 | 红太阳     | 131024685941523145 |      0 | 13465231587 |

|  2 | 张三1     | 12345671 | 红太阳1    | 131024685941523141 |      1 | 13465231581 |

|  3 | 张三3     | 12345672 | 红太阳3    | 131024685941523142 |      0 | 13465231582 |

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

3.3、数据删除

        删除数据记录是数据操作中常见的操作,可以删除表中已经存在的数据记录。在MySQL中可以通过DELETE语句来删除数据记录,该SQL语句可以通过以下几种方式使用:删除特定数据记录、删除所有数据记录。

l        删除特定数据记录

        在MySQL中删除特定数据记录可通过SQL语句DELETE来实现,其语法形式如下:

DELETE FROM tablename WHERE CONDITION;    

        实例:

select * from t_user;

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

| id | user_name | password | nick_name  | user_no            | status | phone       |

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

|  1 | 张三      | 12345678 | 红太阳     | 131024685941523145 |      0 | 13465231587 |

|  2 | 张三1     | 12345671 | 红太阳1    | 131024685941523141 |      1 | 13465231581 |

|  3 | 张三3     | 12345672 | 红太阳3    | 131024685941523142 |      0 | 13465231582 |

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

delete from t_user where id=3;

select * from t_user;

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

| id | user_name | password | nick_name  | user_no            | status | phone       |

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

|  1 | 张三      | 12345678 | 红太阳     | 131024685941523145 |      0 | 13465231587 |

|  2 | 张三1     | 12345671 | 红太阳1    | 131024685941523141 |      1 | 13465231581 |

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

相关文章:

MySQL数据库专栏(二)SQL语句基础操作

目录 数据库操作 创建数据库 查看数据库 选择数据库 删除数据库 数据表操作 数据表数据类型 数据表列约束 数据表索引 创建表 查看表 查看表结构 删除表 数据表的增删改操作 …...

【OpenCV 实战】1.手势虚拟拖拽(双手骨骼点识别)

step: 1.opencv 获取视频流 2.在画面上画一个方块 3.通过mediapipe获取手指关键点坐标 4.判断手指是否在方块上 5.若在方块上&#xff0c;方块跟着手指移动 mediapipe网站介绍&#xff1a;Hands - mediapipe (chuoling.github.io) 已上传到GitHub &#xff1a; plumqm/OpenC…...

基于springboot人力资源管理系统源码

项目技术&#xff1a;SpringBoot 运行环境&#xff1a;jdk1.8idea/eclipsemaven3mysql5.6 项目描述&#xff1a; 系统包括&#xff0c;员工管理&#xff0c;奖惩管理&#xff0c;合同管理&#xff0c;薪酬管理&#xff0c;培训管理&#xff0c;绩效评估等功能...

如何使用 Apt-Get 和 Apt-Cache 在 Ubuntu 和 Debian 中管理软件包

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 简介 Apt 是 dpkg 打包系统的命令行前端&#xff0c;也是许多发行版中管理软件的首选方式。它是 Debian 及基于 Debian 的 Linux 发行版…...

Linux系统创建新分区并挂载的方法

一、引言 本文以CentOS为例讲述Linux系统创建新分区并挂载的方法。如下图所示&#xff0c;用fdisk -l命令可以看到该CentOS系统下有一个磁盘/dev/vda&#xff0c;其容量为2199G&#xff0c;即2T。该磁盘有两个分区&#xff1a;vda1和vda2&#xff1a; 用lsblk命令可以查看到磁…...

反射第二弹:用注册器动态注册(用自定义的注解标注的)策略,实现策略模式的设计

目录 引言 设计思路: 代码实现: 标注注解:@StrategyClass 扫描注解:trategyScan 注册器抽象类: 动态策略注册类: AOP类: 总结: 引言 曾经有人问我,假如有一个业务或者数据处理逻辑,会根据甲方客户繁杂的业务需求,而动态变化,该怎么处理,具体怎么实现? 将…...

【Xcode Command Line Tools】安装指南

安装指令 xcode-select --install安装 完成安装 验证 $ xcode-select -p /Library/Developer/CommandLineTools...

springboot开发网站-使用redis数据库定时特征限制指定ip的访问次数

springboot开发网站-使用redis数据库定时特征限制指定ip的访问次数。近期网站经常有人恶意访问&#xff0c;提交了很多垃圾信息。为了屏蔽这类灌水帖&#xff0c;打算屏蔽ip地址&#xff0c;限制24小时内只能访问1次某个接口。下面是测试的案例代码内容。 1&#xff1a;首先&am…...

【大模型理论篇】大模型相关的周边技术分享-关于《NN and DL》的笔记

本文所要介绍的一本书《Neural Networks and Deep Learning》&#xff0c;该书作者Michael Nielsen&#xff0c;Y Combinator Research的研究员&#xff0c;是多年之前自己看的一本基础书籍&#xff0c;很适合入门了解一些关于深度学习的概念知识&#xff0c;当然也包含了一些小…...

CSS 圆形边框与阴影

目录 1. 圆角边框 1.1 正圆 1.2 圆角矩形 1.3 任意圆角 1.4 某个圆角 2. 盒子阴影 3. 文字阴影 1. 圆角边框 1.1 正圆 1.2 圆角矩形 1.3 任意圆角 1.4 某个圆角 2. 盒子阴影 3. 文字阴影...

Bianchi模型、python计算及ns3验证

由于项目与学习需要,最近学习了bianchi模型,并在python中进行了公式->代码的转化,仿真结果与ns3结果对比。 本文更多的是理解模型各个部分的含义、把各个简单的推导过程转化为python、ns3对比: 1 理论吞吐与传输概率、传输成功概率、包长、速率、排队时间、成功传输时…...

SQL常用语法

SQL&#xff08;Structured Query Language&#xff09;是一种用于存储、操作和检索数据库中数据的标准编程语言。以下是一些常用的 SQL 语法&#xff1a; 数据库操作 创建数据库&#xff1a;CREATE DATABASE database_name;删除数据库&#xff1a;DROP DATABASE database_name…...

计算机毕业设计 玩具租赁系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…...

浏览器前端向后端提供服务

WEB后端向浏览器前端提供服务是最常见的场景&#xff0c;前端向后端的接口发起GET或者POST请求&#xff0c;后端收到请求后执行服务器端任务进行处理&#xff0c;完成后向前端发送响应。 那浏览器前端向后端提供服务是什么鬼&#xff1f; 说来话长&#xff0c;长话短说。我在人…...

文本到语音或视频的构想

₦X8s43Y1iIquVAeF₦ 在Python中&#xff0c;有几个库和模块可以用来实现文本到语音的转换&#xff0c;并且可以生成带有背景音乐的视频。以下是一些可用的库&#xff1a; 1. pyttsx3&#xff1a;这是一个离线文本到语音转换库&#xff0c;它支持多种语音引擎&#xff0c;不依…...

请解释一下数据库的分区和分片?请解释一下数据库的日志和日志的重要性?

请解释一下数据库的分区和分片&#xff1f; 数据库的分区和分片是两种用于提高数据库性能和可扩展性的技术&#xff0c;它们各自具有不同的特点和应用场景。以下是对这两种技术的详细解释&#xff1a; 一、数据库分区 定义&#xff1a; 数据库分区是将一个大型的数据库表或索…...

windows C++-创建数据流代理(二)

完整的数据流演示 下图显示了 dataflow_agent 类的完整数据流网络&#xff1a; 由于 run 方法是在一个单独的线程上调用的&#xff0c;因此在完全连接网络之前&#xff0c;其他线程可以将消息发送到网络。 _source 数据成员是一个 unbounded_buffer 对象&#xff0c;用于缓冲…...

大数据毕业设计选题推荐-个性化图书推荐系统-Python数据可视化-Hive-Hadoop-Spark

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、PHP、.NET、Node.js、GO、微信小程序、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇…...

【Redis入门到精通九】Redis中的主从复制

目录 主从复制 1.配置主从复制 2.主从复制中的拓扑结构 3.主从复制原理 4.主从复制总结 主从复制 在分布式系统中为了解决单点问题&#xff0c;通常会把数据复制多个副本部署到其他服务器&#xff0c;满⾜故障恢复和负载均衡等需求。Redis 也是如此&#xff0c;它为我们提…...

系统架构设计师论文《论企业应用系统的数据持久层架构设计》精选试读

论文真题 数据持久层&#xff08;Data Persistence Layer&#xff09;通常位于企业应用系统的业务逻辑层和数据源层之间&#xff0c;为整个项目提供一个高层、统一、安全、并发的数据持久机制&#xff0c;完成对各种数据进行持久化的编程工作&#xff0c;并为系统业务逻辑层提…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

【Python】 -- 趣味代码 - 小恐龙游戏

文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

基于大模型的 UI 自动化系统

基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天&#xff0c;再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至&#xff0c;这不仅是开发者的盛宴&#xff0c;更是全球数亿苹果用户翘首以盼的科技春晚。今年&#xff0c;苹果依旧为我们带来了全家桶式的系统更新&#xff0c;包括 iOS 26、iPadOS 26…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

Rust 异步编程

Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效&#xff0c;它能挖掘数据中的时序信息以及语义信息&#xff0c;但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN&#xff0c;但是…...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1&#xff1a;修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本&#xff1a;CentOS 7 64位 内核版本&#xff1a;3.10.0 相关命令&#xff1a; uname -rcat /etc/os-rele…...