MySQL数据库和表的操作

#使用数据库
use 数据库名;
# 查询当前数据库是哪个数据库
select database();
查看数据库版本
SELECT VERSION();
查看当前用户
SELECT USER();
查看所有用户()
SELECT User,Host,Password FROM mysql.user;

数据库

MySQL自带数据库:

Information_schema: 主要存储了系统中的一些数据库对象信息:如用户表信息、列信息、权限信 息、字符集信息、分区信息等。(数据字典表)

performance_schema: 主要存储数据库服务器的性能参数

mysql: 存储了系统的用户权限信息及帮助信息。

sys: 5.7新增,之前版本需要手工导入。这个库是通过视图的形式把information_schema

performance_schema结合起来,查询出更加令人容易理解的数据

test:系统自动创建的测试数据库,任何用户都可以使用。

MySQL数据库的编码

MySQL的编码格式

在 MySQL 中,编码格式是用来定义字符集的存储和比较方式。不同的编码格式支持不同范围的字符,并且影响数据库的排序规则和比较结果。了解和选择合适的编码格式对于数据库的国际化和字符数据的准确存储至关重要。

utf8 和 utf8mb4 的区别

MySQL 提供了多种编码格式,其中 utf8 和 utf8mb4 是最常用的两种。utf8 编码格式在 MySQL 中支持最长三个字节的 UTF-8 字符,这意味着它只能表示 Unicode 中的基本多文本平面1。这个范围包括了大多数常用字符,但不包括四字节的字符,如某些表情符号。

utf8mb4 是 utf8 的超集,支持最长四个字节的 UTF-8 字符,能够存储所有 Unicode 字符,包括表情符号。因此,如果需要在数据库中存储表情符号或其他四字节字符,应该使用 utf8mb4 编码格式。

utf8mb4 的排序规则

utf8mb4 编码格式还有几种不同的排序规则(collation),例如 utf8mb4_general_ci、utf8mb4_unicode_ci 和 utf8mb4_0900_ai_ci。这些排序规则影响字符串比较和排序的行为。utf8mb4_general_ci 是一种性能较好的排序规则,但在某些情况下可能不够准确。utf8mb4_unicode_ci 基于 Unicode 标准提供了更准确的排序,但可能会稍微慢一些。utf8mb4_0900_ai_ci 是 MySQL 8.0 引入的新排序规则,提供了更好的性能和准确性1。

-- 查看数据库编码
SHOW CREATE DATABASE database_name;-- 查看表编码
SHOW CREATE TABLE table_name;-- 查看字段编码
SHOW FULL COLUMNS FROM table_name;-- 修改数据库编码
ALTER DATABASE database_name CHARACTER SET charset_name;-- 修改表编码
ALTER TABLE table_name CONVERT TO CHARACTER SET charset_name;-- 修改字段编码
ALTER TABLE table_name MODIFY column_name column_type CHARACTER SET charset_name;

将 table_name 替换为表名称,column_name 替换为字段名称,column_type 替换为字段类型,charset_name 替换为你要使用的编码。

创建数据库

使用命令是create
# 创建数据库
CREATE DATABASE 数据库名称;# 创建数据库,同时指定编码
create database db_name default charset="utf8mb4";
create database school DEFAULT CHARACTER SET utf8mb4;
create database school DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

例如:

查看当前数据库 

# 查看创建的数据库
show create databsse 数据库名称;

 

#查看当前所有数据库
SHOW DATABASES;

 

删除数据库 

使用drop命令
drop database  数据库名称;drop database [if exists] db_chengke;---为了使输出不报错,可添加上if exists,一般用于在大量SQL语句执行时,[]中的内容可省略,

例如:

数据库表的操作

数据表(table),是一种二维表格,类似于execel,用来存储真正的数据。

 创建表格

-- 语法结构
create table [if not exists] t_name (# 定义表结构字段名称1 类型 [约束条件],字段2  类型 [约束条件],……字段n 类型 [约束条件]
);

例如:

/**创建一个用户表用户的姓名用户的年龄用户的性别用户的地址用户的电话
**/
create table t_user (id int,name varchar(50),age int,gender char(5),address varchar(255),tel char(11)
);

插入数据 

删除表格

 
drop table  if exists t_user;

数据库约束

创建数据库表的时候,字段名称 该字段类型 [约束 [,……] ]。

约束是在表上强制执行的数据校验规则。约束主要用于保证数据库的完整性。当表中数据有相互依赖性时,可以保护相关的数据不被删除。大部分数据库支持下面五类完整性约束:

存在如下一些数据库表的约束:

默认值约束
主键约束
非空约束
外键约束
唯一约束
检查约束 (MySQL8之前,不生效。MySQL8之后是支持检查约束)

主键约束

主键从功能上看相当于非空且唯一,一个表中只允许一个主键,主键是表中唯一确定一行数据的字段。

一般建议主键采用“int类型”,一般建议由数据库自身维护这个字段的值。

当建立主键约束时,MySQL为主键创建对应的索引——主键索引,主键约束名总为PRIMARY。

案例演示:

create table t_name(id int primary key,   -- 主键约束name varchar(50));#插入数据insert into t_name values(1,"zxy");
Query OK, 1 row affected (0.00 sec)#必须是唯一值,出现重复就会报错insert into t_name values(1,"zxy");
ERROR 1062 (23000): Duplicate entry '1' for key 't_name.PRIMARY'#不能为空值insert into t_name values(null,"lh");
ERROR 1048 (23000): Column 'id' cannot be null-- 主键还存在一种写法
create table t_name(id int auto_increment,  -- 主键约束name varchar(50),primary key(id)
);
唯一约束

唯一性约束条件确保所在的字段或者字段组合不出现重复值
唯一性约束条件的字段允许出现一个NULL
同一张表内可建多个唯一约束
唯一约束可由多列组合而成
建唯一约束时MySQL会为之建立对应的索引——唯一索引。
如果不给唯一约束起名,该唯一约束默认与列名相同。

#唯一约束:
CREATE TABLE tb_student(id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(18) UNIQUE  -- 唯一约束
);AUTO_INCREMENT ---自增1# 另一种写法:
CREATE TABLE tb_student(id INT AUTO_INCREMENT,NAME VARCHAR(18),  -- 唯一约束PRIMARY KEY(id),unique(name)
);

默认值约束 

给给定的字段,设置默认值

语法格式:

CREATE TABLE 表名 (字段 数据类型 DEFAULT 默认值
);

案例演示:

create table tb_user(id int primary key auto_increment,name varchar(50) unique,  --唯一约束age  int default 18  -- 默认值约束
);insert into tb_user(name, age) values("zxy", 18);insert into tb_user values(null, "xy", 16);  -- 因为存在自增,所以可以写nullinsert into tb_user values(default, "zx", 16);  -- 因为存在自增,所以可以写默认

非空约束 

不允许字段的值为空

语法格式:

CREATE TABLE 表名 (字段 数据类型 NOT NULL
);

案例演示:

create table t_user(id int primary key auto_increment,name varchar(50) unique not null,age  int default 18 ,password varchar(255) not null  --非空约束
);insert into t_user values(null, "zxy", 16);  -- 因为存在自增,所以可以写null
ERROR 1136 (21S01): Column count doesn't match value count at row 1
这里password字段有非空约束,所以报错

外键约束  
检查约束

注意:检查约束在MySQL8之前是不生效的,当然也不报错。

MySQL8之后,就支持了检查约束。

create table t_stu(id int primary key auto_increment,name varchar(50) not null unique,age int check(age >= 18),   --外键约束# gender char(2) check(gender in ("男", "女"))gender enum("男", "女")     ----外键约束
);

修改表结构

在sql中,也提供了动态修改表结构的sql功能。

使用alter指令,实现对数据库对象的结构的调整和修改。

语法格式:

修改列类型ALTER TABLE 表名 MODIFY 列名 列类型;   -- 注意存在值的情况,类型不一定能成功
增加列ALTER TABLE 表名 ADD 列名 列类型;
删除列ALTER TABLE 表名 DROP 列名;
列改名ALTER TABLE 表名 CHANGE 旧列名 新列名 列类型;
更改表名ALTER TABLE 表名 RENAME 新表名;RENAME TABLE 表名 TO 新表名;

复制表结构和内容

复制一个表结构的实现方法有两种
 
方法一:在create table语句的末尾添加like子句,可以将源表的表结构复制到新表中,语法格式如下。
create table 新表名 like 源表
 
方法二:在create table语句的末尾添加一个select语句,可以实现表结构的复制,甚至可以将源表的表
记录拷贝到新表中。下面的语法格式将源表的表结构以及源表的所有记录拷贝到新表中。
create table 新表名 select * from 源表
 
 
方法三:如果已经存在一张机构一致的表,复制数据
insert into 表 select * from 原表;
 
注意:如果直接复制表结构,则会默认将约束也复制过来
注意:如果复制表结构的同时,复制数据,则不会复制约束

数据库字典

由information_schema数据库负责维护

tables-存放数据库里所有的数据表、以及每个表所在数据库。
schemata-存放数据库里所有的数据库信息
views-存放数据库里所有的视图信息。
columns-存放数据库里所有的列信息。
triggers-存放数据库里所有的触发器。
routines-存放数据库里所有存储过程和函数。
key_column_usage-存放数据库所有的主外键
table_constraints-存放数据库全部约束。
statistics-存放了数据表的索引。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

lxd-dashboard 图形管理LXD/LXC

前言 LXD-WEBGUI是一个完全用AngularJS编写的Web应用程序,无需应用服务器、数据库或其他后端服务支持。只需要简单地托管静态HTML和JavaScript文件,就能立即投入使用。这个项目目前处于测试阶段,提供了直观的用户界面,帮助用户便捷地管理和控制LXD实例。 安装lxd-dashboa…

[GESP202503 C++一级题解]:B4257:图书馆里的老鼠

[GESP202503 C++一级题解]:B4257:图书馆里的老鼠 题目描述 图书馆里有 n n n 本书,不幸的是,还混入了一只老鼠,老鼠每 x x x 小时能啃光一本书,假设老鼠在啃光一本书之前,不会啃另一本。请问 y y y 小时后图书馆里还剩下多少本完整的书。 输入格式 三行,第一行一…

从零构建大语言模型全栈开发指南:第二部分:模型架构设计与实现-2.2.2文本生成逻辑:Top-k采样与温度控制

👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 2.2.2 文本生成逻辑:Top-k采样与温度控制1. 文本生成的核心挑战与数学框架1.1 自回归生成的基本流程2. `Top-k`采样原理与工程实现2.1 数学定义与算法流程2.2 PyTorch实现优化3. 温度控制的数学本质与参…

Unity中实现UI的质感和圆角

质感思路有两种: 一种是玻璃质感的做法,抓取UI后面的图像做模糊(build是GrabPass,urp抓图像我有写过在往期文章),这个方式网络上有很多就不写了; 另外一种是使用CubeMap的方式去模拟质感&…

[异步监听事件、异步绑定属性]通过vue的this.$refs.组件.$props和.$on实现异步绑定组件属性和事件监听

child.vue <template><div><el-button type"primary" click.stop"$emit(get, data)">点击传参</el-button></div> </template> <script> export default { name: "child", props: ["data"…

第六届 蓝桥杯 嵌入式 省赛

参考 第六届蓝桥杯嵌入式省赛程序设计题解析&#xff08;基于HAL库&#xff09;_蓝桥杯嵌入式第六届真题-CSDN博客 一、分析功能 RTC 定时 1&#xff09;时间初始化 2&#xff09;定时上报电压时间 ADC测量 采集电位器的输出电压信号。 串行功能 1&#xff09;传送要设置…

为什么要将项目部署到外部tomcat

一、是什么 指将你的Java Web应用程序&#xff08;如WAR包&#xff09;安装并运行在一个独立安装的、位于项目外部的Tomcat服务器上&#xff0c;而不是使用内嵌的或开发环境自带的服务器。 外部Tomcat 指独立安装的Tomcat服务器&#xff08;如从Apache官网下载的Tomcat&#…

企业级全栈开发终极指南:Spring Boot+Vue3+Kubernetes实战,从0到上线高并发系统

简介 本文以电商系统为例,完整呈现从需求分析到上线运维的企业级开发全流程。包含12个关键步骤、30+代码示例、5个架构设计图,以及完整的Docker/Kubernetes部署方案。所有代码均符合企业级规范,可直接用于生产环境。 企业级开发的终极挑战 行业痛点: 90%的开发者在企业级…

蓝桥杯嵌入式赛道复习笔记8(eeprom读写)

原理学习 自己看一下江科大的存储器的读取&#xff0c;原理是一样的。只是使用了IIC原理是不变的 代码 cubeMX的配置 代码 eeprom层代码的书写 #include "eeprom_display.h" uint8_t data; uint8_t eeprom_read(uint8_t addr){I2CStart();I2CSendByte(0xa0);I2…

IP数据报报文格式

一 概述 IP数据报由两部分组成&#xff1a;首部数据部分。首部的前一部分是固定长度&#xff0c;一共20字节大小&#xff0c;是所有IP数据报文必须具有的&#xff1b;固定部分后面是一些可选字段&#xff0c;其长度是可变的。 二 首部固定部分各字段意义 &#xff08;1&…

高光谱工业相机+LED光源系统助力材料分类和异物检测、实现高速在线检测

检测光源包括可见光&#xff0c;如红光、蓝光和绿光以及其他波长的光&#xff0c;如紫外和红外波长&#xff0c;可以选择与检测对象物相应的波长。但由于能够照射的波长较窄&#xff0c;例如受到同色异物混入或多个素材的材质分类等&#xff0c;可能需要使用可照射多种波长的光…

如何快速解决django存储session变量时出现的django.db.utils.DatabaseError错误

我们在学习django进行web编程的时候&#xff0c;有时需要将一些全局变量信息存储在session中&#xff0c;但使用过程中&#xff0c;却发现会引起数据库的报错。通过查看django源码信息&#xff0c;发现其对session信息进行了ORM映射&#xff0c;如果数据库中不存在对应的表信息…

kubeadm部署k8s-1.32版本集群(1个master,1个worker)

使用最新版的kubeadm部署一个最小版的k8s集群&#xff0c;只有一个master和1个worker&#xff0c;这种部署方式&#xff0c;不满足高可用&#xff0c;仅限于本地学习使用&#xff0c;不可以放到生产上用&#xff0c;先看一下文章的目录。 文章目录 1、基本信息1.1、服务器基本…

阀门流量控制系统MATLAB仿真PID

以下是一个基于MATLAB的PID控制仿真程序&#xff0c;用于模拟智能阀门流量控制系统。该程序包含系统模型、PID控制器以及饱和限制处理。 % 石油管道流量PID控制仿真 % 系统参数 valve_min 4; % 阀门最小电流 (mA) valve_max 25; % 阀门最大电流 (mA) max_flow 10…

UE4学习笔记 FPS游戏制作30 显示击杀信息 水平框 UI模板(预制体)

文章目录 一制作单条死亡信息框水平框的使用创建一个水平框添加子元素调整子元素顺序子元素的布局插槽尺寸填充对齐 制作UI 根据队伍&#xff0c;设置文本的名字和颜色声明变量 将变量设置为构造参数根据队伍&#xff0c;设置文本的名字和颜色在构造事件中&#xff0c;获取玩家…

机器学习——LightGBM

LightGBM(light gradient boosting machine&#xff0c;轻量梯度提升机)是对XGBoost进行改进的模型版本&#xff0c;其三者之间的演变关系为&#xff1a;GBDT-》XGBoost-》LightGBM&#xff0c;依次对性能进行优化&#xff0c;尽管XGBoost已经很高效了&#xff0c;但是仍然有缺…

什么是SQL作业

SQL作业是在数据库服务器上按特定时间或间隔自动执行的计划任务或流程&#xff0c;这些作业由Microsoft SQL Server中的SQL Server代理管理&#xff0c;对于自动执行日常任务&#xff08;如数据库系统中的备份、数据导入和报告生成&#xff09;以及确保及时准确地处理和更新数据…

小程序内表格合并功能实现—行合并

功能介绍&#xff1a;支付宝小程序手写表格实现行内合并&#xff0c;依据动态数据自动计算每次需求合并的值&#xff0c;本次记录行内合并&#xff0c;如果列内合并&#xff0c;同理即可实现 前端技术&#xff1a;grid布局 display&#xff1a;grid 先看实现效果: axml&…

CD19.【C++ Dev】类和对象(10) 日期类对象的成员函数(日期+天数)

目录 日期天数 需要考虑的几个问题 1.天数加在日上,有可能会溢出,需要进位 2.对月进位,也有可能导致月会溢出,需要进位 3.对年进位,需要考虑是否为闰年 代码设计 取得指定月的天数GetMonthDay函数 方法1:if判断或switch/case 方法2:查表 版本1 版本2 operator 初始…

从零构建大语言模型全栈开发指南:第二部分:模型架构设计与实现-2.2.3实战案例:在笔记本电脑上运行轻量级LLM

👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 实战案例:在笔记本电脑上运行轻量级LLM2.2.3 模型架构设计与实现1. 环境与工具准备1.1 硬件要求1.2 软件栈选择2. 轻量级模型架构设计2.1 模型参数配置2.2 关键技术优化3. 实战流程3.1 数据准备流程3.2…