dml dql 约束 数据库设计

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

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

相关文章

【微服务】03-HttpClientFactory与gRpc

文章目录 1.HttpClientFactory &#xff1a;管理外向请求的最佳实践1.1 核心能力1.2 核心对象1.3 HttpClient创建模式 2.gRPC&#xff1a;内部服务间通讯利器2.1 什么是gRPC2.2 特点gRPC特点2.3.NET生态对gRPC的支持情况2.4 服务端核心包2.5 客户端核心包2.5 .proto文件2.6 gRP…

HDFS读写数据流程和NameNode工作机制

HDFS文件系统写数据 1.步骤 文件上传步骤&#xff1a; 向NameNode请求上传文件文件路径(验证请求身份&#xff0c;写权限)响应可以上传文件请求上传第一个Block(0-128M), 请返回DataNode返回dn1,dn2,dn3节点&#xff0c;表示采用这三个节点存储数据 NameNode节点选择存储节…

servletAPI超详__解老公不在家, 一个人偷看Servlet

目录 tomcat的定位 Servlet 详解 HttpServlet 核心方法 Get请求 关于乱码的问题 HttpServletRequest 核心方法 代码案例1: 打印请求信息 代码案例2: 获取GET请求中的参数 代码案例3:获取POST请求中的参数 代码案例4:获取POST请求中的参数(2) 引入JSON库解析String字符…

HCIP-OpenStack组件之neutron

neutron&#xff08;ovs、ovn&#xff09; OVS OVS(Open vSwitch)是虚拟交换机&#xff0c;遵循SDN(Software Defined Network&#xff0c;软件定义网络)架构来管理的。 OVS介绍参考&#xff1a;https://mp.weixin.qq.com/s?__bizMzAwMDQyOTcwOA&mid2247485088&idx1…

已解决Gradle错误:“Unable to load class ‘org.gradle.api.plugins.MavenPlugin‘”

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

[ACL2023] Exploring Lottery Prompts for Pre-trained Language Models

Exploring Lottery Prompts for Pre-trained Language Models 文章链接 清深的工作&#xff0c;比较有意思的一篇。作者先给出假设&#xff0c;对于分类问题&#xff0c;在有限的语料空间内总能找到一个prompt让这个问题分类正确&#xff0c;作者称之为lottery prompt。为此&…

探索未来世界,解密区块链奥秘!

你是否曾好奇&#xff0c;区块链是如何影响着我们的生活与未来&#xff1f;想要轻松了解这个引领着技术革命的概念吗&#xff1f;那么这本令人着迷的新书《区块链导论》绝对值得你拥有&#xff01; 内容丰富多彩&#xff0c;让你轻松掌握&#xff1a; **1章&#xff1a;区块链…

计算机竞赛 基于大数据的时间序列股价预测分析与可视化 - lstm

文章目录 1 前言2 时间序列的由来2.1 四种模型的名称&#xff1a; 3 数据预览4 理论公式4.1 协方差4.2 相关系数4.3 scikit-learn计算相关性 5 金融数据的时序分析5.1 数据概况5.2 序列变化情况计算 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &…

Linux 可重入、异步信号安全和线程安全

可重入函数 当一个被捕获的信号被一个进程处理时&#xff0c;进程执行的普通的指令序列会被一个信号处理器暂时地中断。它首先执行该信号处理程序中的指令。如果从信号处理程序返回&#xff08;例如没有调用exit或longjmp&#xff09;&#xff0c;则继续执行在捕获到信号时进程…

LeetCode 1267. 统计参与通信的服务器

【LetMeFly】1267.统计参与通信的服务器 力扣题目链接&#xff1a;https://leetcode.cn/problems/count-servers-that-communicate/ 这里有一幅服务器分布图&#xff0c;服务器的位置标识在 m * n 的整数矩阵网格 grid 中&#xff0c;1 表示单元格上有服务器&#xff0c;0 表…

性能测试流程? 怎么做性能测试?

一、前期准备 性能测试虽然是核心功能稳定后才开始压测&#xff0c;但是在需求阶段就应该参与&#xff0c;这样可以深入了解系统业务、重要功能的业务逻辑&#xff0c;为后续做准备。 二、性能需求分析&#xff08;评审&#xff09; 评审时&#xff0c;要明确性能测试范围、目…

jupyter notebook 插件nbextensions的安装

安装步骤&#xff1a; 1、打开 jupyter notebook&#xff0c;新建一个 python 文件&#xff1b; 2、 分别输入以下代码&#xff0c;然后运行&#xff0c;出现 warning 不影响使用&#xff0c;如果出现 errors&#xff0c;则说明下载有问题&#xff1a; !python -m pip install…