数据库初始,SQL语句介绍,MySQL数据库安装,SQL语句基础,操作MySQL数据库

Ⅰ数据库初识

【一】存储数据的演变过程

【1】文件基于内存保存

  • 在早期,随意地存放到一个文件中、数据格式也是千差万别的,完全取决于个人
  • 员工管理系统是基于列表或字典(内存)存储数据

【2】文件操作

  • 用本地的 文本文件存储数据
  • 有的人喜欢存储到本地的一个文件中 有的人喜欢存储到一个文件夹下的每一个小文件

【3】json模块

  • 用json文件存储响应的数据
  • ATM+购物车->软件开发架构
  • 规定并约束了每一个文件夹的功能以及内部的文件名
  • db文件夹下有一个 db_handler.py 用来操作数据 (读取和保存数据)
# 软件开发目录规范
bin:主要存放主程序文件,例如main.py;
conf:主要存放配置文件,例如settings.py;
lib:主要存放公用函数或类库,例如common.py;
core:主要存放核心模块代码,例如src.py;
interface:主要存放用户界面代码,例如interface.py;
db:主要存放数据库模块和操作脚本,例如moduls.py和db_hander.py;
log:主要存放日志文件,例如logs.log;
README.md:主要存放项目说明文档。

【4】上面的所有数据都是存储在本地的

  • 假设上面是一个游戏
  • 每一个人的游戏数据只会保存在本地
  • 注册登录账号也只能在本地有效

【5】网络和并发编程

  • 搭建TCP的客户端和服务端
  • 在这之中 TCP服务端作为存储服务,TCP客户端用来上传和下载文件数据

【6】我们称 存储数据的位置 就是数据库

  • 内存---> 文件 ---> TCP服务端

【7】总结

  • 数据库的本质就是一个基于网络通信保存数据的应用程序
  • 在现代互联网环境下,单机模式已经不能满足需求,需要将数据库服务端建立起来,将数据库保存部分统一到一个位置。
  • 所有的数据操作都会经过这个总的数据库。
  • 这样不仅可以实现数据共享,还可以保证数据的安全性和稳定性。
  • 同时,也可以通过增加服务器集群等方式,提高系统的性能和可扩展性。

【二】数据库的本质

  • 数据库其实就是一块基于网络通信的应用程序
  • 每个人都有开发一块数据库的能力

【三】数据库的介绍

  • TCP服务端作为存储数据的位置

【1】数据存储分为本地持久化存储和内存临时性存储

【2】关系型数据库

  • MySQL
  • Oracle
  • db2
  • access
  • sql server

这些数据库都采用关系模型来组织数据,并且支持SQL查询语言。

#和你的Excel文件一样 表 行 单元格
特点
彼此之间是有关联得 一张表中有很多数据
存储数据的格式是采用表的格式存储数据
每个字段限制当前字段存储的类型
关系型数据库还支持增删改查,插入更新 ...

【2】非关系型数据库

  • Redis
  • MongoDB
  • Memcached

这些数据库不采用关系模型来组织数据,而是采用了其他的模型,例如键值对模型、文档模型、图形模型等。

特点
存储数据通常是以 K:V 键值对存储数据
非关系型数据库的存储数据是临时性的,将数据存储到内存中,通过键来标识值的标志 --->/ 无法持久化
非关系性数据库不支持太多的复杂功能

【3】关系型(存储数据)

  • 彼此之间有关联
  • 存储数据的表型形式通常以表格形式存储
  • 每个字段限制每个字段下的存储数据的格式例如字符串、数字、日期等。
  • 同时,关系型数据库还支持各种数据操作,例如插入、删除、更新和查询等。

【4】非关系型(缓存数据)

  • 存储数据通常是K:V形式存储数据
  • 非关系型数据库通常用于存储临时性的、高速访问的数据,这些数据通常以键值对的形式存储,其中“键”表示数据的唯一标识,“值”表示实际的数据内容。
  • 由于非关系型数据库通常不提供事务支持和复杂的查询功能,因此不适合存储长期保存的历史数据。

【四】数据库的应用场景

【1】需求

  • 假设现在你已经是某大型互联网公司的高级程序员,让你写一个火车票购票系统,来hold住十一期间全国的购票需求,你怎么写?
  • 在同一时段抢票的人数如果太多,那么你的程序不可能运行在一台机器上,应该是多台机器一起分担用户的购票请求。

【2】实现需求

  • 那么问题就来了,票务信息的数据存在哪里?存在文件里么?

  • 如果存储在文件里,那么存储在哪一台机器上呢?是每台机器上都存储一份么?

    • 首先,如果其中一台机器上卖出的票另外两台机器是感知不到的,
    • 其次,如果我们将数据和程序放在同一个机器上,如果程序和数据有一个出了问题都会导致整个服务不可用。
    • 最后,操作或修改文件中的内容对python代码来说是一件很麻烦的事。
  • 基于上面这些问题,单纯的将数据存储在和程序同一台机器上的文件中是非常不明智的。

  • 根据上面的例子,我们可以知道,将文件和程序存在一台机器上是很不合理的,同时,操作文件是一件很麻烦的事,所以我们可以使用数据库来存储数据。

# 你现在是一家公司的程序员 ---> 负责项目开发 ---> 开发一个类似 12306 的抢票系统 ---> 存储了很多票(分步全国各地)
# 同一时刻要有很多人一起去抢票
# 如果你用一台电脑存储你的票的数据 ---> 100万的数据存储到一个电脑上 --> 10万个人一起抢票 1000万秒
# 分十个电脑 ---> 每个电脑存 10万数据 --> 10万个人一起抢票 --> 不方便数据整合和查找
# 用数据库来存储数据 做一个TCP的服务端存储票的数据 ---> 基于本地存储(永久性存储) ---> 1000万秒
# MySQL这种关系型数据库持久化存储票的数据  Redis作为缓存数据库 --> 在程序启动的时候 将本地 MySQL 数据读取到 Redis
# 用户访问的时候会优先访问 Redis 用户买票 优先操作 Redis ---> 做一个触发机制 只要有人买了票 就将Redis的数据同步到本地一份

Ⅱ SQL语句介绍

  • SQL语句:是一种操作语言 跟你的Python一样,但是又不一样

【一】SQL语句的由来

【1】socket通信

  • 任何基于网络通信的应用程序底层用的都是scoket
    • 服务端
      • 基于socket通信
      • 收发消息
    • 客户端
    • 基于socket通信
    • 收发消息

【2】SQL语句的由来

  • TCP服务端作为数据库的存储位置
  • 字符编码 ---> 每一个国家都有自己的编码表 ---> 实现了统一unicode
  • TCP服务端作为数据库 ---> 一个人一个操作习惯 ---> 大家会产生分歧 会导致很多不同的语句诞生 ---> 又有了字符编码的前鉴
  • 为了使 MySQL 不仅能支持 MySQL 自己的客户端应用程序,还能支持其他编程语言
  • MySQL 采用了 SQL 作为统一的语言来进行数据操作。
  • 这样就可以让服务器端兼容所有语言,因为所有的客户端应用程序都可以通过执行相同的 SQL 语句来进行数据操作。

【二】重要的概念

【1】库(Database)

  • 库是指在数据库管理系统中用于存储和组织数据的容器。
  • 它可以视为一个文件夹,用于存放相关的数据表。 数据库中可以包含多个库,每个库可以包含多个表。

【2】 表(Table)

  • 表是数据库中的一个基本组成单位,用于存储和展示数据。
  • 表由行(记录)和列(字段)组成,每一行表示一个记录,每一列表示一个字段。
  • 表可以看作是一个二维数据结构,类似于电子表格。

【3】记录(Record)

  • 记录也称作行,是表中的一个数据项或实体。
  • 每一行都代表了一个完整的数据记录,其中包含了各个字段的具体数值或信息。
  • 例如,在一个学生信息表中,每一行代表一个学生的具体信息。

【4】表头(Header)

  • 表头是表中的第一行,用于描述每个列字段的含义或名称。
  • 表头通常包含了列的标签或标题,通过表头可以了解每个列字段所代表的意义,方便数据的理解和查询。

【5】表单(Form)

  • 表单是一种用来收集和展示数据的界面形式,常见于数据输入和显示的场景中。
  • 表单通常包含了各种输入字段(例如文本框、下拉列表等)和相关的操作按钮,用户可以通过表单进行数据的录入、编辑和提交等操作。
  • 表单的数据可以被存储到相应的表中,用于后续的数据处理和分析。

【6】小结

  • 库:
    • 相当于我们的文件夹
  • 表:
    • 相当于我们的文件
  • 记录:
    • 相当于我们一行行的数据
  • 表头:
    • 表格的第一行字段
  • 表单:
    • 表头对应的每一条数据

Ⅲ MySQL数据库安装

【一】各种服务器的端口

  • 本质其实就是一个TCP的客户端和服务端
  • 想要使用数据库,想要使用客户端就必须启动服务端
  • 启动服务器 就需要 IP 和 端口
  • 常用的端口 :
  • MySQL :3306
  • Redis : 6379
  • MongoDB : 27017
  • Django : 8000
  • flask : 5000

能不能改启动端口?也能改 但是不建议改

【二】MySQL安装

【1】MySQL介绍

MySQL是一个开源免费的关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司。
MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一,
具有成本低、速度快、体积小且开放源代码等优点。

图来源:https://db-engines.com/en/ranking

【2】下载MySQL服务端

(1)打开官网

(2)点击downloads

(3)选择MySQL Community Server

(4)选择版本

(5)点击download下载

【3】安装MySQL

(1)解压压缩包

  • 把下载到本地的zip文件手动解压,将解压之后的文件夹放到专门保存开发软件的目录下,这个目录就是mysql的安装目录。
  • 注意,目录路径不能出现中文,不能出现空格等特殊符号,否则会出错的!!!

(2)配置环境变量

  • 打开设置搜索环境变量

  • 将MySQL的bin目录添加到环境变量中

(3)打开终端

  • 搜索栏输入终端,然后以管理员身份运行

(4)配置MySQL配置文件

  • 在你的MySQL安装目录下新建一个文件,文件名 my.ini
[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir="D:\Python\MySql"
# 设置mysql数据库的数据的存放目录,就是前面手动创建的data目录
datadir="D:\Python\MySql\data"
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。
max_connect_errors=10
# 服务端使用的字符集默认为utf8mb4
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证, mysql_native_password
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql网络通信的默认字符集
default-character-set=utf8mb4
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
# 设置mysql客户端的默认字符集
default-character-set=utf8mb4

  • 先建一个文本文档,设置好之后再修改成 my.ini
  • 要注意把后缀拉出来修改
  • 再创建一个 data文件夹

(5)初始化MySQL服务端

  • 执行命令进行初始化
mysqld --initialize --console

C:\WINDOWS\system32>mysqld --initialize --console
2024-05-27T08:37:31.108989Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2024-05-27T08:37:33.235907Z 0 [Warning] InnoDB: New log files created, LSN=45790
2024-05-27T08:37:33.616028Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2024-05-27T08:37:33.814200Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 5d09a9e8-1c04-11ef-b992-c85b76a189d8.
2024-05-27T08:37:33.845129Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2024-05-27T08:37:34.652990Z 0 [Warning] A deprecated TLS version TLSv1 is enabled. Please use TLSv1.2 or higher.
2024-05-27T08:37:34.653518Z 0 [Warning] A deprecated TLS version TLSv1.1 is enabled. Please use TLSv1.2 or higher.
2024-05-27T08:37:34.657597Z 0 [Warning] CA certificate ca.pem is self signed.
2024-05-27T08:37:37.015485Z 1 [Note] A temporary password is generated for root@localhost: qrmaes)hf4gY

# qrmaes)hf4gY 这串临时密码记住

(6)注册系统服务

  • 未注册之前是没有MySQL服务的

  • 执行命令注册
mysqld --install
C:\WINDOWS\system32>mysqld --install
Service successfully installed.

  • 移除MySQL
mysqld --remove
C:\WINDOWS\system32>mysqld --remove
Service successfully removed.

(7)启动MySQL服务

  • 方式一
  • 手动开启

  • 方式二
net start mysql # 启动MySQL服务
C:\WINDOWS\system32>net start mysql
MySQL 服务正在启动 .
MySQL 服务已经启动成功。

net stop mysql #停止MySQL服务
C:\WINDOWS\system32>net stop mysql
MySQL 服务正在停止.
MySQL 服务已成功停止。

【4】MySQL操作

(1)登入和退出

# 登录
# 方式一:直接本地登入 u:username root:用户名 -p :password
mysql -uroot -p
# 方式二:加上用户名和密码一起登入
mysql -uroot -p123456
# 链接远程服务登入
mysql -h 192.168.1.63 -P 3306 -uroot -p123456
# 在退出语句中必须有结束符 ;
exit;

(2)修改密码

  • 登入客户端
# 先执行:mysql -uroot -p 
# 再输入临时密码:qrmaes)hf4gY 

  • 修改密码
alter user 'root'@'localhost' identified by '123456';
mysql> alter user 'root'@'localhost' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
  • 刷新权限
flush privileges;
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

(3)修改密码(忘记原本的密码)

  • 先关闭MySQL服务
net stop mysql
  • 执行跳表命令
mysqld --skip-grant-tables
# 以无密码登入的启动模式启动MySQL服务端

  • 再打开一个终端
  • 执行MySQL登入命令
mysql -uroot -p
# 输入密码的时候什么都不要输 直接enter

  • 继续修改密码
# 先刷新一下权限
flush privileges;
# 在执行修改密码
alter user 'root'@'localhost' identified by '1234567';
# 在刷新权限
flush privileges;

(4)跳过输入密码直接登入

  • 在配置文件中增加下述配置
[mysql]
# 不需要每次输入验证码即可登陆
user="root"
password=你的密码
default-character-set=utf8mb4

Ⅳ SQL语句基础

【一】引入

  • 前面的学习中我们提到,mysql是关系型数据库,
  • 所以我们要操作mysql就需要使用SQL(结构化查询语言)

【二】SQL规范

  • 在数据库管理系统中,SQL语句关键字不区分大小写(但建议用大写) ,参数区分大小写。
    • 建议命令大写,数据库名、数据表名、字段名统一小写,如数据库名、数据表名、字段名与关键字同名,使用反引号 圈起来,避免冲突。
  • SQL语句可单行或多行书写,默认以英文分号(;)结尾,关键词不能跨多行或简写。
  • 字符串跟日期类型的值都要以 单引号括起来,单词之间需要使用半角的空格隔开。
  • 用空格和缩进来提高SQL语句的可读性。

【三】注释语法

【1】单行注释

 # -- 两根 - 就是注释
# 一个 # 号也是注释
# mysql支持单行注释

-- 这是注册
# 这是注释

【2】多行注释

/*   
多行注释  
*/

【四】SQL类型

  • 根据不同的用途,SQL语句通常分3大类型:

【1】数据定义语言(Data Definition Language,DDL)

  • 用于创建或删除数据库以及数据表的语句,DDL包含以下几种指令:
  • CREATE: 创建数据库和表等对象
  • DROP: 删除数据库和表等对象
  • ALTER: 修改数据库和表等对象的结构

【2】数据操纵语言(Data Manipulation Language,DML)

  • 用于对数据表中的数据进行增删查改的。
  • SELECT: 查询表中的数据
  • INSERT: 向表中插入新数据
  • UPDATE: 变更表中的数据
  • DELETE: 删除表中的数据

【3】数据控制语言(Data Control Language,DCL)

  • 用于对控制数据库的操作权限的,包括用户权限以及数据操作权限。
  • COMMIT: 确认对数据库中的数据进行的变更
  • ROLLBACK: 取消对数据库中的数据进行的变更
  • GRANT: 赋予用户操作权限
  • REMOVE: 取消用户的操作权限

【五】常用命令

命令 描述
help 显示有关特定命令或功能的帮助信息
status 查看数据库管理系统的状态信息
exit 退出数据库终端连接
quit 退出数据库终端连接
\c 当打错命令了,想换行重新写时可以在错误命令后面跟着\c回车

Ⅴ 操作MySQL数据库

【一】针对库的增删改查(文件夹)

【1】创建数据库

  1. 语法
  • 在磁盘上创建一个存储数据表的文件夹。
create database [if not exists]数据库名字 [charset set 字符编码集];
create database study001;
  1. 示例
mysql> create database study001;
Query OK, 1 row affected (0.00 sec)
# 设置库的默认编码
create databases db1 charset='gbk';
  • 注意:mysql中的编码字符集中utf-8,要换成utf8mb4。SQL语句中的中括号部分表示可选

【2】查看当前所有数据库

  1. 语法
show databases;  -- 查看所有数据库
show databases like '%test%'; -- 查看名字中包含test的数据库
show create database 数据库名; -- 查看数据库的建库sql语句
  1. 示例
mysql> show databases; -- 查看所有数据库
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| study001           |
| sys                |
+--------------------+
5 rows in set (0.00 sec)
show create database study001; -- # 查看指定库
mysql> show create database study001;
+----------+----------------------------------------------------------------------+
| Database | Create Database                                                      |
+----------+----------------------------------------------------------------------+
| study001 | CREATE DATABASE `study001` /*!40100 DEFAULT CHARACTER SET utf8mb4 */ |
+----------+----------------------------------------------------------------------+
1 row in set (0.00 sec)

【3】修改数据库

(1)查看数据库编码格式

  1. 语法
show variables like "character_set_database";
  1. 示例
mysql> show variables like "character_set_database";
+------------------------+---------+
| Variable_name          | Value   |
+------------------------+---------+
| character_set_database | utf8mb4 |
+------------------------+---------+
1 row in set, 1 warning (0.01 sec)

(2)修改数据库编码集

  1. 语法
alter database 数据库名 [character set 编码字符集];
  1. 示例
alter database study001 charset='utf8';

【4】删除数据库

  1. 语法
  • 别轻易删除数据库,因为不可逆
drop database [if exists] 数据库名;
drop database 数据库名字;
drop database study001;
  1. 示例
mysql> drop database study001;
Query OK, 0 rows affected (0.00 sec)

【二】针对表的增删改查(文件)

  • 在操作表的时候要指定所在的库

【1】切换到指定库

  1. 语法
  • 在创建表之前一定要切换数据库
use 数据库名字;  -- 切换数据库
use study001;
  1. 示例
mysql> use study001;
Database changed

【2】查看当前所在库的名字

  1. 语法
select database(); --  查看当前使用的数据库
  1. 示例
mysql> select database();
+------------+
| database() |
+------------+
| study001   |
+------------+
1 row in set (0.00 sec)

【三】数据表相关

  • 在创建表之前一定要切换数据库 (切换数据库 查看表名字在上面)

【1】创建表

  • 数据表就相当于文件,文件有文件名,自然地,数据表也要有表名。
  • 同样道理,数据表中的一条记录就相当于文件的一行内容。
  • 只是不同的是,数据表需要定义表头(上图中的首行),称为表的字段名。
  • 而且因为数据库的存储数据更加科学、严谨,所以需要创建表时要给每一个字段设置数据类型以及字段约束(完整性约束条件)。
  1. 语法
create table  [if not exists]  表名 (
    字段名1    数据类型[ ( 存储空间 )    字段约束 ],
    字段名2    数据类型[ ( 存储空间 )    字段约束 ],
    字段名3    数据类型[ ( 存储空间 )    字段约束 ],
    .....
    字段名n   数据类型[ ( 存储空间 )    字段约束 ],
    primary key(一个 或 多个 字段名)    -- 注意,最后一段定义语句,不能有英文逗号的出现,否则报错。
) [engine = 存储引擎 character set 字符集];
  • 注意:

    • 上面SQL语句中,小括号中的定义字段语句后面必须以英文逗号结尾,而最后一个字段的定义语句不能有英文逗号出现,否则报错。
    • 在同一张数据表中,字段名是不能相同,否则报错!
    • 创建数据表的SQL语句中,存储空间和字段约束是选填的,而字段名和数据类型则是必须填写的。
  1. 示例
  • 创建表指定字段
-- mysql中创建数据表要以 create table `表名`
-- 表的字段信息必须写在 (  )  小括号里面
create table classes (
    -- 建议一行一个字段,id 就是字段名
    -- int 表示设置字段值要以整数的格式保存到硬盘中,
    -- auto_increment表示当前字段值在每次新增数据时自动+1作为值保存
    -- primary key,mysql中叫主键,表示用于区分一个数据表中不同行的数据的唯一性,同时还具备加快查询速度的作用
    -- 注意:auto_increment与primary key 一般是配合使用的,对应的字段名一般也叫id,而且在一个数据表中只有一个字段能使用auto_increment primary key进行设置。
    id int auto_increment primary key,
    -- 字段名:name
    -- varchar(10) 表示当前name这一列可以存储的数据是字符串格式,并且最多只能存10个字符
    name varchar(10),
    -- 字段名:address
    -- varchar(100) 表示adderss这一列可以存储的数据是字符串格式,并且最多只能存100个字符
    address varchar(100),
    -- 字段名:total
    -- int 表示当前total这一列的数据只能是整数,而且一个数据表中,整数的最大范围只能是42亿
    total int
);
# 创建示例
create table classes (
    id int auto_increment primary key,
    name varchar(10),
    address varchar(100),
    total int
);
  • 上面的SQL语句就相当于创建了一个表格。
id name address total

【2】查看表

(1)查看当前数据库下的所有表

  1. 语法
show tables;
  1. 示例
mysql> show tables;
+--------------------+
| Tables_in_study001 |
+--------------------+
| classes            |
+--------------------+
1 row in set (0.10 sec)

(2)查看当前表的详细信息

  1. 语法
describe 表名;
describe classes;

  1. 示例
mysql> describe classes;
+---------+--------------+------+-----+---------+----------------+
| Field   | Type         | Null | Key | Default | Extra          |
+---------+--------------+------+-----+---------+----------------+
| id      | int(11)      | NO   | PRI | NULL    | auto_increment |
| name    | varchar(10)  | YES  |     | NULL    |                |
| address | varchar(100) | YES  |     | NULL    |                |
| total   | int(11)      | YES  |     | NULL    |                |
+---------+--------------+------+-----+---------+----------------+
4 rows in set (0.13 sec)

(3)查看表的创建语句

  1. 语法
show create table 表名;
show create table classes;

show create table classes\G;
  1. 示例
mysql> show create table classes;
+---------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table   | Create Table                                                                                                                                                                                                                            |
+---------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| classes | CREATE TABLE `classes` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(10) DEFAULT NULL,
  `address` varchar(100) DEFAULT NULL,
  `total` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 |
+---------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> show create table classes\G;
*************************** 1. row ***************************
       Table: classes
Create Table: CREATE TABLE `classes` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(10) DEFAULT NULL,
  `address` varchar(100) DEFAULT NULL,
  `total` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
1 row in set (0.00 sec)

ERROR:
No query specified

【3】修改表

(1)修改表的字段类型

  1. 语法
alter table 表名 modify 字段名 字段类型(长度);
alter table classes modify name varchar(32);
  1. 示例
mysql> alter table classes modify name varchar(32);
Query OK, 0 rows affected (0.37 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> desc classes;
+---------+--------------+------+-----+---------+----------------+
| Field   | Type         | Null | Key | Default | Extra          |
+---------+--------------+------+-----+---------+----------------+
| id      | int(11)      | NO   | PRI | NULL    | auto_increment |
| name    | varchar(32)  | YES  |     | NULL    |                |
| address | varchar(100) | YES  |     | NULL    |                |
| total   | int(11)      | YES  |     | NULL    |                |
+---------+--------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)

(2)修改字段类型或者名字

  1. 语法
alter table 原来的表名 rename 新表名;

alter table classes rename class_data; 
  1. 示例
mysql> alter table classes rename class_data;
Query OK, 0 rows affected (0.16 sec)
+--------------------+
| Tables_in_study001 |
+--------------------+
| class_data         |
+--------------------+
1 row in set (0.00 sec)

(3)追加字段

  1. 语法
alter table 表名 add 字段名 字段类型;
alter table class_data add age int;
  1. 示例
mysql> alter table class_data add age int;
Query OK, 0 rows affected (0.76 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> desc class_data;
+---------+--------------+------+-----+---------+----------------+
| Field   | Type         | Null | Key | Default | Extra          |
+---------+--------------+------+-----+---------+----------------+
| id      | int(11)      | NO   | PRI | NULL    | auto_increment |
| name    | varchar(32)  | YES  |     | NULL    |                |
| address | varchar(100) | YES  |     | NULL    |                |
| total   | int(11)      | YES  |     | NULL    |                |
| age     | int(11)      | YES  |     | NULL    |                |
+---------+--------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)

(4)可以指定字段添加的位置

  1. 语法
alter table 表名 add 字段名 字段类型(长度) after 字段名;
alter table class_data add gender varchar(32) after name;
  1. 示例
mysql> alter table class_data add gender varchar(32) after name;
Query OK, 0 rows affected (0.79 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> desc class_data;
+---------+--------------+------+-----+---------+----------------+
| Field   | Type         | Null | Key | Default | Extra          |
+---------+--------------+------+-----+---------+----------------+
| id      | int(11)      | NO   | PRI | NULL    | auto_increment |
| name    | varchar(32)  | YES  |     | NULL    |                |
| gender  | varchar(32)  | YES  |     | NULL    |                |
| address | varchar(100) | YES  |     | NULL    |                |
| total   | int(11)      | YES  |     | NULL    |                |
| age     | int(11)      | YES  |     | NULL    |                |
+---------+--------------+------+-----+---------+----------------+
6 rows in set (0.00 sec)

(5)将字段插入到头部

  1. 语法
alter table 表名 add 字段名 字段类型(长度) first;
alter table class_data add sex int first;
  1. 示例
mysql> alter table class_data add sex int first;
Query OK, 0 rows affected (0.41 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> desc class_data;
+---------+--------------+------+-----+---------+----------------+
| Field   | Type         | Null | Key | Default | Extra          |
+---------+--------------+------+-----+---------+----------------+
| sex     | int(11)      | YES  |     | NULL    |                |
| id      | int(11)      | NO   | PRI | NULL    | auto_increment |
| name    | varchar(32)  | YES  |     | NULL    |                |
| gender  | varchar(32)  | YES  |     | NULL    |                |
| address | varchar(100) | YES  |     | NULL    |                |
| total   | int(11)      | YES  |     | NULL    |                |
| age     | int(11)      | YES  |     | NULL    |                |
+---------+--------------+------+-----+---------+----------------+
7 rows in set (0.00 sec)

【4】删除字段

  1. 语法
alter table 表名 drop 字段名;
alter table class_data drop sex;
  1. 示例
mysql> alter table class_data drop sex;
Query OK, 0 rows affected (0.71 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> desc class_data;
+---------+--------------+------+-----+---------+----------------+
| Field   | Type         | Null | Key | Default | Extra          |
+---------+--------------+------+-----+---------+----------------+
| id      | int(11)      | NO   | PRI | NULL    | auto_increment |
| name    | varchar(32)  | YES  |     | NULL    |                |
| gender  | varchar(32)  | YES  |     | NULL    |                |
| address | varchar(100) | YES  |     | NULL    |                |
| total   | int(11)      | YES  |     | NULL    |                |
| age     | int(11)      | YES  |     | NULL    |                |
+---------+--------------+------+-----+---------+----------------+
6 rows in set (0.00 sec)

【5】删除表

  1. 语法
drop table 表名;
drop table class_data;
  1. 示例
mysql> drop table class_data;
Query OK, 0 rows affected (0.23 sec)
mysql> show tables;
Empty set (0.00 sec)

【四】数据相关

  • 操作数据要有明确的数据库下的数据表

【1】插入数据

  1. 语法
insert into 表名 (字段名,字段名) values(,);
INSERT [INTO] <表名> [ <列名1> [ ,<列名n>] ] VALUES (1) [, (值n) ];
create table user(
 name varchar(32),
 age int
);
  1. 示例
mysql> create table user(
    ->  name varchar(32),
    ->  age int
    -> );
Query OK, 0 rows affected (0.27 sec)
mysql> show tables;
+--------------------+
| Tables_in_study001 |
+--------------------+
| user               |
+--------------------+
1 row in set (0.00 sec)

(1)插入单条/多条数据

  1. 语法
# 插入单条数据
insert into user (name,age) 
values
('silence', 18);
# 插入多条数据
insert into user (name,age) 
values
('happy', 28),
('mike', 16);
  1. 示例
mysql> insert into user (name,age)
    -> values
    -> ('silence', 18);
Query OK, 1 row affected (0.09 sec)
mysql> insert into user (name,age)
    -> values
    -> ('happy', 28),
    -> ('mike', 16);
Query OK, 2 rows affected (0.04 sec)
Records: 2  Duplicates: 0  Warnings: 0

【2】查看数据

  1. 语法
select * from 表名;

2.示例

mysql> select * from user;
+---------+------+
| name    | age  |
+---------+------+
| silence |   18 |
+---------+------+
1 row in set (0.00 sec)
mysql>  select * from user;
+---------+------+
| name    | age  |
+---------+------+
| silence |   18 |
| happy   |   28 |
| mike    |   16 |
+---------+------+
3 rows in set (0.00 sec)

【3】更改数据

  1. 语法
update 表名 set 字段名=新值 where 字段名=字段值;

update user set age=999 where name="happy";
  1. 示例
mysql> update user set age=999 where name="happy";
Query OK, 1 row affected (0.09 sec)
Rows matched: 1  Changed: 1  Warnings: 0
mysql> select * from user;
+---------+------+
| name    | age  |
+---------+------+
| silence |   18 |
| happy   |  999 |
| mike    |   16 |
+---------+------+
3 rows in set (0.00 sec)

【4】删除数据

  1. 语法
delete from 表名 where 字段名=字段值;
delete from user where name="happy";
  1. 示例
mysql> delete from user where name="happy";
Query OK, 1 row affected (0.19 sec)
mysql> select * from user;
+---------+------+
| name    | age  |
+---------+------+
| silence |   18 |
| mike    |   16 |
+---------+------+
2 rows in set (0.00 sec)

【特别提示】

  • 使用 DROP DATABASE/TABLE 命令时要非常谨慎,
  • 在执行该命令后,MySQL 不会给出任何提示确认信息。
  • DROP DATABASE 删除数据库后,数据库中存储的所有数据表和数据也将一同被删除,而且不能恢复。
  • 因此最好在删除数据库之前先将数据库进行备份。

posted on   silence^  阅读(26)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示