3. MySQL - 数据类型 选项约束

news2024/12/27 10:46:37

目录

回顾

1. 命令行下的 MySql 客户端

2. 图形化界面的 MySQL-Client

3. 数据库概述

3.1 数据库管理系统是什么

3.2 工作模式

3.3 RDBMS 管理数据的结构

3.4 客户端连接服务器的信息

4. MySQL 中的数据类型

4.1 整型类型

4.2 字符串

4.3 日期/时间

5. MySQL 每个字段的选项约束

6. 练习:将我们做过的题目记录到数据库中


回顾

上一篇博客中,我们具体包括以下内容:

  1. 安装 mysql-server,通过 Ubuntu 的包管理工具 apt,自动启动了 MySQL

    apt list sudo apt install <包名>
  2. 检查 MySQL-Server 进程(/usr/sbin/mysqld)是否启动成功

    ps aux | grep mysqld #进程
    
    
    sudo netstat -nlpt | grep 3306 #端口
    1. 查看对应的进程是否存在

    2. MySQL-Server 进程应该监听 TCP 3306 端口,查看端口监听情况

  3. 通过 MySQL-Client (/usr/sbin/mysql) 建立和 MySQL-Server 的连接(via 3306 端口)

在 Unix(Linux) OS中,习惯于把服务器(Server:提供 服务(Service)的进程) 进程叫做 xxxd。d 是 daemon(守护精灵):表示这类进程都是看不到的,默默在背后工作。

通过 MySQL-Client 要连接 MySQL-Server 是通过网络连接的,所以需要知道如下信息:

1.MySQL-Server 进程工作在网络中的哪台主机(host)上?

通过域名(domain)或者 ip 地址。 其中 127.0.0.1 是一个特殊的 ip 地址,代表本机。对应的域名 localhost。

2.MySQL-Server 进程是这台主机上的哪个进程

通过端口(3306 MySQL 服务器进程的默认端口)

  • 当主机是 127.0.0.1、端口是 3306 时,可以省略

  • 授权信息:mysql 的用户名,mysql 的密码

  • 所以从默认的配置文件中 (/etc/mysql/debian.conf)下获取用户名和密码

    sudo cat /etc/mysql/debian.cnf 

连接数据库

mysql -h127.0.0.1 -P3306 -u<用户名> -p

接下来,我们开始学习 MySQL 的相关知识。 

1. 命令行下的 MySql 客户端

-- 这个是注释

-- 创建一个库(schema)名叫 learn,默认字符集 utf8mb4
create database learn charset utf8mb4;

-- 切换自己的工作环境为 learn 库,俗称把 learn 设成默认库
use learn;

-- 创建一张学生表(students),列
-- 学号(sn)整型 int   primary key(pk) 主键
-- 姓名(name)字符串 varchar(20) 字符串最长 20 个字
-- 入学时间(entried_at) datetime   年-月-日 时:分:秒
create table students (
    sn int primary key,
    name varchar(20),
    entried_at datetime
);

-- 在这张表中插入一些数据,注意:数据必须整行的形式存在
insert into students (sn, name, entried_at)
    values (101, '张三', '2021-09-01 18:32:18');
    
-- 查看表中的数据
select * from students;

2. 图形化界面的 MySQL-Client

  • 需要在云服务器(Web控制台)上开启 3306 的访问权限;
  • Mysql-server 默认不允许从非本地连接。

以上两点都是为了保证数据的安全,数据库的数据一旦泄露后果不堪设想。 如果默尔曼采用直接连接的方式连接数据库十分的麻烦且不安全。因此,我们采用SSH 隧道(Tunnel)的方式,具体流程如下图所示。

接下来我们就需要使用 WindTerm 的隧道功能了。

 

3. 数据库概述

3.1 数据库管理系统是什么

Database Manage System(DBMS)是一类数据库管理系统软件。

其中目前主流的是关系型数据库管理系统 Relational Database Manage System RDBMS。

知名的产品有 MySQL、Oracle、Postgres、Sqlite 等。

通常将数据存储在二级存储(硬盘)上 —— 断电后数据仍然保留。

内部实现中,通过一个 schema(database) 是一个文件夹,每个 table 是该文件夹下的几个文件。

3.2 工作模式

客户端-服务器模型 

3.3 RDBMS 管理数据的结构

RDBMS -> Database/Schema -> Table -> Row -> Column/Field

3.4 客户端连接服务器的信息

主机(host)、端口(port)、用户名(user)、密码(password)、默认库

4. MySQL 中的数据类型

4.1 整型类型

int (32位)/ smallint (16位)/ bigint(64位)

4.2 字符串

  • char(10) 定长字符串
  • varchar(10) 变长字符串 variable(变量/变化的)

10:最多存 10 个字(不区分英文/中文)

text / longtext  --- blob / longblob (存放视频数据和音频数据  Binary Large Object)

SQL 中,不区分单引号、双引号

4.3 日期/时间

  • date 年月日  '2023-04-20'
  • time 时分秒  '21:02:38'
  • datetime  年月日 + 时分秒  '2023-04-20 21:02:38'

5. MySQL 每个字段的选项约束

  • PK Primary Key 勾选之后,代表这列是主键
  • NNNot Null 勾选之后,此列不允许填入 Null null NuLL
  • UQ Unique(唯一的) 勾选之后,此列的数据不能重复
  • AI Auto Incremental 只能配合 Int + PK 使用,填入之后,此列的值自动加 1

建库的原则:

一定要选择字符集编码为 utf8mb4

建表的通常原则:

  1. 必须有一个列,这个列的名称叫做 users uid,作为主键存在,并且选择 NN、AI

  2. 如果没有意外情况,各个列都把 NN 勾选上

6. 练习:将我们做过的题目记录到数据库中

oj_records

0) oj_id int pk ai

1)题目来源(牛客 or leetcode) source varchar(10) NN 可以重复

2)题目链接 link varchar(200) NN 不重复

3)题目 question varchar(100) NN 不重复

4)难度 difficulty varchar(10) Null

5)是否通过 passed int NN

6)上次通过时间 last_passed_at datetime Null

CREATE TABLE `learn`.`oj_records` (
  `oj_id` INT NOT NULL AUTO_INCREMENT,
  `source` VARCHAR(10) NOT NULL,
  `link` VARCHAR(200) NOT NULL,
  `question` VARCHAR(100) NOT NULL,
  `difficulty` VARCHAR(10) NULL,
  `passed` INT NOT NULL DEFAULT 0 COMMENT '1: 通过\n0: 未通过',
  `last_passed_at` DATETIME NULL,
  PRIMARY KEY (`oj_id`),
  UNIQUE INDEX `link_UNIQUE` (`link` ASC) VISIBLE,
  UNIQUE INDEX `question_UNIQUE` (`question` ASC) VISIBLE)
COMMENT = 'OJ 刷题记录';

 

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

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

相关文章

【Ubuntu18.04 解决蓝牙wifi 之ax201无线网卡驱动安装】

【Ubuntu18.04 解决蓝牙wifi 之ax201无线网卡驱动安装】 1. 前言2. 更新linux内核 3. 下载安装intel ax201网卡驱动 1. 前言 台式机安装了双系统win11Ubuntu18.04系统&#xff0c;发现没有无线网卡和蓝牙&#xff0c;经查阅资料发现由于网卡刚没多久&#xff0c;Ubuntu没有集成…

服务器反向代理

反向代理作用 隐藏服务器信息 -> 保证内网的安全&#xff0c;通常将反向代理作为公网访问地址&#xff0c;web服务器是内网&#xff0c;即通过nginx配置外网访问web服务器内网 举例 百度的网址是&#xff1a;http://www.baidu.com &#xff0c; 现在我通过自己的服务器地…

Figma源文件导出技巧:提升效率的简易步骤

因为Figma&#xff0c;sketch,xd都支持导入sketch格式,所以我们只要将文件格式转成sketch&#xff0c;就能自由的在不同软件间导入导出。 现在就有一个网站可以帮助你快速简单的导入Figma、Sketch、XD 等格式文件&#xff0c;&#xff0c;还可以导出 Sketch 文件满足跨工具协作…

Nacos 服务注册和配置中心

文章目录 1 应用1.1 依赖1.2 配置文件 2 Nacos发现实例模型3 注册中心对比4 Nacos 支持AP和CP模式的切换4.1 何时选择何种模式&#xff1f; 5 Nacos 服务配置10.5.1 SpringCloud原生注解RefreshScope5.2 配置5.3 分类设计思想 6 Nacos 集群是持久化配置6.1 Nacos支持三种部署模…

Redis实战案例16-redisson的快速入门

1. 可能存在的问题 不可重入&#xff1a;基于SETNX实现的简单分布式锁通常不支持可重入性&#xff0c;即同一个客户端在获取锁后不能再次获取锁&#xff0c;否则会导致死锁。不可重试&#xff1a;如果多个客户端同时尝试获取锁但都失败了&#xff0c;并且没有重试机制&#xff…

基于RWKV-Runner大语言模型系统

RWKV Runner 旨在消除大语言模型的使用门槛,全自动处理AI对话,并且提供了OpenAI API兼容的接口。使用起来简单方便,但是还是比较吃机器,显存2G到32G都可以使用,根据自己的模型选择即可。 总结起来: 使用起来方便简单,上手容易。需要有电脑基础,很多地方还不是傻瓜化。需…

LayUI框架——选项卡等element组件使用

目录 前言 一、element组件 1. element基础方法 2. 更新渲染 二、动态实现选项卡 要求 1. 优化dao类 2. 优化前端JSP页面 3. 引入头部hand.jsp页面 4. 优化后台主界面js 5. 运行效果图 前言 在项目中我们需要编写许多页面&#xff0c;在页面中有许多元素需要自动去完…

【Unity编辑器扩展】字库裁剪工具, 优化字体文件大小,批量修改文本组件字体

原理&#xff1a; 1. 扫描项目中用到的字符集&#xff1b; 2. 把字体文件裁剪掉没用到的字符&#xff0c;仅保留项目中用到的字符&#xff1b; 3. 生成裁剪后的字体文件&#xff1b; 工具功能设计&#xff1a; 1. 支持通过拖拽字体文件或文件夹批量选择需要裁剪的字体文件。…

网络安全设备Bypass功能介绍及分析

网络安全平台厂商往往需要用到一项比较特殊的技术&#xff0c;那就是Bypass&#xff0c;那么到底什么是Bypass呢&#xff0c;Bypass设备又是如何来实现的&#xff1f;下面我就对Bypass技术做一下简单的介绍和说明。 一、 什么是Bypass。 大家知道&#xff0c;网络安全设备一般…

mac安装Golang开发环境及入门

目录 一、Mac brew 安装go环境 1.1 安装步骤 1.2 设置GOPATH 及环境变量 1.3 编写第一个go程序 二、快速入门 1.1 快速入门需求 1.2 go学习&#xff08;自用&#xff09; 一、Mac brew 安装go环境 1.1 安装步骤 1&#xff09;终端输入&#xff0c;也可以指定下载go版本…

SPSSAU方差分析+python

准备数据 将数据格式调整为以下格式&#xff1a; jupyter处理过程 #读取数据 import numpy as np import pandas as pd# 创建一个空的DataFrame t1 pd.DataFrame() t2 pd.DataFrame() t3 pd.DataFrame() T1pd.read_excel(./数据/抑郁_T1.xlsx)T1.columnsT1.iloc[0] T1T1…

模板类与继承

模板类与继承 模板类继承普通类普通类继承模板类的实例化版本。普通类继承模板类模板类继承模板类模板类继承模板参数给出的基类 模板类继承普通类 基类 派生类 测试函数; 普通类继承模板类的实例化版本。 模板基类 普通类继承模板基类的实例化版本&#xff1a; 普通…

PROFINET转DeviceNet网关devicenet通讯模块

远创智控YC-DNT-PN这款神器&#xff0c;连接PROFINET和DeviceNet网络&#xff0c;让两边数据轻松传输。 这个网关不仅从ETHERNET/IP和DEVICENET一侧读写数据&#xff0c;还可以将缓冲区数据交换&#xff0c;这样就可以在两个网络之间愉快地传递数据了&#xff01;而且&#xff…

云计算的学习(三)

三、云计算中的网络基础知识 3.1虚拟化中网络的架构 a.虚拟化中网络的架构 二层交换机作为接入交换机使用&#xff0c;三层交换机可以作为汇聚交换机或核心交换机&#xff0c;在抛开网络安全设备时&#xff0c;路由器直接连接在互联网上。 b.广播和单播 物理服务器内部主要…

【单片机】MSP430单片机,msp430f5529,DHT11 温湿度检测仪,上限报警,单击双击判定,OLED

文章目录 功能接线示意图效果图原理 功能 硬件 IIC OLED 0.96寸 无源蜂鸣器 低电平触发 DHT11 温湿度传感器 板子上的2个按键 板子上的2个灯 功能&#xff1a; 1 显示温湿度 2 按键单击双击识别 3 按键修改温湿度&#xff0c;双击选择某一个设置项目&#xff0c;单击进行加或…

Python(五):print函数详解

❤️ 专栏简介&#xff1a;本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中&#xff0c;我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 &#xff1a;本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…

Redis 高频面试题 2023 最新版

Redis 高频面试题 2023 最新版 文章目录 Redis 高频面试题 2023 最新版一、Redis缓存相关1. 什么是缓存穿透&#xff1f;如何解决2. 什么是缓存击穿&#xff1f;如何解决 一、Redis缓存相关 1. 什么是缓存穿透&#xff1f;如何解决 是什么 缓存穿透就是根据某条件查询一个数据…

C++STL:顺序容器之forward_list

文章目录 1. 概述2. 成员函数和使用forward_list容器相关的函数 3. forward_list 容器的创建 1. 概述 forward_list 是 C 11 新添加的一类容器&#xff0c;其底层实现和 list 容器一样&#xff0c;采用的也是链表结构&#xff0c;只不过 forward_list 使用的是单链表&#xff…

解决ubuntu cuda版本nvcc -V和nvidia-smi不一致问题

在使用nvcc -V和nvidia-smi查看cuda版本时不一致&#xff1a; nvcc -V版本是10.1 nvidia-smi的版本是12.2 上面如果能显示版本&#xff0c;所以是已经有驱动&#xff0c;首先要删除之前的驱动&#xff1a; 1、执行以下命令&#xff0c;删除旧版本的驱动 sudo apt-get purge …