MySQL库表操作

开始之前分享一个数据库远程连接工具:
Navicat Premium 15
可以远程连接数据库,并且查看表的结构等,非常好用。

SQL语句基础

SQL:结构化查询语言(Structured Query Language),在关系型数据库上执行数据操作、数据检索以及数据维护的标准语言。使用SQL语句,程序员和数据库管理员可以完成如下的任务

  • 改变数据库的结构
  • 更改系统的安全设置
  • 增加用户对数据库或表的许可权限
  • 在数据库中检索需要的信息
  • 对数据库的信息进行更新

SQL语句分类

MySQL致力于支持全套ANSI/ISO SQL标准。在MySQL数据库中,SQL语句主要可以划分为以下几类
①DDL(Data Definition Language): 数据定义语言,定义对数据库对象(库、表、列、索引)的操作。
CREATE、DROP、ALTER、RENAME、 TRUNCATE等
②DML(Data Manipulation Language): 数据操作语言,定义对数据库记录的操作。
INSERT、DELETE、UPDATE等
③DCL(Data Control Language): 数据控制语言,定义对数据库、表、字段、用户的访问权限和安全级别。
​GRANT、REVOKE等
④DQL(Data Query Language): 数据查询语言 SELECT
Transaction Control:事务控制
​COMMIT、ROLLBACK、SAVEPOINT等

SQL语句的书写规范

①在数据库系统中,SQL语句不区分大小写(建议用大写) 。
②但字符串常量区分大小写。
③SQL语句可单行或多行书写,以“;”结尾。
④关键词不能跨多行或简写。
⑤用空格和缩进来提高语句的可读性。
⑥子句通常位于独立行,便于编辑,提高可读性。
SELECT * FROM tb_table
⑦注释:
SQL标准:
/**/。多行注释
“–” 单行注释
MySQL注释:
“#”

数据库操作

登录数据库

[root@localhost ~]# mysql -uroot -p
Enter password: 

1、查看

SHOW DATABASES

语法:

SHOW DATABASES [LIKE wild];

如果使用LIKE wild不符,wild字符串可以是一个使用SQL的”%”和”_”通配符的字符串。
功能: 列出在MySql服务器主机上的数据库。
在这里插入图片描述
上图四个数据库均为MySQL自带库
Information_schema: 主要存储了系统中的一些数据库对象信息:如用户表信息、列信息、权限信息、字符集信息、分区信息等。(数据字典表)。
performance_schema: 主要存储数据库服务器的性能参数
mysql: 存储了系统的用户权限信息及帮助信息。
sys:5.7新增,之前版本需要手工导入。这个库是通过视图的形式把information_schema 和 performance_schema结合起来,查询出更加令人容易理解的数据。

2、创建

CRATE DATABASE

语法:

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

功能:用给定的名字创建一个数据库,如果数据库已经存在,发生一个错误。
查看创建数据库:SHOW CREATE DATABASE <数据库名>;
示例:

 create database school DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

在这里插入图片描述
在这里插入图片描述

3、删除

DROP DATABSE

语法: DROP DATABASE [IF EXISTS]数据库名;
功能:删除数据库中得所有表和数据库
例如:

drop database school;

在这里插入图片描述
在这里插入图片描述

4、切换

使用USE选用数据库
语法: USE 数据库名;
功能: 把指定数据库作为默认(当前)数据库使用,用于后续语句。
其他:
查看当前连接的数据库

SELECT DATABASE();

查看数据库版本

SELECT VERSION();

查看当前用户

SELECT USER();

查看所有用户

SELECT User,Host,Password FROM mysql.user;

5、执行对应系统命令

SYSTEM <命令>system cls | clearsystem date 等

MySQL字符集

MySQL字符集包括字符集(CHARACTER)校对规则(COLLATION) 两个概念:
latin1支持西欧字符、希腊字符等
gbk支持中文简体字符
big5支持中文繁体字符
utf8几乎支持世界所有国家的字符。

数据库设计与对象

数据库设计的基本步骤

需求分析==>概念结构设计==>l逻辑结构设计==>物理结构设计==>数据库的实施==>数据库的运行和维护

三大范式原则

第一范式(1st NF)

第一范式的目标是确保每列的原子性
如果每列都是不可再分的最小数据单元(也成为最小的原子单元),则满足第一范式(1 NF)。
在这里插入图片描述

第二范式(2st NF)

第二范式要求每个表只描述一件事情

第三范式(3st NF)

如果一个关系满足2NF,并且除了主键以外的其他列都不传递依赖于主键列,则满足第三范式(3NF)。

E-R图

绘制E-R图三要素

符号含义
矩形实体,一般是名词
椭圆形属性,一般是名词
菱形关系,一般是动词

关系型数据库常见映射函数

根据需求而生成的实体关系图

  • 用二维表的形式表示实体和实体间联系的数据模型即关系模式
  • E-R图转换为关系模式的步骤
    • 把每个实体都转化为关系模式R(U)形式
    • 建立实体间联系的转换
  • 酒店管理系统数据库的关系模式是
    • 客房(客房号、客房描述、客房类型、客房状态、床位数、入住人数、价格)
    • 客人(客人编号,客人姓名、身份证号、入住日期、结账日期、押金、总金额、客房号)

转化E-R图为数据库模型图

  • 将各实体转换为对应的表,将各属性转换为各表对应的列
  • 标识每个表的主键列
  • 在表之间建立主外键,体现实体
    在这里插入图片描述

数据库对象

命名规则:
①必须以字母开头
②可包括数字和(# _ $ )三个特殊字符
③不要使用MySQL的保留字
④统一Schema下的对象不能同名。
在这里插入图片描述

表的基本操作

创建表

建表的语句:

CREATE TABLE [schema.]table(column datatype[DEFAULT expr] ,…) ENGINE = 存储机制CREATE TABLE
简单语法:CREATE TABLE 表名(列名 列类型,列名 列类型);
功能:在当前数据库中创建一张表

数据类型

在MySQL中有三种主要的类型:
①文本
②数字
③日期/时间类型

数据类型描述
CHAR(size)保存固定长度的字符串(可包含字母、数字以及特殊字 符)。在括号中指定字符串的长度。最多 255 个字符。
VARCHAR(size)保存可变长度的字符串(可包含字母、数字以及特殊字 符)。在括号中指定字符串的最大长度。最多 255 个字 符。 注释:如果值的长度大于 255,则被转换为 TEXT 类型。
TINYTEXT存放最大长度为 255 个字符的字符串。
TEXT存放最大长度为 65,535 个字符的字符串。
BLOB用于 BLOBs (Binary Large OBjects)。存放最多 65,535 字节的数据。
MEDIUMTEXT存放最大长度为 16,777,215 个字符的字符串。
MEDIUMBLOB用于 BLOBs (Binary Large OBjects)。存放最多 16,777,215 字节的数据。
LONGTEXT存放最大长度为 4,294,967,295 个字符的字符串。
LONGBLOB用于 BLOBs (Binary Large OBjects)。存放最多 4,294,967,295 字节的数据。
ENUM(x,y,z,etc.)允许你输入可能值的列表。可以在 ENUM 列表中列出最大 65535 个值。如果列表中不存在插入的值,则插入空值。 注释:这些值是按照你输入的顺序存储的。 可以按照此格式输入可能的值: ENUM(‘X’,‘Y’,‘Z’)
SET与 ENUM 类似, SET 最多只能包含 64 个列表项,不过 SET 可存储一个以上的值。

Number 类型:

数据类型描述
TINYINT(size)-128 到 127 常规。 0 到 255 无符号*。在括号中规定最 大位数。
SMALLINT(size)-32768 到 32767 常规。 0 到 65535 无符号*。在括号中 规定最大位数。
MEDIUMINT(size)-8388608 到 8388607 普通。 0 to 16777215 无符号*。在 括号中规定最大位数。
INT(size)-2147483648 到 2147483647 常规。 0 到 4294967295 无 符号*。在括号中规定最大位数。
BIGINT(size)-9223372036854775808 到 9223372036854775807 常规。 0 到18446744073709551615 无符号*。在括号中规定最大位 数。
FLOAT(size,d)带有浮动小数点的小数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。
DOUBLE(size,d)带有浮动小数点的大数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。
DECIMAL(size,d)作为字符串存储的 DOUBLE 类型,允许固定的小数点。

Date 类型:

数据类型描述
DATE()日期。格式: YYYY-MM-DD 注释:支持的范围是从 ‘1000-01-01’ 到 ‘9999-12-31’
DATETIME()日期和时间的组合。格式: YYYY-MM-DD HH:MM:SS 注释:支持的范围是’1000-01-01 00:00:00’ 到 ‘9999-12- 31 23:59:59’
TIMESTAMP()时间戳。 TIMESTAMP 值使用 Unix 纪元(‘1970-01-01 00:00:00’ UTC) 至今的描述来存储。格式: YYYY-MM-DD HH:MM:SS
注释:支持的范围是从 ‘1970-01-01 00:00:01’ UTC 到 ‘2038-01-09 03:14:07’ UTC
TIME()时间。格式: HH:MM:SS 注释:支持的范围是从 ‘-838:59:59’ 到 ‘838:59:59’
YEAR()2 位或 4 位格式的年。
注释: 4 位格式所允许的值: 1901 到 2155。 2 位格式所允许 的值: 70 到69,表示从 1970 到 2069

查看表

SHOW 语句
语法:

SHOW TABLES[FROM 数据库名][LIKE wild];

功能:
显示当前数据库中已有的数据表的信息(结构和创建信息)。

DESCRIBE
语法:

{DESCRIBE|DESC}表名[列名];
# or
show columns from 表名称;

功能:
查看数据表中各列的信息。

删除表

DROP语句
语法:

DROP TABLE [IF EXISTS] 表名;

功能:
删除指定表

修改表的结构

修改列类型:

 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-存放了数据表的索引。

表的约束

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

NOT NULL 非空
UNIQUE KEY 唯一键
PRIMARY KEY 主键
FOREIGN KEY 外键
CHECK 检查默认值约束

约束作为数据库对象,存放在系统表中,也有自己的名字。

创建约束的时机
①在建表的同时创建
②建表后创建(修改表)

可定义列级或表级约束
有单列约束和多列约束

列级约束: 在定义列的同时定义约束
语法: 列定义 约束类型,

表级约束: 在定义了所有列之后定义的约束
语法:
列定义
[CONSTRAINT 约束名] 约束类型(列名)

约束名的取名规则
推荐采用: 表名_列名_约束类型简介

创建完后再添加约束:
语法:

ALTER TABLE 表名 ADD CONSTRAINT 约束名 约束类型(要约束的列名)

表的约束市例

1、非空约束(NOT NULL)

CREATE TABLE tb_student(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(18) NOT NULL
);

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

CREATE TABLE tb_student(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(18) UNOQUE NOT NULL
);

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

CREATE TABLE tb_student(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(18)
);

4、外键约束
外键是构建于一个表的两个字段或者两个表的两个字段之间的关系。

外键确保了相关的两个字段的两个关系:
子(从) 表外键列的值必须在主表参照列值的范围内,或者为空(也可以加非空约束,强制不允许为空)。
当主表的记录被子表参照时,主表记录不允许被删除
外键参照的只能是主表主键或者唯一键,保证子表记录可以准确定位到被参照的记录。
格式

FOREIGN KEY (外键列名) REFERENCES 主表(参照列)
CREATE TABLE tb_dept(
dept_id INT PRIMARY KEY,
NAME VARCHAR(18),
decription VARCHAR(255)
);CREATE TABLE tb_employee(
employee_id INT PRIMARY KEY,
NAME VARCHAR(18),
gender VARCHAR(10),
dept_id INT REFERENCES tb_dept(dept_id),
address VARCHAR(255)
);

5、检查约束

 create table t3(id int, age int check(age > 18),gender char(1) check(gender in ('M','F'))
);

6、默认值
可以使用default关键字设置每一个字段的默认值。

CREATE TABLE `test`.`user`(  `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'id',`name` VARCHAR(225) COMMENT '姓名',`sex` TINYINT(1) DEFAULT 1 COMMENT '性别 1男 0女',PRIMARY KEY (`id`)
) ENGINE=INNODB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci

删除表的约束

1、删除NOT NULL约束

ALTER TABLE 表名 MODIFY 列名 类型;

2、删除UNIQUE约束

ALTER TABLE 表名 DROP INDEX 唯一约束名;

3、删除PRIMARY KEY约束

ALTER TABLE 表名 DROP PRIMARY KEY;

4、删除FOREIGN KEY约束

ALTER TABLE 表名 DROP FOREIGN KEY 外键名;

自动增长和默认值

为新的行产生唯一的标识。
一个表只能优一个auto_increment,且该属性必须为主键的一部分。auto_increment的属性可以是任何整数类型。

AUTO_INCREMENT:自动增长
DEFAULT:默认值

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

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

相关文章

景联文数据标注:AI大模型产生幻觉该如何应对?

大语言模型在诸多下游任务中展现出令人瞩目的能力&#xff0c;然而在运用过程中仍然存在一些问题。幻觉现象是目前阻碍大模型成功应用的关键问题之一。 什么是大模型幻觉问题&#xff1f; 大模型幻觉问题是指一些人工智能模型在面对某些输入时&#xff0c;会生成不准确、不完整…

Visual Studio Cpp CLR C# 替换

1、首先将文件中所有都替换 你需要的名字 替换为整个解决方案 2、新建工程取名 Laserbeam_upper 3、把原工程下的cpp放进来&#xff0c;并改名Laserbeam_upper 4、在这里逐步添加 属性表配置opencv 5、cpp需要修改的两个地方 6、CLR新建和添加 选类库新建、然后直接粘贴进来…

阿里云七代云服务器实例、倚天云服务器及通用算力型和经济型实例规格介绍

在目前阿里云的云服务器产品中&#xff0c;既有五代六代实例规格&#xff0c;也有七代和八代倚天云服务器&#xff0c;同时还有通用算力型及经济型这些刚推出不久的新品云服务器实例&#xff0c;其中第五代实例规格目前不在是主推的实例规格了&#xff0c;现在主售的实例规格是…

php实现分页功能跳转和ajax方式实现

实现效果 准备工作 创建数据表和导入测试数据 CREATE TABLE users ( id int(10) unsigned NOT NULL AUTO_INCREMENT, username varchar(30) DEFAULT NULL COMMENT 账号, email varchar(30) DEFAULT NULL COMMENT 密码, PRIMARY KEY (id) ) ENGINEMyISAM AUTO_INCREM…

【OpenSSL】OpenSSL实现Base64

Base 64概述和应用场景 概述 Base64就是将二进制数据转换为字符串的一种算法。 应用场景 邮件编码xml或则json存储二进制内容网页传递数据URL数据库中以文本形式存放二进制数据可打印的比特币钱包地址base58Check(hash校验)网页上可以将图片直接使用Base64表达公私密钥的文…

计算机竞赛 深度学习交通车辆流量分析 - 目标检测与跟踪 - python opencv

文章目录 0 前言1 课题背景2 实现效果3 DeepSORT车辆跟踪3.1 Deep SORT多目标跟踪算法3.2 算法流程 4 YOLOV5算法4.1 网络架构图4.2 输入端4.3 基准网络4.4 Neck网络4.5 Head输出层 5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; *…

【Vue.js】使用Element搭建首页导航左侧菜单

一&#xff0c;Mock.js 1.1 认识Mock.js Mock.js是一个用于前端开发中生成随机数据、模拟接口响应的 JavaScript 库。模拟数据的生成器&#xff0c;用来帮助前端调试开发、进行前后端的原型分离以及用来提高自动化测试效率 总结来说&#xff0c;Element中的Mock.js是一个用于…

怎样快速打开github.com

1访问这个网站很慢是因为有DNS污染&#xff0c;被一些别有用心的人搞了鬼了&#xff0c; 2还有一个重要原因是不同的DNS服务器解析的速度不一样。 1 建议设置dns地址为114.114.114.114.我觉得假设一个县城如果有一个DNS服务器的话&#xff0c;这个服务器很可能不会存储…

[论文笔记]P-tuning v2

引言 今天带来第五篇大模型微调论文笔记P-tuning v2: Prompt Tuning Can Be Comparable to Fine-tuning Across Scales and Tasks。 作者首先指出了prompt tuning的一些不足,比如在中等规模的模型上NLU任务表现不好,还不能处理困难的序列标记任务,缺乏统一应用的能力。 然…

【Spring Boot】实战:实现Session共享

🌿欢迎来到@衍生星球的CSDN博文🌿 🍁本文主要学习实现Session共享 🍁 🌱我是衍生星球,一个从事集成开发的打工人🌱 ⭐️喜欢的朋友可以关注一下🫰🫰🫰,下次更新不迷路⭐️💠作为一名热衷于分享知识的程序员,我乐于在CSDN上与广大开发者交流学习。 💠我…

wepack打包生产环境使用http-proxy-middleware做api代理转发的方法

首先安装http-proxy-middleware依赖&#xff0c;这个用npm和yarn安装都可以。 然后在express服务器的代码增加如下内容&#xff1a; const express require("express"); const app express(); const { createProxyMiddleware, fixRequestBody, } require("h…

华为云Stack的学习(八)

九、华为云Stack网络服务介绍 1.网络服务概览 1.1 租户界面的网络服务 租户登入ManageOne运营面后&#xff0c;可在服务列表中查看到网络服务。用户使用网络服务前管理员需要在Service OM上提前创建好外部网络。 1.2 华为云Stack网络服务全景图 1.3 网络服务承载网元 2.虚拟…

Tuxera NTFS 2022 for Mac破解版百度网盘免费下载安装激活教程

Mac打不开移动硬盘”有多种原因&#xff0c;解决办法也不尽相同。它可能是安装的NTFS for Mac读写软件版本和当前macOS系统的兼容问题、或者是Mac没有正常连接硬盘等等。本篇文章就将为您罗列出导致“Mac打不开移动硬盘”的原因和解决办法。 为此不得不使用著名的Tuxera NTFS …

最快的包管理器--pnpm创建vue项目完整步骤

1.用npm全局安装pnpm npm install -g pnpm 2.在要创建vue项目的包下进入cmd&#xff0c;输入&#xff1a; pnpm create vue 3.输入项目名字&#xff0c;选择Router,Pinia,ESLint,Prettier之后点确定 4.cd到创建好的项目 &#xff0c;安装依赖 cd .\刚创建好的项目名称\ p…

云原生Kubernetes:K8S配置资源管理

目录 一、理论 1.Secret 2.Secret创建 3.Secret使用 4.Configmap 5.Configmap创建 6.Configmap使用 二、实验 1.Secret创建 2.Secret使用 3.Configmap创建 4.Configmap使用 三、问题 1.变量引用生成资源报错 2.查看pod日志失败 3.创建configmap报错 4.YAML创建…

网络编程-UDP协议(发送数据和接收数据)

需要了解TCP协议的&#xff0c;可以看往期文章 https://blog.csdn.net/weixin_43860634/article/details/133274701 TCP/IP参考模型 通过此图&#xff0c;可以了解UDP所在哪一层级中 代码案例 发送数据 package com.hidata.devops.paas.udp;import java.io.IOException; …

ElementUI之登陆+注册->饿了吗完成用户登录界面搭建,axios之get请求,axios之post请求,跨域,注册界面

饿了吗完成用户注册登录界面搭建axios之get请求axios之post请求跨域注册界面 1.饿了吗完成用户注册登录界面搭建 将端口号8080改为8081 导入依赖&#xff0c;在项目根目录使用命令npm install element-ui -S&#xff0c;添加Element-UI模块 -g&#xff1a;将依赖下载node_glod…

配置OSPFv3引入外部路由及路由过滤 华为实验

1.1 实验介绍 1.1.1 关于本实验 在大型园区网络中&#xff0c;往往使用不同的路由协议进行组网&#xff0c;实现全网的网络互通。不同的协议间通信&#xff0c;除了路由协议本身&#xff0c;还需要引入外部路由及路由信息过滤等技术。 本章内容主要介绍OSPFv3路由过滤及引入外…

win使用git(保姆级教程)

序言 上学期间用的git并不多&#xff0c;但是从研三实习以及后面工作来看&#xff0c;git是一项必备技能&#xff0c;所以在此来学习一下。 下载git安装包 打开网站&#xff0c;根据需求来下载&#xff1b;一般按照如下方式进行下载&#xff1a; 然后安装的时候记得按下图勾…

论文笔记:ViTGAN: Training GANs with Vision Transformers

2021 1 intro 论文研究的问题是&#xff1a;ViT是否可以在不使用卷积或池化的情况下完成图像生成任务 即不用CNN&#xff0c;而使用ViT来完成图像生成任务将ViT架构集成到GAN中&#xff0c;发现现有的GAN正则化方法与self-attention机制的交互很差&#xff0c;导致训练过程中…