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

news2024/11/24 4:00:36

目录


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


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 |

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2194393.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

自由学习记录

约束的泛型通配符? Java中的泛型 xiaomi和byd都继承了car&#xff0c;但是只是这两个类是car的子类而已&#xff0c;而arraylist<xiaomi> ,arraylist<byd> 两个没有半毛钱继承关系 所以传入的参数整体&#xff0c;是car的list变形&#xff0c;里面的确都能存car…

YOLO11改进 | 卷积模块 | 添加选择性内核SKConv【附完整代码一键运行】

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 在标准卷积神经网络 (CNN) 中&#xff0…

单调栈day54|42. 接雨水(高频面试题)、84. 柱状图中最大的矩形、两道题思维导图的汇总与对比

单调栈day54|42. 接雨水&#xff08;高频面试题&#xff09;、84. 柱状图中最大的矩形、两道题思维导图的汇总与对比 42. 接雨水84. 柱状图中最大的矩形两道题思维导图的汇总与对比 42. 接雨水 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱…

2025,企业管理平台的理想模型V0.1

1.前言 近期出于综合考虑&#xff0c;准备休息一段时间......... 在这段时间里&#xff0c;准备重新梳理下企业管理平台应该具备的能力.并准备使用开源项目来一次组合式组装&#xff0c;最终形成一个初步可行的运行平台。 2.企业管理平台的主要组成 企业管理平台不是独立存…

《python语言程序设计》2018版第8章20题使用Rational类编写一个程序(上)-修改一下8-4Rational类我认为的错误

首先抄一下Rational类,可以安静的抄一遍 一、抄写中的问号 各种报错的截图1各种报错的截图2各种报错的截图3各种报错的截图4添加一个str我将n和d修改为self 书中214-215页间程序清单8-4的代码如下: class Rational:def __init__(self, numerator1, denominator0):divisor gcd(…

产品经理内容分享(二):AI产品经理的入门路线图

引言 想象这样一个场景&#xff1a;早晨的阳光穿透窗帘&#xff0c;投射在新一代智能机器人上&#xff0c;它正静静等待着你的第一个命令开始全新的一天。这样的场景听起来像是科幻小说里的情节&#xff0c;但实际上&#xff0c;这正是AI产品经理们工作的成果。如果你对这样的…

使用axios封装AJAX

一 、Http 请求报文 包括了三部分: 求情行、请求头,请求体。 1、请求行: 是HTTP请求的第一行,包含了请求方法、请求目标和HTTP协议版本。常用的请求方法有GET、POST、PUT、DELETE等,用于指定客户端希望服务器执行的操作。请求目标是指请求的资源路径,可以是一个具体的…

国外电商系统开发-运维系统资产属性-命令执行功能

当前开发中&#xff0c;还不支持点击拓扑图标打开资产的功能&#xff0c;后期有时间补全对应的开发。 该功能如同Xshell、SecureCRT、Putty一样&#xff0c;可以批量的发送系统命令&#xff0c;让Linux服务器执行。 默认情况下&#xff0c;系统已经选择全部主机&#xff0c;如果…

番外篇 | CRAS-YOLO:基于卫星图像的多类别船舶检测和分类

前言:Hello大家好,我是小哥谈。目前,基于卫星图像的多类别船舶检测和分类由于在军事和民用领域的重要应用而备受关注。针对传统检测效果不佳的情形,我们进一步提出了一种新的多类船检测,称为CRAS-YOLO,它由卷积块注意力模块(CBAM)、感受野块(RFB)和基于YOLOv5s的自适…

2024计算机毕业设计最简单的完成流程

一、计算机专业毕业设计选题-选题推荐 1.基于深度学习的生活垃圾智能分类系统&#xff08;微信小程序YOLOv5训练数据集开题报告中期检查论文&#xff09; &#xff08;1&#xff09;程序界面 &#xff08;2&#xff09;论文大纲 &#xff08;3&#xff09;论文详情链接 基于…

【高等代数笔记】线性空间(十九-二十四上半部分)

课程视频剪辑得太抽象了&#xff0c;一节课不能完整学完&#xff0c;拆的零零散散得。 3. 线性空间 3.19 满秩矩阵 【推论4】设 rank ( A ) r \text{rank}(\boldsymbol{A})r rank(A)r&#xff0c;则 A \boldsymbol{A} A的不为0的 r r r阶子式所在的列&#xff08;行&#x…

75 华三vlan端口隔离

华三vlan端口隔离 为了实现端口间的二层隔离&#xff0c;可以将不同的端口加入不同的VLAN&#xff0c;但VLAN资源有限。采用端口隔离特性&#xff0c;用户只需要将端口加入到隔离组中&#xff0c;就可以实现隔离组内端口之间二层隔离&#xff0c;而不关心这些端口所属VLAN&…

【每日一题 | 24.10.7】Fizz Buzz 经典问题

1. 题目2. 解题思路3. 代码实现&#xff08;AC_Code&#xff09; 个人主页&#xff1a;C_GUIQU 归属专栏&#xff1a;每日一题 1. 题目 Fizz Buzz 经典问题 2. 解题思路 【法1】逻辑硬解&#xff1a;按照题目逻辑分四种情况&#xff0c;用if else 判断即可。 【法2】switc…

大数据新视界 --大数据大厂之 Ibis:独特架构赋能大数据分析高级抽象层

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

【电力系统】基于MATLAB的储能辅助电力系统调峰的容量需求研究

摘要 本研究基于MATLAB仿真平台&#xff0c;探讨了储能系统在电力系统中辅助调峰的容量需求问题。通过对风电、微型燃气机等分布式能源的实际出力曲线与理论输出进行比较分析&#xff0c;我们探讨了在不同负荷条件下储能系统的调峰能力。实验结果表明&#xff0c;储能系统的合…

js逆向--某招标公告公示搜索引擎DES解密

js逆向--某招标公告公示搜索引擎DES解密 一、寻找数据接口二、寻找解密入口三、编写代码一、寻找数据接口 打开网页,在搜索框中输入关键词python。 试图通过按F12或者右键打开开发者工具,发现均没有反应。这时需要点击浏览器右上角的三个点,然后点击更多工具–开发者工具,…

(笔记)第三期书生·浦语大模型实战营(十一卷王场)–书生基础岛第5关---XTuner 微调个人小助手认知

学员闯关手册&#xff1a;https://aicarrier.feishu.cn/wiki/ZcgkwqteZi9s4ZkYr0Gcayg1n1g?open_in_browsertrue 课程视频&#xff1a;https://www.bilibili.com/video/BV1tz421B72y/ 课程文档&#xff1a; https://github.com/InternLM/Tutorial/tree/camp3/docs/L1/XTuner 关…

复现文章:R语言复现文章画图

文章目录 介绍数据和代码图1图2图6附图2附图3附图4附图5附图6 介绍 文章提供画图代码和数据&#xff0c;本文记录 数据和代码 数据可从以下链接下载&#xff08;画图所需要的所有数据&#xff09;&#xff1a; 百度云盘链接: https://pan.baidu.com/s/1peU1f8_TG2kUKXftkpYq…

【unity进阶知识8】unity场景Scene的使用, 如何封装一个场景管理器

文章目录 一、场景基本操作1、加载切换场景2、获取场景信息3、激活场景4、场景基本属性获取5、已加载场景个数6、获取场景中所有物体7、创建新场景8、卸载销毁场景 二、使用协程方法来异步加载场景1、AsyncOperation相关的代码应写在一个协同程序中。2、allowSceneActivation加…

TypeScript:装饰器

一、简介 随着TypeScript和ES6里引入了类&#xff0c;在一些场景下我们需要额外的特性来支持标注或修改类及其成员。 装饰器&#xff08;Decorators&#xff09;为我们在类的声明及成员上通过元编程语法添加标注提供了一种方式。 Javascript里的装饰器目前处在 建议征集的第二阶…