Mysql——数据库约束和加简单查询

数据库中的约束

在创建表格的过程中可以给某些字段追加约束条件

非空约束 NOT NULL

NK

create table t_user (

id int(3) not null,

username varchar(10),

password varchar(15)

);

唯一约束 UNIQUE

UK

create table t_user (

id int(3) not null,

username varchar(10) unique,

password varchar(15)

);

create table t_user (

id int(3) not null,

username varchar(10),

password varchar(15),

constraint UK_username unique(username)

);

主键约束 PRIMARY KEY

主键(PRIMARY KEY),也称“主键约束”。

MySQL主键约束是一个列或者多个列的组合,其值能唯一地标识表中的每一行。这样的一列或多列称为表的主键,通过它可以强制表的实体完整性。主键主要是用于其他表的外键关联,以及本记录的修改与删除。

主键(PRIMARY KEY)是 MySQL 中使用最为频繁的约束。一般情况下,为了便于 DBMS 更快的查找到表中的记录,都会在表中设置一个主键。

PK   效果上 == 非空约束+唯一约束

create table t_user (

id int(3),

username varchar(10),

password varchar(15),

constraint pk_id primary key(id)

);

联合主键

MYSQL是一个关系型数据库管理系统,其中联合主键是一种非常重要的数据库设计概念。在MYSQL中,联合主键是指使用多个列值来唯一标识一个记录的主键。一个联合主键可能包含两个或更多个字段,而这些字段一起组成了一个唯一标识符。这样可以保证在数据表中每个记录都有唯一的标识。

外键约束 FOREIGN KEY

一对一  一对多  多对多

FK  用到两张表格

t_user (一)

t_book (多)

关系维护在(多)方

uid

Username

password

1

Lufei

lufei

2

Qiaoba

qiaoba

bid

Bookname

author

u_id(外键)

1

笑傲江湖

金庸

1

2

神雕侠侣

金庸

2

3

鹿鼎记

金庸

2

4

连城诀

金庸

2

创建过程中分两步进行:

  1. 指定哪一个字段是外键  foreign key(u_id)
  2. 外键需要引用哪一个表格的字段  references t_user(id)

create table t_user (

id int(3),

username varchar(10),

password varchar(15),

constraint pk_id primary key(id)

);

create table t_book (

bid int(3),

bookname varchar(6),

author varchar(3),

u_id int(3),

constraint pk_bid primary key(bid),

constraint fk_u_id foreign key(u_id) references t_user(id)

);

一级菜单   二级菜单     自关联

设计一张菜单表:

id

name

url

oneid

1

用户管理

XXX

2

用户添加

XXX

1

3

用户删除

XXX

1

4

用户查询

XXX

1

5

用户修改

XXX

1

6

商品管理

XXX

7

商品上架

XXX

6

8

商品下架

XXX

6

create table t_menu (

id int(3),

name varchar(10),

url varchar(20),

oneid int(3),

constraint pk_id primary key(id),

constraint fk_oneid foreign key(oneid) references t_menu(id)

);

外键状态下的级联操作:

级联删除谨慎使用

create table t_book (

bid int(3),

bookname varchar(6),

ahthor varchar(3),

u_id int(3),

constraint pk_bid primary key(bid),

constraint fk_u_id foreign key(u_id) references t_user(id) on delete cascade

);

create table t_book (

bid int(3),

bookname varchar(6),

ahthor varchar(3),

u_id int(3),

constraint pk_bid primary key(bid),

constraint fk_u_id foreign key(u_id) references t_user(id) on delete set null

);

检查约束 CHECK

在一个范围中间

create table test32(

id number primary key,

age number check(age>0 and age<120)

);

设计表需要注意的东西   数据库三范式

      1. 第一范式(1NF)
  • 第一范式主要是保证数据表中的每一个字段的值必须具有原子性,也就是数据表中的每个字段的值是不可再拆分的最小数据单元
      1. 第二范式(2NF)
  • 第二范式要求在满足第一范式的基础上,还要满足数据表里的每一条数据记录,都是可唯一标识的,而且所有的非主键字段,都必须完全依赖主键,不能只依赖主键的一部分。
      1. 第三范式(3NF)
  • 第三范式建立在已经满足第二范式的基础上
  • 数据表中的每一个非主键字段都和主键字段直接相关

查询机制

emp员工表

字段

描述

类型

empno

员工编号

mediumint

ename

员工姓名

varchar

job

职位

varchar

mgr

领导编号

mediumint

hiredate

入职日期

date

sal

工资

decimal

comm

奖金

decimal

deptno

部门编号

mediumint

dept部门表

字段

描述

类型

deptno

部门编号

mediumint

dname

部门名称

varchar

loc

部门位置

varchar

salgrade工资等级

字段

描述

类型

grade

等级

mediumint

losal

最低工资

decimal

hisal

最高工资

decimal

简单查询

查询所有员工信息

SELECT * from emp;

查询所有并起别名

SELECT empno '员工编号',ename '员工姓名',job '职位',mgr '领导编号' from emp;

SELECT e.empno,e.job,e.sal from emp e;

查询公司中的职位

SELECT  DISTINCT  job from emp;

DISTINCT :去重关键字

限定查询

SELECT * FROM 表名称 [限定条件]

Where  >  <  >=  <=  !=   between...and...  and   or  is null   in  like  ...

查询工资高于1500的所有员工信息

SELECT * from emp WHERE sal > 1500;

查询工资高于1500低于3000的所有员工信息

SELECT * from emp WHERE sal >= 1500 and sal <= 3000;

//between...and...取的区间值

SELECT * from emp WHERE sal BETWEEN 1500 and 3000;

查询没有奖金的所有员工信息  or或者

SELECT * from emp where comm = 0 or comm is NULL;

查询有奖金的员工信息

SELECT * from emp where comm > 0;

查询员工姓名中带有S的员工信息

SELECT * from emp where ename like '%S%';

模糊匹配:

%:占位符 代表0个或者多个字符

_:占位符  代表一个字符

查询入职日期在1981年的员工

SELECT * from emp where hiredate BETWEEN '1981-01-01' and '1981-12-31';

SELECT * from emp where hiredate LIKE '%1981%';

查询员工编号在7499  7521  7566 in包含

SELECT * from emp where empno in (7499,7521,7566);

排序查询

SELECT * FROM 表名称 [限定条件][排序条件]

Order by 字段 升序/降序   

升序 asc

降序 desc

根据工资由高到底进行排序查询

SELECT * from emp order by sal desc;

如果工资一样,那么按照入职日期升序

SELECT * from emp order by sal desc,hiredate asc;

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

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

相关文章

[笔记] 高等数学在各工程门类的典型应用场景

1.应用场景 1.微积分似乎是在解算椭圆方程中引入的&#xff1f;但是这个数学工具第一次应用于现实的工程问题是什么时候&#xff1f;什么场景&#xff1f;什么问题&#xff1f; 微积分的发展确实与椭圆方程有关&#xff0c;但它最初的应用场景远不止于此。 微积分首次被应用…

C++期末模拟

id:124 A. 一、会员积分&#xff08;期末模拟&#xff09; 题目描述 某电商网站的会员分为&#xff1a;普通、贵宾两个级别 普通会员类Member&#xff0c;包含编号、姓名、积分三个属性&#xff0c;编号和积分是整数&#xff0c;姓名是字符串 操作包括构造、打印、积分累加、…

【JavaWeb程序设计】Web基础-JavaScript

目录 一、函数与事件的使用 1. 编写一个html页面&#xff0c;使用Javascript完成数字的平方计算。 1.1 运行截图 1.2 JS代码 1.3 HTML代码 2. 要求文本框中只能输入字母 2.1 运行截图 2.2 下载jquery-3.4.1并引用 2.3 JS代码 2.4 HTML代码 3. 在文本框分别输入两个…

大模型LLM面试常见算法题-包括Attention和Transformer常见面试题

大模型&#xff1a; 位置编码有哪些&#xff1f; 介绍LoRA与QLoRA RAG和微调的区别是什么&#xff1f; 哪些因素会导致LLM的偏见&#xff1f; 什么是思维链&#xff08;CoT&#xff09;提示&#xff1f; Tokenizer的实现方法及原理 解释一下大模型的涌现能力&#xff1f;…

基于aardio web.view2库和python playwright包的内嵌浏览器自动化操作

通过cdp协议可以实现playwright操控webview。 新建Python窗口工程 修改pip.aardio 修改pip.aardio&#xff0c;并执行&#xff0c;安装playwright。 //安装模块 import process.python.pip; //process.python.path "python.exe";/* 安装模块。 参数可以用一个字…

雅思词汇及发音积累 2024.7.5

1.province 省 2.state 州 3.county 县 4.cost of living 生活费用 5.crime 犯罪 6.pace of life 生活节奏 7.interesting 有意思的 8.boring/dull /dʌl/ 烦闷的 9.main/primary/leading industry 主要产业 10.Manufacturing /ˌmnjuˈfktʃərɪŋ/ 制造 11.proc…

Linux系统的基础知识和常用命令

1、什么是Linux&#xff1f; 是一种免费使用和自由传播的类UNIX操作系统&#xff0c;其内核由林纳斯本纳第克特托瓦兹于1991年10月5日首次发布&#xff0c;它主要受到Minix和Unix思想的启发&#xff0c;是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行…

【面向就业的Linux基础】从入门到熟练,探索Linux的秘密(十)-git(2)

下面是一些git的常用命令和基本操作&#xff0c;可以当做平常的笔记查询&#xff0c;用于学习&#xff01;&#xff01;&#xff01; 文章目录 前言 一、git 二、git常用命令 总结 前言 下面是一些git的常用命令和基本操作&#xff0c;可以当做平常的笔记查询&#xff0c;用于…

关于项目中的数据安全的一些理解

一、介绍 项目建设中数据安全是非常重要的一环,但是大家对于数据安全这个主题可能不够了解,从而在项目的整个生命周期中,产生一些的安全问题。 这里按照个人经验、查阅资料、国家标准等,总结了一些对于数据安全的看法。 二、国家标准 国家针对信息安全,发布了一系列的标准…

深入了解 PXE:定义、架构、原理、应用场景及常见命令体系

引言 PXE&#xff08;Preboot Execution Environment&#xff0c;预启动执行环境&#xff09;是一种允许计算机通过网络启动操作系统而无需本地存储设备的技术。本文将详细介绍 PXE 的定义、架构、原理、应用场景及常见命令体系&#xff0c;特别是以 CentOS 为例&#xff0c;展…

【MindSpore学习打卡】应用实践-计算机视觉-深入解析 Vision Transformer(ViT):从原理到实践

在近年来的深度学习领域&#xff0c;Transformer模型凭借其在自然语言处理&#xff08;NLP&#xff09;中的卓越表现&#xff0c;迅速成为研究热点。尤其是基于自注意力&#xff08;Self-Attention&#xff09;机制的模型&#xff0c;更是推动了NLP的飞速发展。然而&#xff0c…

欧拉openEuler 22.03 LTS-部署k8sv1.03.1

1.设置ip # vi /etc/sysconfig/network-scripts/ifcfg-ens32 TYPEEthernet PROXY_METHODnone BROWSER_ONLYno BOOTPROTOstatic DEFROUTEyes IPV4_FAILURE_FATALno #IPV6INITyes #IPV6_AUTOCONFyes #IPV6_DEFROUTEyes #IPV6_FAILURE_FATALno #IPV6_ADDR_GEN_MODEeui64 NAMEens1…

物联网数据解析实战:掌握CJSON库核心函数,精准处理JSON数据

物联网数据解析实战&#xff1a;掌握CJSON库核心函数&#xff0c;精准处理JSON数据 CJSON库是一个轻量级的JSON解析库&#xff0c;专为C语言设计&#xff0c;适用于嵌入式系统和物联网应用。它提供了简单易用的API&#xff0c;使得开发者能够轻松地解析和生成JSON数据。在本教…

部署Gunicorn + Flask应用到Docker

部署Gunicorn Flask应用到Docker中涉及几个步骤&#xff0c;下面是一个基本的指南&#xff1a; 1. 创建Flask应用 首先&#xff0c;确保你有一个可用的Flask应用。这里有一个简单的示例&#xff1a; from flask import Flask app Flask(__name__)app.route(/) def hello_w…

pandas,dataframe使用笔记

目录 新建一个dataframe不带列名带列名 dataframe添加一行内容查看dataframe某列的数据类型新建dataframe时设置了列名&#xff0c;则数据类型为object dataframe的保存保存为csv文件保存为excel文件 dataframe属于pandas 新建一个dataframe 不带列名 df pd.DataFrame() 带…

GuLi商城-商品服务-API-品牌管理-效果优化与快速显示开关

<template><div class"mod-config"><el-form :inline"true" :model"dataForm" keyup.enter.native"getDataList()"><el-form-item><el-input v-model"dataForm.key" placeholder"参数名&qu…

华为交换机 LACP协议

华为交换机支持的LACP协议&#xff0c;即链路聚合控制协议&#xff0c;是一种基于IEEE 802.3ad标准的动态链路聚合与解聚合的协议。它允许设备根据自身配置自动形成聚合链路并启动聚合链路收发数据。 在LACP模式下&#xff0c;链路聚合组能够自动调整链路聚合&#xff0c;维护…

java集合(1)

目录 一.集合概述 二. 集合体系概述 1. Collection接口 1.1 List接口 1.2 Set接口 2. Map接口 三. ArrayList 1.ArrayList常用方法 2.ArrayList遍历 2.1 for循环 2.2 增强for循环 2.3 迭代器遍历 一.集合概述 我们经常需要存储一些数据类型相同的元素,之前我们学过…

Java 基础语法

Java 是一种面向对象的编程语言&#xff0c;具有简单、健壮、安全、跨平台等特点。下面是Java基础语法的详细介绍&#xff0c;并附带一些示例说明&#xff1a; ### 1. 变量和数据类型 Java 中的变量用于存储数据&#xff0c;必须先声明后使用。Java 的数据类型分为基本数据类…

C++ 仿QT信号槽二

// 实现原理 // 每个signal映射到bitset位&#xff0c;全集 // 每个slot做为signal的bitset子集 // signal全集触发&#xff0c;标志位有效 // flip将触发事件队列前置 // slot检测智能指针全集触发的标志位&#xff0c;主动运行子集绑定的函数 // 下一帧对bitset全集进行触发清…