dml dql 约束 数据库设计

news2024/11/26 10:31:39

dml

1.添加数据

     *语法

           *insert into 表名(列名1,列名2,……..列名n)values(值1,值2,…值n)

     *注意:

1.列名和值要一一对应

2.如果表名后,不写列名,就要给所有列添加值

Insert into 表名 values(值1,值2,…值n);

3.除了数字类型其他的类型都需要引号(单双都ok)

2.删除语句:

语法:

  • delete form 表名 [while 条件]
  • 这样子就会导致id1的一行全被删除

注意:

如果不写条件,就删除表中全部记录

删除全部记录

1.delete from 表名;---有多少条记录就会执行多少次删除操作

2.TRUNCATE TABLE 表名;---只会执行一次,先删除表然后再创建一张一样的表

3.修改数据:

  • 语法:
    • update 表名 set 列名1 = 1,列名2 = 2…[where 条件]

注意:

1.如果不加任何条件,就会将表中全部数据都会修改

 dql

  select * from 表名(查询所有)

1.语法:

Select

字段查询

From

表名列表

Where

条件列表

Group by

分组字段

Having

分组之后的条件

Order by

排序

Limit

分页限定

2.基础查询

查询所有的就是select * from 表名

1.多个字段的查询

查询姓名和年龄

Select nameage from 表名

标准格式

计算两个值

Select name math(列名), English(列名),math+English from 表名

null参与的计算为null

解决方法:

Select name mathEnglishmath+ifnullEnglish0form 表名

解决两个值计算后的名字(起别名)as可省略用空格代替

Select name mathEnglishmath+ifnullEnglish0as 总分 form 表名

2.去除重复的结果集

Select distinct address(列名)form 表名

用完这个后(去除重复),图中一样是因为有可能多个空格什么的

条件查询

1.where 子句后跟条件

2.运算符

  • > , < , <= , >= , = , <>(不等号)

  • BETWEEN…AND(包含20和30)

Select * form 表名 where age between 20 and 30;

 

  • IN(集合)(找22和19和18)

Select * form 表名 where age IN (22,19,28);

 

  • IS NULL(查询谁为null)

Select * form 表名 where english is null;

Select * form 表名 where english is not null;(不为null)

 

  • And 或 &&
    • Select * form 表名 age >=30 && age<=30;(不推荐&&建议and)

 

  • Or 或 ||(找22和19和25)
    • Select * form 表名 where age=22 or age=19 or age= 25;

 

  • Not 或 !(非)

  • Like(下划线表示就是一个,%就是表示随便多少个)
    • 第一个为‘马’
      • Select * from 表名 where name like ‘马%’;
    • 中间为马

Select * from 表名 where name like ‘_马%’;

  • 三个字的
    • Select * from 表名 where name like ‘___’(三个下划线);
  • 有马就ok
    • Select * from 表名 where name like ‘%马%’;

排序查询

语法: order by 列名

按数学成绩排名

Select * form 表名 order by math(列名) 排序方式(asc desc)

asc升序(默认)

desc降序

假如有一样的,就看英语成绩(第一条件一样时才看第二条件)

Select * from 表名 order by math 排序方式 ,English 排序方式;

聚合函数(排除了非空,不计算非空)可以用ifnull解决

将一列数据作为一个整体,作为计算

1.count:计算个数

一般选择非空的列:主键

Select countnamefrom 表名;

2.max:计算最大值

3.min:计算最小值

4.sum:计算和

5.age:计算平均值

分组查询:group by

查询男女的平均分

Select sex(列) (聚合函数)avg(列名),countidfrom 表名 group by 列名

限定分组条件

Select sex(列) (聚合函数)avg(列名),countidfrom 表名 where math > 70 group by 列名

人数还要大于2个才可以查询

Select sex(列) (聚合函数)avg(列名),countidfrom 表名 where math > 70 group by 列名 having countid > 2;

注意:

where和having的区别

1.where在分组之前进行限定,如果不满足条件,就不参加分组。having就是在分组之后限定不满足就不会查询出来

2.where后不可以跟聚合函数,having 可以进行聚合函数的判断

分页查询(limit为方言只能mysql用)

语法:limit 开始的索引,每页查询的条数;

公式:开始的索引 = (当前的页码 - 1* 每页显示的条数

约束

非空约束:(某一列的值不能为null)

在创建表添加非空约束

CREATE TABLE stu(

id INT,

NAME VARCHAR(20) NOT NULL -- nama为非空

);

创建完表后:

Alter table 表名 modify name varchar(20)not null;

这样子也可以约束

快捷操作:右击表,改变表

删除非空约束

Alter table 表名 modify varchar(20);(就是修改表的字段就ok)

唯一约束:(某一列的值不能重复)

在创建表时

CREATE TABLE stu(

id INT,

NAME VARCHAR(20) UNIQUE -- nama为非空

);

唯一约束可以有null值,但是只能有一条记录为null

在创建表后

Alter table 表名 modify 列名 varchar20UNIQUE

删除唯一约束:

Alter table 表名 drop index 列名

主键约束

注意:

1.含义:非空且唯一

2.一张表只能用一个字段为主键

3.主键就是表中记录的唯一标识

在创建表中添加主键约束

Create table stu(

Id int primary key,   --给id添加主键约束

Name varchar(20)

);

创建表后添加主键:

Alter table stu modify id int primary key

删除主键:

Alter table stu drop primary key;

自动增长:

概念:如果某一列是数值类型的,使用auto_increment 可以来完成值的自动增长

比如在id中1 2 3 4…

在创建表中,添加主键约束并添加自动增长

Create table stu(

Id int primary key auto_increment,   --给id添加主键约束和自动增长

Name varchar(20)

);

自动增长只与上一个有关

删除和添加

外键约束:

1.创建表时,添加外键

*语法:

Create table 表名(

外键列  ----外键对应主表主键

Constraint 外键名称 foreign key(外键列名称) references 主表名称(主表列名称)

department为主表  employee为次表(外键值可以为null也就是说id可以为null

删除外键

Alter table employee(表名) drop foreign key emp_dept_fk(外键名);

创建表后添加外键:

Alter table employee(表名)add Constraint 外键名称 foreign key(外键列名称) references 主表名称(主表列名称)

级联操作:

改主表时候,顺便也可以改次表关联的东西

级联更新:

Constraint 外键名称 foreign key(外键列名称) references 主表名称(主表列名称)on update cascade;

级联删除:

Constraint 外键名称 foreign key(外键列名称) references 主表名称(主表列名称)on delete cascade;

数据库设计

一对多(多对一)

在多的一方建立外键指向一的一方的主键

多对多:

多对多的关系需要借助中间表来实现中间表至少包含两个字段,这两个字段作为

第三张表的外键,分别指向两张表的主键

一对一:

一对一关系实现可以在任意一方添加唯一外键指向另一方的主键

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

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

相关文章

QT 获取程序编译时间并且转化格式

前言 有的时候我们要在程序的关于界面加上程序的编译时间等信息。可以通过如下代码实现 QString buildTime QStringLiteral("%1 %2").arg(__DATE__).arg(__TIME__);ui->label->setText(buildTime);QDateTime dateTime QLocale("en_US").toDateTim…

easyx图形库6:实现飞机大战:

飞机大战 一.飞机大战的基本窗体&#xff1a;二.飞机大战的主要战斗场景元素&#xff1a;一.透明图片&#xff1a;二.精灵对象&#xff1a; 三.主游戏场景的元素&#xff1a;1.英雄飞机的结构体定义&#xff1a;2.英雄飞机的代码实现&#xff1a;3.游戏背景的结构体定义&#x…

Day5:react函数组件与类组件

「目标」: 持续输出&#xff01;每日分享关于web前端常见知识、面试题、性能优化、新技术等方面的内容。 「主要面向群体&#xff1a;」前端开发工程师&#xff08;初、中、高级&#xff09;、应届、转行、培训、自学等同学 Day4-今日话题 react「函数组件和类组件」的区别&…

查局域网所有占用IP

查局域网所有占用IP 按&#xff1a;winr 出现下面界面&#xff0c;在文本框中输入 cmd 按确定即可出现cmd命令界面 在cmd命令窗口输入你想要ping的网段&#xff0c;下面192.168.20.%i即为你想要ping的网段&#xff0c;%i代表0-255 for /L %i IN (1,1,254) DO ping -w 1 -n 1…

(动态规划) 剑指 Offer 49. 丑数 ——【Leetcode每日一题】

❓剑指 Offer 49. 丑数 难度&#xff1a;中等 我们把只包含质因子 2、3 和 5 的数称作丑数&#xff08;Ugly Number&#xff09;。求按从小到大的顺序的第 n 个丑数。 示例: 输入: n 10 输出: 12 解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。 说明: 1 是丑数。…

2024年新iPad Pro将实现6年来最大的升级

彭博社的Mark Gurman长期以来一直将iPad Pro的下一次重大更新定在2024年&#xff0c;在最新一期的Power On时事通讯中&#xff0c;他详细阐述了一些细节&#xff0c;这些细节将使其成为“自2018年以来该产品的首次重大更新” 尽管Gurman将最近的iPad升级描述为“最近特别小”&…

word6 图文混排

目录 7-1 段落缩进排版7-2 搞定多级列表难题 7-1 段落缩进排版 段落对齐 缩进问题 悬挂缩进&#xff1a;缩进首行以外的段落 段落对齐&#xff1a; 7-2 搞定多级列表难题

k8s 安装 kubernetes安装教程 虚拟机安装k8s centos7安装k8s kuberadmin安装k8s k8s工具安装 k8s安装前配置参数

k8s采用master, node1, node2 。三台虚拟机安装的一主两从&#xff0c;机器已提前安装好docker。下面是机器配置&#xff0c;k8s安装过程&#xff0c;以及出现的问题与解决方法 虚拟机全部采用静态ip, master 30机器, node1 31机器, node2 32机器 机器ip 192.168.164.30 # ma…

【数据结构与算法篇】手撕八大排序算法之快排的非递归实现及递归版本优化(三路划分)

​&#x1f47b;内容专栏&#xff1a; 《数据结构与算法篇》 &#x1f428;本文概括&#xff1a; 利用数据结构栈(Stack)来模拟递归&#xff0c;实现快排的非递归版本&#xff1b;递归版本测试OJ题时&#xff0c;有大量重复元素样例不能通过&#xff0c;导致性能下降&#xff0…

Self-Supervised Learning

Self-Supervised Learning Bert 的数据是 340M parameters 抽象解释&#x1f446; Bert 单个字的预测 把一个字盖住&#xff1a; 1、把一个字替换成特殊字符(MASK)。 2、替换成随机的一个字,进行训练。 next sentence prediction 通过变换两个连起来的句子的顺序&#x…

C. Battle 2023 (ICPC) Jiangxi Provincial Contest -- Official Contest

Problem - C - Codeforces 题目大意&#xff1a;有n堆石子&#xff0c;给出一个数p&#xff0c;A先B后&#xff0c;每个人每次只能取p的幂个石子&#xff08;包括1&#xff09;问A能不能赢 1<n<3e5;1<p<1e18 思路&#xff1a;先递归算出sg函数看看&#xff0c;s…

detour编译问题及导入visual studio

Detours是经过微软认证的一个开源Hook库&#xff0c;Detours在GitHub上&#xff0c;网址为 https://github.com/Microsoft/Detours 注意版本不一样的话也是会出问题的&#xff0c;因为我之前是vs2022的所以之前的detours.lib不能使用&#xff0c;必须用对应版本的x64 Native To…

线性代数的艺术

推荐一本日本网友Kenji Hiranabe写的《线性代数的艺术》。这本书是基于MIT大牛Gilbert Strang教授的《每个人的线性代数》制作的。 虽然《线性代数的艺术》这本书仅仅只有12页的内容&#xff0c;就把线性代数的重点全画完了&#xff0c;清晰明了。 《线性代数的艺术》PDF版本&…

C语言:指针类型的意义

1.指针的类型决定了解引用时访问几个字节 2.指针的类型决定了指针1、-1跳过几个字节 一、指针的类型决定指针解引用时访问几个字节 例如 int 型指针解引用时访问4个字节 char 型指针解引用时访问1个字节 详解代码如下&#xff1a; int b 0x11223344&#xff08;十六进制&…

通过这 5 项 ChatGPT 创新增强您的见解

为什么绝大多数的人还不会使用chatGPT来提高工作效能&#xff1f;根本原因就在还不会循序渐进的发问与chatGPT互动。本文总结了5个独特的chatGPT提示&#xff0c;可以帮助您更好地与Chat GPT进行交流&#xff0c;以获得更清晰的信息、额外的信息和见解。 澄清假设和限制 用5种提…

2023-8-28 n-皇后问题

题目链接&#xff1a;n-皇后问题 第一种搜索顺序 #include <iostream>using namespace std;const int N 20;int n; char g[N][N]; bool row[N], col[N], dg[N], udg[N];void dfs(int x, int y, int s) {if(y n) y 0, x ;if(x n){if(s n){for(int i 0; i < n;…

水源井监控系统整体解决方案

1.1、系统组成水源井远程监控系统主要由监控中心、通信平台、水源井测控终端、现场启动柜设备组成。系统整体结构按功能可划分为采集层、网络层和应用层等三层&#xff0c;水源井测控终端主要实现采集层的功能&#xff0c;数据传输链路主要实现网络层的功能&#xff0c;中心端管…

ModaHub魔搭社区:将图像数据添加至Milvus Cloud向量数据库中

将图像数据添加至向量数据库中 图像分割裁剪完成后,我们就可以将其添加至 Milvus Cloud 向量数据库中了。为了方便上手,本项目中使用了 Milvus Lite 版本,可以在 notebook 中运行 Milvus 实例。接下来,使用 PyMilvus 连接至 Milvus Lite 提供的默认服务器。 这一步骤中,…

python 单向循环(环形)链表

不带头结点的单向循环链表的示意图 循环链表的应用场景【约瑟夫问题】 现假设 n 5&#xff08;一共有 5 个人&#xff09;&#xff0c;k 1&#xff08;从第 1 个人开始报数&#xff09;&#xff0c; m 2&#xff08;数 2 下&#xff09;&#xff0c;则出队编号的序列为&…