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 |

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

萝卜兽编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值