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.pswp.cn/web/40327.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/40327.shtml
英文地址,請注明出處:http://en.pswp.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全集進行觸發清…