day06-MySQL学习笔记01

news2024/11/28 10:43:32

2024.08.17 day06-MySQL学习笔记

前言

前面说过,三层架构,其中dao层用于操作数据。在上面的项目中,数据放在了xml文件中。在企业开发中,数据一般存储在数据库中,我们直接对数据库操作。今天就学习如何操作数据库。

首先来了解一下什么是数据库。

  • 数据库:英文为 DataBase,简称DB,它是存储和管理数据的仓库。

像我们日常访问的电商网站京东,企业内部的管理系统OA、ERP、CRM这类的系统,以及大家每天都会刷的头条、抖音类的app,那这些大家所看到的数据,其实都是存储在数据库中的。最终这些数据,只是在浏览器或app中展示出来而已,最终数据的存储和管理都是数据库负责的。

可以这么理解,只要是个应用,都会用到数据库。

数据是存储在数据库中的,那我们要如何来操作数据库以及数据库中所存放的数据呢?

那这里呢,会涉及到一个软件:数据库管理系统(DataBase Management System,简称DBMS)

  • DBMS是操作和管理数据库的大型软件。将来我们只需要操作这个软件,就可以通过这个软件来操纵和管理数据库了。

此时又出现一个问题:DBMS这个软件怎么知道要操作的是哪个数据库、哪个数据呢?是对数据做修改还是查询呢?

  • 需要给DBMS软件发送一条指令,告诉这个软件我们要执行的是什么样的操作,要对哪个数据进行操作。而这个指令就是SQL语句

SQL(Structured Query Language,简称SQL):结构化查询语言,它是操作关系型数据库的编程语言,定义了一套操作关系型数据库的统一标准。我们学习数据库开发,最为重要的就是学习SQL语句 。

关系型数据库:我们后面会详细讲解,现在大家只需要知道我们学习的数据库属于关系型数据库即可。

这里需要知道两个名词

  • DB:数据库
  • DBMS:数据库管理系统,这是一个软件,用于操作数据库
  • SQL:这个是数据库操作语言。

结论:程序员给数据库管理系统(DBMS)发送SQL语句,再由数据库管理系统操作数据库当中的数据。

我们用DBMS发生SQL操作数据库的数据

  • Oracle:大型的收费数据库,Oracle公司产品,价格昂贵。(通常是不差钱的公司会选择使用这个数据库)
  • MySQL:开源免费的中小型数据库,后来Sun公司收购了MySQL,而Oracle又收购了Sun公司。目前Oracle推出两个版本的Mysql:社区版(开源免费)、商业版(收费)。
  • SQL Server:Microsoft 公司推出的收费的中型数据库,C#、.net等语言常用。
  • PostgreSQL:开源免费的中小型数据库。
  • DB2:IBM公司的大型收费数据库产品。
  • SQLLite:嵌入式的微型数据库。Android内置的数据库采用的就是该数据库。
  • MariaDB:开源免费的中小型数据库。是MySQL数据库的另外一个分支、另外一个衍生产品,与MySQL数据库有很好的兼容性。

目前有很多数据库。他们都是使用sql语言的。常用的还是MySQL

数据库概述

安装

下载安装

我之前学习过数据库。最让我头疼的是数据库的安装。我是在官网上下载的exe执行文件。打开后都是英语。很头疼。今天学习到了一种新的方式,去官网下载zip压缩文件,解压即安装。

点开下面的链接:https://dev.mysql.com/downloads/mysql/,在【Select Version】处选择需要下载的MySQL版本;在【Select Operating System】选择电脑的操作系统;

因为下载的是MySQL的压缩包。所以点击【Windows (x86, 64-bit), ZIP Archive】旁边的【Download】等待下载完成。

完成后选择一个目录解压压缩包即可完成安装,相比于一大堆英语,这个已经是很简单了,

配置

添加环境变量

我的MySQL解压目录是D:\Develop\mysql-8.0.31-winx64

打开环境变量,新增系统变量MYSQL_HOME,如下

  • 变量名:MYSQL_HOME
  • 变量值:D:\Develop\mysql-8.0.31-winx64

随后双击打开系统变量中的path变量,添加%MYSQL_HOME%\bin

打开cmd,运行命令mysql如果出现提示,安装成功

PS C:\Users\yang> mysql
ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: NO)

虽然这个提示是错误的,的是可以确定的是MySQL的环境配置成功了。

初始化MySQL

以管理员的方式运行cmd,执行如下命令:

mysqld --initialize-insecure	

执行完成后,会在MySQL目录下生成一个data目录

注册MySQL服务

还是执行命令如下

mysqld -install
PS C:\Users\yang> mysqld -install
Service successfully installed.

successfully成功,现在你的计算机上已经安装好了MySQL服务了。

启动MySQL服务

在黑框里敲入net start mysql,回车。

net start mysql  // 启动mysql服务
    
net stop mysql  // 停止mysql服务
修改默认账户密码

在黑框里敲入mysqladmin -u root password 000000000000就是指默认管理员(即root账户)的密码,可以自行修改成你喜欢的。一般学习的话,最好是000000

mysqladmin -u root password 000000

连接MySQL

以上内容完成后,就可以连接数据库了。命令如下:

mysql -u用户名 -p密码 [-h数据库服务器的IP地址 -P端口号]

-h 参数不加,默认连接的是本地 127.0.0.1 的MySQL服务器

-P 参数不加,默认连接的端口号是 3306

上述指令,可以有两种形式:

  • 密码直接在-p参数之后直接指定 (这种方式不安全,密码直接以明文形式出现在命令行)

  • 密码在-p回车之后,在命令行中输入密码,然后回车

数据模型

关系型数据库:

关系型数据库(RDBMS)

概念:建立在关系模型基础上,由多张相互连接的二维表组成的数据库。

而所谓二维表,指的是由行和列组成的表,如下图:

mysql属于关系型数据库。也有非关系型数据库。

关系型数据库类似于表格,excel电子表格

二维表的优点:

  • 使用表存储数据,格式统一,便于维护

  • 使用SQL语言操作,标准统一,使用方便,可用于复杂查询

数据模型:

接下来,了解一下MySQL的数据模型

MySQL是关系型数据库,是基于二维表进行数据存储的,具体的结构图下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 通过MySQL客户端连接数据库管理系统DBMS,然后通过DBMS操作数据库
  • 使用MySQL客户端,向数据库管理系统发送一条SQL语句,由数据库管理系统根据SQL语句指令去操作数据库中的表结构及数据
  • 一个数据库服务器中可以创建多个数据库,一个数据库中也可以包含多张表,而一张表中又可以包含多行记录。

在Mysql数据库服务器当中存储数据,你需要:

  1. 先去创建数据库(可以创建多个数据库,之间是相互独立的)
  2. 在数据库下再去创建数据表(一个数据库下可以创建多张表)
  3. 再将数据存放在数据表中(一张表可以存储多行数据)

SQL简介

SQL:结构化查询语言。一门操作关系型数据库的编程语言,定义操作所有关系型数据库的统一标准。

上面提到过好很多数据库。只要是关系型数据库。无论是什么。都执行的SQL语言。

SQL通用语法

1、SQL语句可以单行或多行书写,以分号结尾。

2、SQL语句可以使用空格/缩进来增强语句的可读性。

3、MySQL数据库的SQL语句不区分大小写。

4、注释:

  • 单行注释:-- 注释内容 或 # 注释内容(MySQL特有)
  • 多行注释: /* 注释内容 */

以上就是SQL语句的通用语法,这些通用语法大家目前先有一个直观的认识,我们后面在讲解每一类SQL语句的时候,还会再来强调通用语法。

上面是一些语法特点。后面在写sql语句的时候就会体现出来。

分类

SQL语句根据其功能被分为四大类:DDL、DML、DQL、DCL

分类全称说明
DDLData Definition Language数据定义语言,用来定义数据库对象(数据库,表,字段)
DMLData Manipulation Language数据操作语言,用来对数据库表中的数据进行增删改
DQLData Query Language数据查询语言,用来查询数据库中表的记录
DCLData Control Language数据控制语言,用来创建数据库用户、控制数据库的访问权限

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

SQL语言是一个统称,他还能细分。

创建数据库表或者字段,就是数据定义语言DDL;

对数据表中的数据进行增删改没有查操作,就是数据操作语言,DML

查询数据库表中的数据,把操作这个操作单独出来了,数据查询语言,DQL

DCL,数据控制语言,是对数据库的操作。

数据库设计-DDL

项目开发流程

需求文档:

  • 在我们开发一个项目或者项目当中的某个模块之前,会先会拿到产品经理给我们提供的页面原型及需求文档。

设计:

  • 拿到产品原型和需求文档之后,我们首先要做的不是编码,而是要先进行项目的设计,其中就包括概要设计、详细设计、接口设计、数据库设计等等。
  • 数据库设计根据产品原型以及需求文档,要分析各个模块涉及到的表结构以及表结构之间的关系,以及表结构的详细信息。最终我们需要将数据库以及数据库当中的表结构设计创建出来。

开发/测试:

  • 参照页面原型和需求进行编码,实现业务功能。在这个过程当中,我们就需要来操作设计出来的数据库表结构,来完成业务的增删改查操作等。

部署上线:

  • 在项目的功能开发测试完成之后,项目就可以上线运行了,后期如果项目遇到性能瓶颈,还需要对项目进行优化。优化很重要的一个部分就是数据库的优化,包括数据库当中索引的建立、SQL 的优化、分库分表等操作。

软件开发流程会在大学的软件工程概论中学到,这里面包含很多知识。也包含上面的内容

软件开发中,先有需求文档,确定做什么;设计,用例图、流程图、数据库什么的。开发项目测试项目,然后上线。之前学习过一点点软件工程概论。

知不知道与学习数据库没有关系。

在上述的流程当中,针对于数据库来说,主要包括三个阶段:

  1. 数据库设计阶段
    • 参照页面原型以及需求文档设计数据库表结构
  2. 数据库操作阶段
    • 根据业务功能的实现,编写SQL语句对数据表中的数据进行增删改查操作
  3. 数据库优化阶段
    • 通过数据库的优化来提高数据库的访问性能。优化手段:索引、SQL优化、分库分表等

设计数据库,操作数据表,优化SQL语句。这三部分是比较注重的e

数据库操作

查询数据库

查询所有数据库

SHOW DATABASES;
mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

目前这四个数据库都是系统内置的数据库。

如果创建了数据库,在执行这个命令,就会有你建的数据库 了、

查询当前数据库

SELECT DATABASE();

创建数据库

CREATE DATABASE [ IF NOT EXISTS ] 数据库名;

执行命令CREATE DATABASE database_demo01;就是创建一个数据库名是database_demo01的数据库。执行完后会有ok的提示

mysql> CREATE DATABASE database_demo01;
Query OK, 1 row affected (0.01 sec)

[ IF NOT EXISTS ],如果不存在就创建。不能创建两个同名的数据库,为了避免这个问题,就可以加上上面这条指令

CREATE DATABASE IF NOT EXISTS database_demo01;

执行上面的命令后,代码不会出现error,会有一个warning

mysql> CREATE DATABASE IF NOT EXISTS database_demo01;
Query OK, 1 row affected, 1 warning (0.00 sec)

如果数据库被重复创建,会有ERROR 1007 (HY000)报错,还会有提示音。

mysql> CREATE DATABASE database_demo01;
ERROR 1007 (HY000): Can't create database 'database_demo01'; database exists

在后面的命令中还会出现IF EXISTS的选择,大部分都是加上,避免出现错误。

使用数据库

USE 数据库名;

USE database_demo01;切换到刚刚创建的database_demo01,执行命令后会有Database changed提示,表示切换成功

mysql> USE databasee_demo01;
Database changed

删除数据库

DROP DATABASE [ IF EXISTS ] 数据库名

删除一个不存在的数据库或报错,为了解决这个问题,加上IF EXISTS

比如删除数据库database_demo01

DROP DATABASE IF EXISTS database_demo01;

命令执行后会有提示Query OK, 0 rows affected (0.01 sec)删除成功

mysql> CREATE DATABASE database_demo01;
Query OK, 1 row affected (0.01 sec)

表操作

会创建数据库了,接下来就是对表的操作。库是多张表的集合。

关于表结构的操作也是包含四个部分:创建表、查询表、修改表、删除表。

创表

语法
create table  表名(
	字段1  字段1类型 [约束]  [COMMENT  字段1注释 ],
	字段2  字段2类型 [约束]  [COMMENT  字段2注释 ],
	......
	字段n  字段n类型 [约束]  [COMMENT  字段n注释 ] 
) [ COMMENT  表注释 ] ;

[]属于可选。最后一个字段没有逗号。

比如说我要创建一个user表,他的结构如下

  • idusernamenameagegender
CREATe TABLE user (
    id INT COMMENT 'ID,唯一标识',   # id是一行数据的唯一标识(不能重复)
    username VARCHAR(20) COMMENT '用户名',
    name VARCHAR(10) COMMENT '姓名',
    age INT COMMENT '年龄',
    gender char(1) COMMENT '性别'
) COMMENT '用户表';

COMMENT是一个注释,这个注释sql语句是会识别的。

#也是注释,这个就是给我自己看的

id是唯一标识,但是现在你可以输入两个相同的id,这是因为没有约束限制。

约束

概念:所谓约束就是作用在表中字段上的规则,用于限制存储在表中的数据。

作用:就是来保证数据库当中数据的正确性、有效性和完整性。(后面的学习会验证这些)

在MySQL数据库当中,提供了以下5种约束:

约束描述关键字
非空约束限制该字段值不能为nullnot null
唯一约束保证字段的所有数据都是唯一、不重复的unique
主键约束主键是一行数据的唯一标识,要求非空且唯一primary key
默认约束保存数据时,如果未指定该字段值,则采用默认值default
外键约束让两张表的数据建立连接,保证数据的一致性和完整性foreign key

注意:约束是作用于表中字段上的,可以在创建表/修改表的时候添加约束。

约束,对字段有一些限制。

比如说还是user表,

  • id:是一行的唯一标识
  • username:不能为空且唯一;
  • name:不能为空、
  • age:没有要求;
  • gender:默认男
CREATe TABLE user (
    id INT PRIMARY KEY COMMENT 'ID,唯一标识',   # id是一行数据的唯一标识(不能重复)
    username VARCHAR(20) NOT NULL UNIQUE COMMENT '用户名',
    name VARCHAR(10) NOT NULL COMMENT '姓名',
    age INT COMMENT '年龄', 
    gender char(1) DEFAULT '男' COMMENT '性别'
) COMMENT '用户表';

这就是一个添加约束的例子。

id其实可以自己填写。自增

主键自增:auto_increment

  • 每次插入新的行记录时,数据库自动生成id字段(主键)下的值
  • 具有auto_increment的数据列是一个正数序列开始增长(从1开始自增)

因此修改上面的代码

CREATe TABLE user (
    id INT PRIMARY KEY AUTO_INCREMENT COMMENT 'ID,唯一标识',   # id是一行数据的唯一标识(不能重复),自动增长
    username VARCHAR(20) NOT NULL UNIQUE COMMENT '用户名',
    name VARCHAR(10) NOT NULL COMMENT '姓名',
    age INT COMMENT '年龄', 
    gender char(1) DEFAULT '男' COMMENT '性别'
) COMMENT '用户表';
数据类型

MySQL中的数据类型主要分为三类:数值类型、字符串类型、日期时间类型。

数值类型

类型大小有符号(SIGNED)范围无符号(UNSIGNED)范围描述
TINYINT1byte(-128,127)(0,255)小整数值
SMALLINT2bytes(-32768,32767)(0,65535)大整数值
MEDIUMINT3bytes(-8388608,8388607)(0,16777215)大整数值
INT/INTEGER4bytes(-2147483648,2147483647)(0,4294967295)大整数值
BIGINT8bytes(-263,263-1)(0,2^64-1)极大整数值
FLOAT4bytes(-3.402823466 E+38,3.402823466351 E+38)0 和 (1.175494351 E-38,3.402823466 E+38)单精度浮点数值
DOUBLE8bytes(-1.7976931348623157 E+308,1.7976931348623157 E+308)0 和 (2.2250738585072014 E-308,1.7976931348623157 E+308)双精度浮点数值
DECIMAL依赖于M(精度)和D(标度)的值依赖于M(精度)和D(标度)的值小数值(精确定点数)
示例: 
    年龄字段 ---不会出现负数, 而且人的年龄不会太大
	age tinyint unsigned
	
	分数 ---总分100分, 最多出现一位小数
	score double(4,1)

字符串类型

类型大小描述
CHAR0-255 bytes定长字符串(需要指定长度)
VARCHAR0-65535 bytes变长字符串(需要指定长度)
TINYBLOB0-255 bytes不超过255个字符的二进制数据
TINYTEXT0-255 bytes短文本字符串
BLOB0-65 535 bytes二进制形式的长文本数据
TEXT0-65 535 bytes长文本数据
MEDIUMBLOB0-16 777 215 bytes二进制形式的中等长度文本数据
MEDIUMTEXT0-16 777 215 bytes中等长度文本数据
LONGBLOB0-4 294 967 295 bytes二进制形式的极大文本数据
LONGTEXT0-4 294 967 295 bytes极大文本数据

char 与 varchar 都可以描述字符串,char是定长字符串,指定长度多长,就占用多少个字符,和字段值的长度无关 。而varchar是变长字符串,指定的长度为最大占用长度 。相对来说,char的性能会更高些。

示例: 
    用户名 username ---长度不定, 最长不会超过50
	username varchar(50)
	
	手机号 phone ---固定长度为11
	phone char(11)

日期时间类型

类型大小范围格式描述
DATE31000-01-01 至 9999-12-31YYYY-MM-DD日期值
TIME3-838:59:59 至 838:59:59HH:MM:SS时间值或持续时间
YEAR11901 至 2155YYYY年份值
DATETIME81000-01-01 00:00:00 至 9999-12-31 23:59:59YYYY-MM-DD HH:MM:SS混合日期和时间值
TIMESTAMP41970-01-01 00:00:01 至 2038-01-19 03:14:07YYYY-MM-DD HH:MM:SS混合日期和时间值,时间戳
示例: 
    生日字段  birthday ---生日只需要年月日  
    birthday date
    
    创建时间 createtime --- 需要精确到时分秒
    createtime  datetime

内容看起来有很多,我觉得作为了解就可以了。反正我是记不住

设计表流程
  1. 阅读页面原型及需求文档

  2. 基于页面原则和需求文档,确定原型字段(类型、长度限制、约束)

  3. 再增加表设计所需要的业务基础字段(id主键、插入时间、修改时间)

查询

查询数据库中的所有表

SHOW TABLES;
mysql> SHOW TABLES;
+---------------------------+
| Tables_in_database_demo01 |
+---------------------------+
| user                      |
+---------------------------+
1 row in set (0.00 sec)

可以看出目前数据库database_demo01中只有一张数据表user

查看指定表结构

DESC 表名;
mysql> DESC user;
+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| id       | int         | NO   | PRI | NULL    | auto_increment |
| username | varchar(20) | NO   | UNI | NULL    |                |
| name     | varchar(10) | NO   |     | NULL    |                |
| age      | int         | YES  |     | NULL    |                |
| gender   | char(1)     | YES  |     | 男      |                |
+----------+-------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)

查看user表中的结构。

查询指定表的建表语句

SHOW CREATE TABLE 表名 ;

这个会输出创建表的sql代码

修改

添加字段

ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释] [约束];

比如在用户表中添加一个邮箱的字段

ALTER TABLE user ADD email VARCHAR(20) COMMENT '邮箱';
mysql> ALTER TABLE user ADD email VARCHAR(20) COMMENT '邮箱';
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

执行后输出ok,那么就是完成了。可以用DESC user看一下表结构。

修改数据类型

ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [COMMENT 注释] [约束];

其实对比这两个命令,就可以发现第一条就是用于改数据类型;第二种用于只要你指定了要修改的字段,就可以任意修改

先说第一种,

mysql> ALTER TABLE user MODIFY name CHAR(6);
Query OK, 0 rows affected (0.03 sec)
Records: 0  Duplicates: 0  Warnings: 0

修改了user表中name的数据类型,改成了char(6)

再说第二种,修改字段名但是不修改数据类型

mysql> ALTER TABLE user CHANGE age userAge CHAR(2) COMMENT '用户年龄char类型' NOT NULL default '18';
Query OK, 0 rows affected (0.04 sec)
Records: 0  Duplicates: 0  Warnings: 0

修改了字段名和数据类型,还可以添加约束,不放心有没有修改成功,可以查看一下表结构。

mysql> DESC user;
+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| id       | int         | NO   | PRI | NULL    | auto_increment |
| username | varchar(20) | NO   | UNI | NULL    |                |
| name     | char(6)     | YES  |     | NULL    |                |
| userAge  | char(2)     | NO   |     | 18      |                |
| gender   | char(1)     | YES  |     | 男      |                |
| email    | varchar(20) | YES  |     | NULL    |                |
+----------+-------------+------+-----+---------+----------------+

删除字段

ALTER TABLE 表名 DROP 字段名;
mysql> ALTER TABLE user DROP email;
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

删除字段email

修改表名

RENAME TABLE 表名 TO 新表名;
mysql> RENAME TABLE user TO user_table;
Query OK, 0 rows affected (0.01 sec)

修改表名。可以用SHOW TABLES;命令查看有没有修改成功

mysql> SHOW TABLES;
+---------------------------+
| Tables_in_database_demo01 |
+---------------------------+
| user_table                |
+---------------------------+
1 row in set (0.00 sec)

删除

删除表语法

DROP TABLE [IF EXISTS]  表名;

if exists :只有表名存在时才会删除该表,表名不存在,则不执行删除操作(如果不加该参数项,删除一张不存在的表,执行将会报错)。

删除数据表user

mysql> DROP TABLE IF EXISTS user_table;
Query OK, 0 rows affected (0.01 sec)

也可以用SHOW TABLES;命令查看有没有删除成功

mysql> SHOW TABLES;
Empty set (0.00 sec)

空的

数据库操作-DML

DML英文全称是Data Manipulation Language(数据操作语言),用来对数据库中表的数据记录进行增、删、改操作。

  • 添加数据(INSERT)
  • 修改数据(UPDATE)
  • 删除数据(DELETE)

这里学的基本上都是命令,这些命令一时间记不住,敲着敲着就会了。

增加(insert)

insert语法:

  • 向指定字段添加数据

    INSERT INTO 表名 (字段名1, 字段名2) VALUES (值1, 值2);
    
  • 全部字段添加数据

    INSERT INTO 表名 VALUES (值1, 值2, ...);
    
  • 批量添加数据(指定字段)

    INSERT INTO 表名 (字段名1, 字段名2) VALUES (值1, 值2), (值1, 值2);
    
  • 批量添加数据(全部字段)

    INSERT INTO 表名 VALUES (值1, 值2, ...), (值1, 值2, ...);
    

接下来,一一演示;给emp表添加数据,emp表是employee的缩写,员工表;emp表结构如下

CREATE TABLE emp (
  id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT COMMENT 'ID',
  username VARCHAR(20) NOT NULL UNIQUE COMMENT '用户名',
  password VARCHAR(32) DEFAULT '123456' COMMENT '密码',
  name VARCHAR(10) NOT NULL COMMENT '姓名',
  gender TINYINT UNSIGNED NOT NULL DEFAULT '1' COMMENT '性别, 说明: 1 男, 2 女',
  image VARCHAR(300) COMMENT '图像',
  job TINYINT UNSIGNED COMMENT '职位, 说明: 1 班主任,2 讲师, 3 学工主管, 4 教研主管',
  entrydate DATE COMMENT '入职时间',
  create_time DATETIME NOT NULL COMMENT '创建时间',
  update_time DATETIME NOT NULL COMMENT '修改时间'
) COMMENT '员工表';
mysql> DESC emp;
+-------------+------------------+------+-----+---------+----------------+
| Field       | Type             | Null | Key | Default | Extra          |
+-------------+------------------+------+-----+---------+----------------+
| id          | int unsigned     | NO   | PRI | NULL    | auto_increment |
| username    | varchar(20)      | NO   | UNI | NULL    |                |
| password    | varchar(32)      | YES  |     | 123456  |                |
| name        | varchar(10)      | NO   |     | NULL    |                |
| gender      | tinyint unsigned | NO   |     | 1       |                |
| image       | varchar(300)     | YES  |     | NULL    |                |
| job         | tinyint unsigned | YES  |     | NULL    |                |
| entrydate   | date             | YES  |     | NULL    |                |
| create_time | datetime         | NO   |     | NULL    |                |
| update_time | datetime         | NO   |     | NULL    |                |
+-------------+------------------+------+-----+---------+----------------+
10 rows in set (0.00 sec)

给指定字段添加数据,通过DESC emp命令发现usernamenamegendercreate_timeupdate_time是不可以为空的,所以给这几个字段增加数据

INSERT INTO emp(username, name, gender, create_time, update_time)
VALUES ('wuji', '张无忌', 1, now(), now());

数据插入成功后,会有提示Query OK, 1 row affected (0.01 sec)

给全部字段添加数据

INSERT INTO emp VALUES (null, 'zhirou', '123', '周芷若', 2, '1.jpg', 1, '2010-01-01', now(), now());

批量指定字段添加数据

INSERT INTO emp(username, name, gender, create_time, update_time)
VALUES ('weifuwang', '韦一笑', 1, now(), now()),
       ('fengzi', '张三疯', 1, now(), now());

批量给全部字段添加数据

INSERT INTO emp VALUES 
	(NULL, 'changyuchun', '123456', '常遇春', 1, '2.jpg', 2, '2012-12-05',now(), now()),
    (NULL , 'xiaozhao', '123456', '小昭', 2, '3.jpg', 3, '2013-09-05', now(), now());

修改(update)

update语法:

UPDATE 表名 SET 字段名1 =1 , 字段名2 =2 , .... [WHERE 条件] ;

注意事项:

  1. 修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据。

  2. 在修改数据时,一般需要同时修改公共字段update_time,将其修改为当前操作时间。

比如修改姓名是小昭的密码

 UPDATE emp SET password='xiaozhao000' WHERE name='小昭';

删除(delete)

delete语法:

DELETE FROM 表名 [WHERE 条件] ;

注意事项:

​ • DELETE 语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据。

​ • DELETE 语句不能删除某一个字段的值(可以使用UPDATE,将该字段值置为NULL即可)。

​ • 当进行删除全部数据操作时,会提示询问是否确认删除所有数据,直接点击Execute即可。

清空这张表

DELETE FROM emp;

删除小昭这条数据

DELETE FROM emp WHERE name='小昭';

总结

数据库对应用开发还是很重要的,是离不开的

命令很多,但是不需要记住。用到了就查。另外也可以使用可视化工具,

UES
(NULL, ‘changyuchun’, ‘123456’, ‘常遇春’, 1, ‘2.jpg’, 2, ‘2012-12-05’,now(), now()),
(NULL , ‘xiaozhao’, ‘123456’, ‘小昭’, 2, ‘3.jpg’, 3, ‘2013-09-05’, now(), now());




##  修改(update)

update语法:

```sql
UPDATE 表名 SET 字段名1 = 值1 , 字段名2 = 值2 , .... [WHERE 条件] ;

注意事项:

  1. 修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据。

  2. 在修改数据时,一般需要同时修改公共字段update_time,将其修改为当前操作时间。

比如修改姓名是小昭的密码

 UPDATE emp SET password='xiaozhao000' WHERE name='小昭';

删除(delete)

delete语法:

DELETE FROM 表名 [WHERE 条件] ;

注意事项:

​ • DELETE 语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据。

​ • DELETE 语句不能删除某一个字段的值(可以使用UPDATE,将该字段值置为NULL即可)。

​ • 当进行删除全部数据操作时,会提示询问是否确认删除所有数据,直接点击Execute即可。

清空这张表

DELETE FROM emp;

删除小昭这条数据

DELETE FROM emp WHERE name='小昭';

总结

数据库对应用开发还是很重要的,是离不开的

命令很多,但是不需要记住。用到了就查。另外也可以使用可视化工具,

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

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

相关文章

赛氪网技术支持第八届集创赛全国总决赛:共绘集成电路创新蓝图

赛氪网技术支持第八届集创赛全国总决赛:共绘集成电路创新蓝图 山东,2024年8月19日至21日 —— 全国瞩目的第八届全国大学生集成电路创新创业大赛(以下简称“集创赛”)全国总决赛在美丽的海滨城市山东省烟台市隆重举行。本次大赛由…

架桥机液压站比例阀放大器

架桥机液压站是专为公路桥梁建设而设计的一种重要设备,它通过先进的液压系统来实现桥梁的快速、安全架设。液压系统包括三套独立的子系统,分别服务于1号柱、2号柱以及0号柱和3号柱。每套系统均由液压泵站、液压缸、比例电磁控制阀等核心部件构成。液压泵…

IaaS,PaaS,aPaaS,SaaS,FaaS,如何区分?

​IaaS, PaaS,SaaS,aPaaS 还有一种 FaaS ,这几个都是云服务中常见的 5 大类型: IaaS:基础架构即服务,Infrastructure as a Service PaaS:平台即服务,Platform as a Service aPaaS&…

Linux_rwx权限,修改权限,修改所有者和所在组

目录 权限的基本介绍 rwx作用到文件 rwx作用到目录 权限说明案例 修改权限 修改文件所有者-chown 修改文件/目录所在组-chgrp 权限的基本介绍 第0位是文件类型,然后是所有者的权限,所属组的权限,其他用户的权限。 -代表它是一个普通…

使用VS Code开发.NET 8 环境搭建

1. sdk环境确认 -- 查看.net 版本 PS C:\Users\a> dotnet --version 8.0.303 -- 查看已安装的.net sdk 列表 PS C:\Users\a> dotnet --list-sdks 3.0.100 [C:\Program Files\dotnet\sdk] 5.0.301 [C:\Program Files\dotnet\sdk] 6.0.417 [C:\Program Files\dotnet\sdk] …

cadence617版本,如何做一个参数可调的反相器

🏆本文收录于《CSDN问答解惑-专业版》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收…

Linux VSFTP 部署与配置

一、VSFTP 简介与应用 VSFTP(Very Secure FTP Daemon)是一款功能强大、安全可靠的FTP服务器软件,广泛应用于Linux/Unix系统中。它提供了高效的文件传输服务,并具备诸多安全特性,如用户认证、权限控制、SSL/TLS加密等。…

AI大模型太TM牛逼了!

如果你问:2024年,程序员必须掌握哪项技术?AI一定是榜首! 从去年起,AI大模型已是程序员的必备工具——‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ 编程提效: 编写更快,程序更稳定;代码更优&am…

【全开源】php在线客服系统源码 (搭建教程+全新UI)

PHP在线客服系统是一种基于PHP编程语言开发的在线客服系统,它可以为网站提供实时的在线客服支持,方便用户与客服人员进行即时的沟通和交流。作为一种开源的系统,它的源码可以供开发者进行二次开发和定制,以满足不同网站的需求。 …

老古董Lisp实用主义入门教程(5):好奇先生用Lisp探索Lisp

鲁莽先生什么都不管 鲁莽先生打开电脑,安装一堆东西,噼里啪啦敲了一堆代码,叽里呱啦说了一堆话,然后累了就回家睡觉了。 这可把好奇先生的兴趣勾起来,他怎么也睡不着。好奇先生打开电脑,看了看鲁莽先生留…

Figma 替代品 Penpot 安装和使用教程

在设计领域,Figma 无疑是一个巨人。它彻底改变了设计流程,将协作带到了一个全新的高度。然而,随着 Adobe 收购 Figma 的消息传出,许多设计师和开发者开始担心:Figma 未来会如何演变?那些好用的特性会不会被…

【python】深入探讨python中的抽象类,创建、实现方法以及应用实战

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

【SpringBoot】11 多数据源(MyBatis:dynamic-datasource)

介绍 多数据源:指的是一个单一应用程序中涉及了两个及以上的数据库,这种配置允许应用程序根据业务需求灵活地管理和操作不同的数据库。 需求 一个应用服务中,连接多个数据库,有本地的也有远程的,有MysQL、Oracle、P…

代码随想录算法训练营day51:图论02:99. 岛屿数量;100. 岛屿的最大面积

99. 岛屿数量 卡码网题目链接(ACM模式)(opens new window) 题目描述: 给定一个由 1(陆地)和 0(水)组成的矩阵,你需要计算岛屿的数量。岛屿由水平方向或垂直方向上相邻的陆地连接而…

PHP农场扶农系统智慧认养智慧乡村系统农场系统小程序源码

🌱科技赋能田园梦 —— 探索“农场扶农系统”与“智慧认养智慧乡村”新篇章🚀 🌈【开篇:田园新风尚,科技引领未来】 在快节奏的都市生活中,你是否曾梦想过拥有一片属于自己的绿色天地?现在&am…

大一新生看过来,【入学证件照】这样拍才可以千万不要拍错了

大一新生在拍摄证件照时,确实需要注意一些关键点,以确保照片符合规定并能成功使用。‌不会的可以多看看我首页说明,VX小城续:桃子证件照,帮你搞定大学四年所以的照片可以打印邮寄 首先,重要的是要注意以下几…

通信总线-串口/IIC/SPI

基本概念 1.串行:只有一个数据线,bit(位)一个一个传输(本质传输的是电信号,高低电平代表0或1) 更常用(UART,IIC,SPI) 2.并行:多个…

企业文件防泄密怎么做?10款透明加密软件排行榜

在信息时代,企业的核心竞争力往往体现在其拥有的知识和信息上,而企业文件的安全性直接关系到这些信息的保护。文件防泄密已成为企业管理中的重要议题,透明加密技术因其无缝集成和高效保护的特性,成为企业防泄密的首选方案。2024年…

RabbitMQ与ElasticSearch面试

目录 RabbitMQ 1、你们项目中哪里用到了RabbitMQ 2、为什么会选择使用RabbitMQ 3、使用RabbitMQ如何保证消息不丢失 4、消息的重复消费问题如何解决的 5、如何解决消息堆积在MQ的问题 6、RabbitMQ如何保证消费的顺序性 7、RabbitMQ的延迟队列有了解过嘛 8、RabbitMQ如…

<数据集>流水线物件识别数据集<目标检测>

数据集格式:VOCYOLO格式 图片数量:8643张 标注数量(xml文件个数):8643 标注数量(txt文件个数):8643 标注类别数:26 标注类别名称:[Crankshaft, Centrifugal_body, Washer_container, Circlip_containe…