复习MySQL20250327

第一章  基本操作

一、管理数据库

难点:创建数据库

输入cmd的MySQL安装路径C:\Program Files\MySQL\MySQL Server 8.0\bin 

1.查看所有数据库
show databases;
2.创建数据库
create database hsusers default charset utf8 collate utf8_general_ci;create database:这是一个 SQL 关键字,用于指示数据库系统创建一个新的数据库。hsusers:这是要创建的数据库的名称。在实际使用时,你可以依据自身需求将其替换为合适的名称。default charset utf8:指定了该数据库默认的字符集为 utf8。字符集定义了数据库存储和处理文本时所采用的字符编码方式。utf8 能够支持多种语言的字符,是一种广泛使用的字符编码。collate utf8_general_ci:指定了该数据库默认的排序规则为 utf8_general_ci。排序规则决定了在进行字符串比较和排序时的规则。utf8_general_ci 中的 ci 表示大小写不敏感(Case - Insensitive),即数据库在比较字符串时不会区分大小写。
3.删除数据库
drop database day1db;
4.进入数据库
use day1db;
5.查看数据库中的表
show tables;
create database hsusers default charset utf8 collate utf8_general_ci;

二、管理数据表

难点:创建数据表

(一)创建表

在 MySQL 里,你可以使用 CREATE TABLE 语句来创建表。下面为你详细介绍其基本语法、示例以及不同参数的作用。

基本语法

sql

CREATE TABLE table_name (column1 datatype [optional_constraints],column2 datatype [optional_constraints],...[table_constraints]
);
语法解释
  • CREATE TABLE:这是用于创建表的关键字。
  • table_name:要创建的表的名称,需保证在数据库中该名称是唯一的。
  • column1, column2, ...:表中的列名,每个列都有对应的 datatype(数据类型)。
  • datatype:指定列可以存储的数据类型,例如 INT(整数)、VARCHAR(可变长度字符串)、DATE(日期)等。
  • optional_constraints:可选择的列约束条件,像 NOT NULL(非空)、UNIQUE(唯一)、PRIMARY KEY(主键)、FOREIGN KEY(外键)等。
  • table_constraints:表级约束条件,用于定义跨列的约束,例如复合主键、唯一键组合等。
示例

以下是创建一个名为 employees 的表的示例,该表包含员工的基本信息:

sql

CREATE TABLE employees (id INT NOT NULL AUTO_INCREMENT,first_name VARCHAR(50) NOT NULL,last_name VARCHAR(50) NOT NULL,birth_date DATE,hire_date DATE,salary DECIMAL(10, 2),department_id INT,PRIMARY KEY (id),FOREIGN KEY (department_id) REFERENCES departments(id)
);
示例解释
  • id:是一个自增的整数列,作为主键,确保每个员工记录有唯一的标识符。
  • first_name 和 last_name:为可变长度字符串列,用于存储员工的名字和姓氏,且不能为空。
  • birth_date 和 hire_date:为日期列,分别存储员工的出生日期和入职日期。
  • salary:是一个十进制数,用于存储员工的工资,精度为 10 位,小数部分为 2 位。
  • department_id:是一个整数列,作为外键,引用 departments 表中的 id 列,用于关联员工所属的部门。
创建临时表

若你需要创建一个临时表(该表在会话结束时会自动删除),可以使用 CREATE TEMPORARY TABLE 语句,语法如下:

sql

CREATE TEMPORARY TABLE temp_table_name (column1 datatype [optional_constraints],column2 datatype [optional_constraints],...[table_constraints]
);

这些示例和语法应该能帮助你在 MySQL 中创建所需的表。在实际使用时,根据具体需求调整列名、数据类型和约束条件。

(二)列约束条件

在 MySQL 中,列约束条件用于限制列中存储的数据,确保数据的完整性和一致性。以下是常见的列约束条件及其含义:

1. NOT NULL
  • 含义:该约束规定列不允许存储 NULL 值。也就是说,在向该列插入数据时,必须提供一个有效的值。
  • 示例

sql

CREATE TABLE users (id INT,name VARCHAR(50) NOT NULL
);

在这个 users 表中,name 列不允许为 NULL,插入数据时必须提供一个名字。

2. UNIQUE
  • 含义:此约束保证列中的所有值都是唯一的,即同一列中不能有重复的值。
  • 示例

sql

CREATE TABLE employees (id INT,email VARCHAR(100) UNIQUE
);

在 employees 表中,email 列的每个值都必须是唯一的,不能有两个员工使用相同的电子邮件地址。

3. PRIMARY KEY
  • 含义PRIMARY KEY 约束用于唯一标识表中的每一行记录。它结合了 NOT NULL 和 UNIQUE 的特性,即主键列的值不能为 NULL 且必须唯一。一个表只能有一个主键,但主键可以由多个列组成(复合主键)。
  • 示例

sql

CREATE TABLE products (product_id INT PRIMARY KEY,product_name VARCHAR(200)
);

这里 product_id 列被定义为主键,用于唯一标识每个产品。

4. FOREIGN KEY
  • 含义FOREIGN KEY 约束用于建立表与表之间的关联。它引用另一个表的主键列,确保该列中的值必须存在于被引用表的主键列中。通过外键可以实现数据库的参照完整性。
  • 示例

sql

CREATE TABLE orders (order_id INT PRIMARY KEY,product_id INT,FOREIGN KEY (product_id) REFERENCES products(product_id)
);

在 orders 表中,product_id 列是外键,它引用了 products 表的 product_id 主键列。这意味着 orders 表中的 product_id 值必须是 products 表中已经存在的 product_id 值。

5. DEFAULT
  • 含义DEFAULT 约束为列指定一个默认值。当插入数据时,如果没有为该列提供值,则会使用默认值。
  • 示例

sql

CREATE TABLE customers (customer_id INT,status VARCHAR(20) DEFAULT 'active'
);

在 customers 表中,如果插入数据时没有为 status 列提供值,那么该列将自动使用默认值 'active'

6. CHECK
  • 含义CHECK 约束用于限制列中的值必须满足特定的条件。在 MySQL 8.0.16 及以后的版本中,CHECK 约束是强制执行的。
  • 示例

sql

CREATE TABLE students (student_id INT,age INT,CHECK (age >= 18)
);

在 students 表中,CHECK 约束确保 age 列的值必须大于或等于 18。

7. AUTO_INCREMENT
  • 含义AUTO_INCREMENT 约束用于为整数类型的列自动生成唯一的、递增的值。通常与 PRIMARY KEY 约束一起使用,用于自动生成主键值。
  • 示例

sql

CREATE TABLE users (user_id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(50)
);

在 users 表中,每次插入新记录时,user_id 列会自动生成一个比上一个记录的 user_id 值大 1 的新值。

注意:MySQL并非只有这个7个列约束条件,其他孤不常用,在此不作深入讲解。

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

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

相关文章

谷歌推出Gemini实时AI视频功能,开启智能交互新体验

3月24日,谷歌发言人亚历克斯约瑟夫向媒体证实,谷歌已开始向 Gemini Live 推出新的人工智能功能。这些功能使 Gemini 能够“看到”用户的屏幕内容,或通过智能手机摄像头获取画面,并实时回答与之相关的问题。这一创新标志着人工智能…

Windows 新型零日漏洞:远程攻击可窃取 NTLM 凭证,非官方补丁已上线

近日,安全研究人员披露了一个新型 Windows 零日漏洞,影响从Windows 7和Server 2008 R2到最新Windows 11 v24H2及Server 2025的所有Windows操作系统版本。攻击者只需诱使用户在Windows资源管理器中查看恶意文件,即可利用该零日漏洞窃取NTLM&am…

一款超级好用且开源免费的数据可视化工具——Superset

认识Superset 数字经济、数字化转型、大数据等等依旧是如今火热的领域,数据工作有一个重要的环节就是数据可视化。 看得见的数据才更有价值! 现如今依旧有多数企业号称有多少多少数据,然而如果这些数据只是呆在冷冰冰的数据库或文件内则毫无…

作业14 (2023-05-22_const修饰指针)

第1题/共5题【单选题】 C程序常见的错误分类不包含:( ) A.编译错误 B.链接错误 C.栈溢出 D.运行时错误 回答正确 答案解析: 栈溢出是运行时错误的一种,因此C程序不会将栈溢出错误单独列出来,栈溢出包含在运行时错误中。 因此:选择C 第2题/共5题【单选题】 以下关于…

《Tr0ll2 靶机渗透实战:弱口令+SUID+两种缓冲区溢出+ 提权完整+fcrackzip暴力破解+shellshock漏洞+脏牛三种root提权复盘》

Tr0ll2 1、主机发现 arp-scan -l 2、端口扫描 nmap -sS -sV 192.168.66.181 nmap -sS -A -T4 -p- 192.168.66.181 nmap --scriptvuln 192.168.66.181PORT STATE SERVICE VERSION 21/tcp open ftp vsftpd 2.0.8 or later 22/tcp open ssh OpenSSH 5.9p1 Debian 5ubuntu1.4 (…

redis常用部署架构之redis分片集群。

redis 3.x版本后开始支持 作用: 1.提升数据读写速度 2..提升可用性 分片集群就是将业务服务器产生的数据储存在不同的机器上。 redis分片集群的架构 如上图所示,会将数据分散存储到不同的服务器上,相比于之前来说,redis要处…

分布式数据库介绍

分布式数据库介绍 一、定义与核心概念 分布式数据库是一种在物理上分散存储、逻辑上统一管理的数据管理系统,其核心特征包括数据分布性、逻辑关联性、场地透明性和可扩展性。根据最新定义,分布式数据库需具备分布式事务处理能力、平滑扩展能力&#xf…

MybatisPlus(SpringBoot版)学习第五讲:条件构造器和常用接口

目录 1.wrapper介绍 2.QueryWrapper 2.1 例1:组转查询条件 Compare Nested Join Func 2.2 例2:组装排序条件 2.3 例3:组装删除条件 2.4 例4:条件的优先级 2.5 例5:组装select子句 2.6 例6:实现子查…

OkHttp 的证书设置

在 Android 开发中,通过 OkHttp 自定义 SSLSocketFactory 和 X509TrustManager 可以有效增强 HTTPS 通信的安全性,防止中间人攻击(如抓包工具 Charles/Fiddler 的拦截)。以下是实现防抓包的关键技术方案: 一、Okhttp设…

计算机视觉算法实战——手术导航:技术、应用与未来

✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ ​​​ ​​​​​​​​​ ​​ 1. 手术导航中的计算机视觉:领域介绍 计算机视觉在手术导航领域的应用代表了现代医学与人工智…

【科研绘图系列】R语言绘制PCA与变量的相关性散点图(scatter plot)

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包数据下载导入数据画图输出图片系统信息介绍 【科研绘图系列】R语言绘制PCA与变量的相关性散点图(scatter plot) 加载R包 library(tidyverse) library(ggpubr)数据下载 …

深度解析Spring Boot可执行JAR的构建与启动机制

一、Spring Boot应用打包架构演进 1.1 传统JAR包与Fat JAR对比 传统Java应用的JAR包在依赖管理上存在明显短板,依赖项需要单独配置classpath。Spring Boot创新的Fat JAR(又称Uber JAR)解决方案通过spring-boot-maven-plugin插件实现了"…

安科瑞微电网能量管理控制箱,光伏发电的守护者

安科瑞顾强 随着工业的发展,很多用电设备和工厂设备采用直流系统供电,直流系统的正极和负极不接地。对于不接地(IT)配电系统,应该进行绝缘电阻的监控以保证供电系统的安全运行。 AIM-D100-TS 系列直流绝缘监测仪可以…

[计算机网络]网络I/O模型

欢迎来到啾啾的博客🐱。 这是一个致力于构建完善的Java程序员知识体系的博客📚,记录学习的点滴,分享工作的思考、实用的技巧,偶尔也分享一些杂谈💬。 欢迎评论交流,感谢您的阅读😄。…

Vue中使用JsonView进行JSON数据展示

前言 最近在开发公司的管理系统的操作日志模块,要查看某条操作日志的请求参数,要将请求的参数以 JSON 格式的形式展示出来,于是用到了Vue-JSON-Viewer 这个插件。 一、Vue-JSON-Viewer 基础入门 插件简介 Vue-JSON-Viewer 是一个用于在Vue项…

vue vue3 走马灯Carousel

背景: 在项目中需要展示多张图片,但在页面上只有一张图片的有限位置,此时考虑使用轮播图实现多张图片的展示。element组件官网有走马灯Carousel的组件详细介绍。 实现效果: 官网链接:点击跳转 核心代码: …

重学vue3(三):vue3基本语法及使用

组合式 API是vue3 的核心特性&#xff0c;替代 Vue2 的选项式 API&#xff0c;强调逻辑复用和代码组织。基本语法如下&#xff1a; <script setup> import { ref, reactive, computed, onMounted } from vue;// 1. 响应式数据 const count ref(0); // 基本类…

Spring Boot分布式项目异常处理实战:从崩溃边缘到优雅恢复

当单体应用拆分成分布式系统&#xff0c;异常就像被打开的潘多拉魔盒&#xff1a;RPC调用超时、分布式事务雪崩、第三方接口突然罢工…在最近的电商大促中&#xff0c;我们的系统就经历了这样的至暗时刻。本文将用真实代码示例&#xff0c;展示如何构建分布式异常处理体系。 一…

导出sql命令

除了之前提到的 \G 命令&#xff0c;以下是其他优化 MySQL 查询结果显示的方法&#xff0c;供你参考&#xff1a; --- ### 1. **使用 \T 命令导出结果到文件** - 在 MySQL 命令行中&#xff0c;使用 \T 文件名 可以将查询结果以表格形式导出到指定文件&#xff0c;便于后续…

TDengine 3.3.2.0 集群报错 Post “http://buildkitsandbox:6041/rest/sql“

原因&#xff1a; 初始化时处于内网环境下&#xff0c;Post “http://buildkitsandbox:6041/rest/sql“ 无法访问 修复&#xff1a; vi /etc/hosts将buildkitsandbox映射为本机节点 外网环境下初始化时没有该问题