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

目录

回顾

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.hqwc.cn/news/19977.html

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

相关文章

阿里云容蓓:DCDN 助力云原生时代的应用构建及最佳实践

在数字化转型速度不断提升的今天&#xff0c;大带宽、低时延、高并发的场景不断涌现&#xff0c;内容分发网络(Content Delivery Network&#xff0c;CDN)应用需求还在不断攀升&#xff0c;打造更高质量的CDN服务将成为新时代产业竞争的关键所在。亚太CDN峰会自2012年第一届以来…

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版本…

Hadoop 3.2.4 本机伪分布式安装

Hadoop 3.2.4 伪分布式安装 文章目录 Hadoop 3.2.4 伪分布式安装前言配置ssh免密登录下载安装包解压并调整配置文件解压安装包到当前位置调整配置文件hadoop-env.shyarn-env.shcore-site.xmlhdfs-site.xmlmapred-site.xmlyarn-site.xmlworkers 配置 启动验证启动与命令查验web页…

高并发的哲学原理(一)-- 找出单点,进行拆分

人列计算机 《三体》中&#xff0c;刘慈欣设计了一个用人进行二进制运算的计算机&#xff0c;使用了三千万名士兵(晶体管)&#xff1a; 计算机名&#xff1a;秦一号 CPU&#xff1a;秦始皇最精锐的五个军团 挥舞旗帜进行二进制运算 用三个士兵来组成与门、或门、与非门、或非门…

Python GUI编程利器:Tkinker中的消息对话框(13)

小朋友们好&#xff0c;大朋友们好&#xff01; 我是猫妹&#xff0c;一名爱上Python编程的小学生。 和猫妹学Python&#xff0c;一起趣味学编程。 今日目标 学习Tkinter中的消息对话框的使用&#xff0c;实现如下效果&#xff1a; 文本消息对话框 可以通过showinfo()创建文…

【网络安全带你练爬虫-100练】第12练:pyquery解析库提取指定数据

目录 一、目标1、基础/环境的准备工作 二、目标2&#xff1a;开始使用pyquery 三、目标3&#xff1a;提取到指定的数据 四、目标3&#xff1a;通过列表的形式获取指定数据 五、扩展&#xff1a;其他方法 六、网络安全O 一、目标1、基础/环境的准备工作 1、文档&#xff1…

【原生HTML+SpringBoot】电子病历编辑器源码

一、简介 本系统主要面向医院医生、护士&#xff0c;提供对住院病人的电子病历书写、保存、修改、打印等功能。本系统基于云端SaaS服务方式&#xff0c;通过浏览器方式访问和使用系统功能&#xff0c;提供电子病历在线制作、管理和使用的一体化电子病历解决方案&#x…

基于JAVA的心理咨询预约系统

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 心理健康在现代社会中…

Triton教程 --- 优化

Triton教程 — 优化 Triton系列教程: 快速开始利用Triton部署你自己的模型Triton架构模型仓库存储代理模型设置优化动态批处理 文章目录 Triton教程 --- 优化优化设置动态批处理程序模型实例 特定于框架的优化带有 TensorRT 优化的 ONNX (ORT-TRT)具有 OpenVINO 优化的 ONNXTe…

「2023 最新版」Java 工程师面试题总结 (1000 道题含答案解析)

作为一名优秀的程序员&#xff0c;技术面试都是不可避免的一个环节&#xff0c;一般技术面试官都会通过自己的方式去考察程序员的技术功底与基础理论知识。 如果你参加过一些大厂面试&#xff0c;肯定会遇到一些这样的问题&#xff1a; 1、看你项目都用的框架&#xff0c;熟悉…

【Zookeeper】使用Curator操作Zookeeper

简介 Curator 是 Apache ZooKeeper 的Java客户端库。 Zookeeper现有常见的Java API如&#xff1a;原生JavaAPI、Curator、ZkClient等。 添加依赖 <dependency><groupId>org.apache.curator</groupId><artifactId>curator-framework</artifactId&…

【SQL应知应会】表分区(二)• MySQL版

欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享&#xff0c;与更多的人进行学习交流 本文收录于SQL应知应会专栏,本专栏主要用于记录对于数据库的一些学习&#xff0c;有基础也有进阶&#xff0c;有MySQL也有Oracle 分区表 • MySQL版 前言一、分区表1.非分区表2.分区…