MySQL基础(DDL,DML,DQL)

目录

一DDL

1.1数据库操作

1.1.1查询所有数据库:

1.1.2创建数据库

 1.1.3 使用数据库

1.1.4 删除数据库

1.2表操作

1.2.1表操作

1.2.1.1创建表

1.2.1.1.1约束

1.2.1.1.2 数据类型

1.2.1.1.2.1 数值类型

1.2.1.1.2.2 字符串类型

1.2.1.1.2.3日期类型 

 1.2.1.1.2图形化工具创建表

1.2.2查询表

 1.2.2.3查询建表语句的图形化操作

 1.2.3修改表结构

​编辑

​编辑 ​编辑1.2.4删除表结构

 二DML

 2.1添加数据(INSERT)

2.2修改数据 (UPDATE)

2.3删除数据(delete)

 三DQL

 3.1 基本查询

3.2条件查询 

3.3分组查询 

 3.3.1聚合函数

 3.4排序查询

3.5分页查询 


一DDL

1.1数据库操作

我们在进行数据库设计,需要使用到刚才所介绍 SQL 分类中的 DDL 语句。
DDL 英文全称是 Data Definition Language( 数据定义语言 ) ,用来定义数据库对象 ( 数据库、
)
中数据库的常见操作:查询、创建、使用、删除。

1.1.1查询所有数据库:

show databases;

通过指令:select database() ,就可以查询到当前所处的数据库

1.1.2创建数据库

create database itcast;创建一个 itcast 数据库。

 1.1.3 使用数据库

use 数据库名;

我们要操作某一个数据库下的表时,就需要通过该指令,切换到对应的数据库下,否则不能操作。

 

1.1.4 删除数据库

drop database [if exists] 数据库名;

如果删除一个不存在的数据库,将会报错。
可以加上参数 if exists ,如果数据库存在,再执行删除,否则不执行删除。

drop database if exists itcast; -- itcast数据库存在时删除

说明:上述语法中的database,也可以替换成schema

1.2表操作

学习完了 DDL 语句当中关于数据库的操作之后,接下来我们继续学习 DDL 语句当中关于表结构的操作。
关于表结构的操作也是包含四个部分:创建表、查询表、修改表、删除表。

1.2.1表操作

1.2.1.1创建表
create table 表名 (
字段 1 字段 1 类型 [ 约束 ] [ comment 字段 1 注释 ] ,
字段 2 字段 2 类型 [ 约束 ] [ comment 字段 2 注释 ] ,
......
字段 n 字段 n 类型 [ 约束 ] [ comment 字段 n 注释 ]
) [ comment 表注释 ] ;
注意: [ ] 中的内容为可选参数; 最后一个字段后面没有逗号。
create table ta_user(id int comment 'ID,唯一标识',username varchar(20) comment '用户名字',name varchar(10) comment '姓名',age int comment '年龄',gender char(1) comment '性别'
)comment '用户表';
1.2.1.1.1约束
概念:所谓约束就是作用在表中字段上的规则,用于限制存储在表中的数据。
作用:就是来保证数据库当中数据的正确性、有效性和完整性。
MySQL 数据库当中,提供了以下 5 种约束:
约束描述关键字
非空约束
限制该字段值不能为 null
not null
唯一约束
保证字段的所有数据都是唯一、不重复的
unique
主键约束
主键是一行数据的唯一标识,要求非空且唯一
primary key
默认约束
保存数据时,如果未指定该字段值,则采用默认值
aa
外键约束
让两张表的数据建立连接,保证数据的一致性和完整性
foreign key

 

  • id 是一行数据的唯一标识
  • username 用户名字段是非空且唯一的
  • name 姓名字段是不允许存储空值的
  • gender 性别字段是有默认值,默认为男

create table ta_user(id int  primary key  auto_increment comment 'ID,唯一标识',username varchar(20)  not null unique comment '用户名字',name varchar(10) not null comment '姓名',age int comment '年龄',gender char(1) default '男' comment '性别'
)comment '用户表';
1.2.1.1.2 数据类型
MySQL 中的数据类型有很多,主要分为三类:数值类型、字符串类型、日期时间类型。
1.2.1.1.2.1 数值类型
举例子:
分数 --- 总分 100 , 最多出现一位小数
score double ( 4 , 1 )

年龄字段 --- 不会出现负数 , 而且人的年龄不会太大
age tinyintunsigned
1.2.1.1.2.2 字符串类型

 

char varchar 都可以描述字符串,
char 是定长字符串,指定长度多长,就占用多少个字符,和字段值的长度无关。
varchar 是变长字符串,指定的长度为最大占用长度。
相对来说, char 的性能会更高些。
char性能高,浪费空间
varchar 性能低,节省空间
例子:
用户名 username --- 长度不定 , 最长不会超过 50
username varchar ( 50 )
手机号 phone --- 固定长度为 11
phone char ( 11 )
1.2.1.1.2.3日期类型 

 

生日字段 birthday ---生日只需要年月日

birthday date
创建时间 createtime --- 需要精确到时分秒
createtime datetime
 1.2.1.1.2图形化工具创建表

1.2.2查询表

 show tables;查询当前数据库所有表

desc ta_user;查询表结构

show create table ta_user;查询建表语句

 1.2.2.3查询建表语句的图形化操作

 1.2.3修改表结构

关于表结构的修改操作,工作中一般都是直接基于图形化界面操作

 1.2.4删除表结构

关于表结构的删除操作,工作中一般都是直接基于 图形化界面操作
drop table if exists 表名;在删除表时,表中的全部数据也会被删除。

 二DML

DML 英文全称是 Data Manipulation Language( 数据操作语言 ) ,用来对数据库中表的数据记录进
行增、删、改操作

添加数据( INSERT
修改数据( UPDATE
删除数据( DELETE

 2.1添加数据(INSERT)

insert语法:

  • 向指定字段添加数据
    insert into ta_user(id,username,name) values(1,'zxr','zxr');

  • 全部字段添加数据
insert into ta_user values (2,'zxr1','zxr1',20,'男');
  • 批量添加数据(指定字段)
insertinto tb_emp(username, name, gender, create_time, update_time)values('weifuwang','韦一笑',1, now(), now()),('fengzi','张三疯',1, now(), now());
  • 批量添加数据(全部字段)
insert into ta_user values (3,'zxr2','zxr2',20,'男'),(4,'zxr3','zxr3',20,'男')

 注意事项

1. 插入数据时,指定的字段顺序需要与值的顺序是一一对应的。
2. 字符串和日期型数据应该包含在引号中。
3. 插入的数据大小,应该在字段的规定范围内。

2.2修改数据 (UPDATE)

update语法:

update表名set字段名1 =值1 ,字段名2 =值2 , .... [where条件];
update ta_user set name='张三' where name='zxr1'
注意事项
1. 修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据。
2. 在修改数据时,一般需要同时修改公共字段 update_time ,将其修改为当前操作时间。

 

2.3删除数据(delete)

delete 语法:
delete from 表名 where 条件;
案例 1 :删除 tb_emp 表中 id 1 的员工
deletefrom tb_emp where id = 1 ;
注意
• DELETE 语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据。
• DELETE 语句不能删除某一个字段的值 ( 可以使用 UPDATE ,将该字段值置为 NULL)
• 当进行删除全部数据操作时,会提示询问是否确认删除所有数据,直接点击Execute

 三DQL

DQL英文全称是Data Query Language(数据查询语言),用来查询数据库表中的记录。
查询关键字:SELECT
查询操作是所有SQL语句当中最为常见,也是最为重要的操作。在一个正常的业务系统中,查询操作的
使用频次是要远高于增删改操作的。当我们打开某个网站或APP所看到的展示信息,都是通过从数据库
中查询得到的,而在这个查询过程中,还会涉及到条件、排序、分页等操作
基本语法:

 3.1 基本查询

  • 查询多个字段

--  =================== 基本查询 ======================

-- 1. 查询指定字段 name,entrydate 并返回

select name,entrydate from emp ;


 

-- 2. 查询返回所有字段

-- 方式一:  推荐 , 效率高 . 更直观

select id, username, password, name, gender, image, job, entrydate, create_time, update_time from emp;


 

-- 方式二:

select * from emp;


 

-- 3. 查询所有员工的 name,entrydate, 并起别名(姓名、入职日期)  --- as 关键字可以省略

select name as '姓名' ,entrydate as '入职日期' from emp ;

select name '姓名' ,entrydate '入职日期' from emp ;


 

-- 4. 查询员工有哪几种职位(不要重复) -- distinct

select distinct job from emp;

3.2条件查询 

案例
'2000-01-01' ( 包含 ) '2010-01-01'( 包含 ) 之间的员工信息

-- 方式 1
select id, username, password , name, gender, image, job, entrydate,
create_time, update_time
from tb_emp
where entrydate >= '2000-01-01' and entrydate <= '2010-01-01' ;
-- 方式 2 between...and
select id, username, password , name, gender, image, job, entrydate,
create_time, update_time
from tb_emp
where entrydate between '2000-01-01' and '2010-01-01' ;

 

案例 :查询 姓名 为两个字的员工信息
select id, username, password , name, gender, image, job, entrydate,
create_time, update_time
from tb_emp
where name like '__' ; # 通配符 "_" 代表任意 1 个字符
案例:查询姓张的
select id, username, password , name, gender, image, job, entrydate,
create_time, update_time
from tb_emp
where name like ' %' ; # 通配符 "%" 代表任意个字符( 0 ~ 多个)

 

3.3分组查询 

分组其实就是按列进行分类 ( 指定列下相同的数据归为一类 ) ,然后可以对分类完的数据进行合并
计算。
分组查询通常会使用聚合函数进行计算。

 3.3.1聚合函数

count :按照列去统计有多少行数据。
在根据指定的列统计的时候,如果这一列中有 null 的行,该行不会被统计在其中。
# count(字段)
select count(id) from tb_emp;-- 结果:29
select count(job) from tb_emp;-- 结果:28 (聚合函数对NULL值不做计算)
# count(常量)
select count(0) from tb_emp;
select count('A') from tb_emp;
# count(*) 推荐此写法(MySQL底层进行了优化)
select count(*) from tb_emp;

select 字段列表 from 表名 [ where 条件 ] group by 分组字段名 [ having
分组后过滤条件 ] ;

 案例1:根据性别分组 , 统计男性和女性员工的数量

select gender,count(*) from emp group by gender;
案例 2 :查询入职时间在 '2015-01-01' ( 包含 ) 以前的员工 , 并对结果根据职位分组 , 获取员
工数量大于等于 2 的职位。
select job,count(*) from emp where job <='2015-01-01'group by job having count(*)>2;

 

 3.4排序查询

排序在日常开发中是非常常见的一个操作,有升序排序,也有降序排序。
select 字段列表
from 表名
[ where 条件列表 ]
[ group by 分组字段 ]
order by 字段 1 排序方式 1 , 字段 2 排序方式 2 … ;
  1. ASC :升序(默认值)
  2. DESC:降序

案例:根据入职时间对公司的员工进行升序排序,入职时间相同,再按照更新时间进行降序排序。

# 根据入职时间对公司的员工进行升序排序,入职时间相同,再按照更新时间进行降序排序
select * from emp order by entrydate asc,update_time desc ;

3.5分页查询 

语法:

select 字段列表 from 表名 limit 起始索引 , 查询记录数 ;
案例 :查询 第 2 页 员工数据 , 每页展示 5 条记录
select id, username, password , name, gender, image, job, entrydate,
create_time, update_time
from tb_emp
limit 5 , 5 ; -- 从索引 5 开始,向后取 5 条记录

 

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

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

相关文章

【C语言】动态内存管理及其常见错误

文章目录 1、前言&#xff1a;为什么要有动态内存分布2、三种动态内存的创建方式及其释放2.1 malloc2.2 calloc2.3 ralloc2.4 free 3、常⻅的动态内存的错误3.1 对NULL指针的解引用操作3.2 对动态开辟空间的越界访问3.3 对非动态开辟内存使用free释放3.4 使⽤free释放⼀块动态开…

2016年认证杯SPSSPRO杯数学建模B题(第二阶段)多帧图像的复原与融合全过程文档及程序

2016年认证杯SPSSPRO杯数学建模 B题 多帧图像的复原与融合 原题再现&#xff1a; 数码摄像技术被广泛使用于多种场合中。有时由于客观条件的限制&#xff0c;拍摄设备只能在较低的分辨率下成像。为简单起见&#xff0c;我们只考虑单色成像。假设成像的分辨率为 32 64&#x…

如何在Java中调用DLL动态库

在Java编程中&#xff0c;有时我们需要调用本地代码库&#xff0c;特别是Windows平台上的DLL&#xff08;动态链接库&#xff09;。这种技术允许Java程序利用操作系统特定或性能敏感的功能。在本文中&#xff0c;我们将详细讨论如何在Java中加载和调用DLL动态库&#xff0c;并通…

react中useContext的用法

先在context文件中使用createContext创建初始值 import React from react;const TestContext React.createContext(true);export { TestContext };然后在父组件中引入&#xff0c;利用Provider传入新值 import { TestContext } from /utils/context;<TestContext.Provide…

【Golang入门教程】Go语言变量的声明

Go语言的变量声明是非常灵活和强大的。在Go语言中&#xff0c;你可以通过几种不同的方式来声明变量。下面是一些基本的示例来帮助你理解Go语言中如何声明变量。 ### 1. 使用var关键字 最基本的方式是使用var关键字&#xff0c;后跟变量名、变量类型。你可以在声明的时候初始化变…

NFT Insider #124:Aavegotchi 开启新一季稀有度挖矿,德克萨斯州奥斯汀市登陆 The Sandbox

引言&#xff1a;NFT Insider由NFT收藏组织WHALE Members&#xff08;https://twitter.com/WHALEMembers&#xff09;、BeepCrypto &#xff08;https://twitter.com/beep_crypto&#xff09;联合出品&#xff0c;浓缩每周NFT新闻&#xff0c;为大家带来关于NFT最全面、最新鲜、…

多线程libtorch推理问题

一、环境 我出问题的测试环境如下: pytorch1.10+cu113 pytorch1.10+cu116 pytorch2.2+cu118 libtorch1.10.1+cu113 libtorch1.10.1+cu111 libtorch1.9.0+cu111 二、问题现象 最近封装libtorch的推理为多线程推理的时候,遇到一个现象如下: (1)只要是将模型初始化放到一个…

什么是few-shot learning

什么是few-shot learning Few-shot learning is a kind a meta learningmeta learning: learn to learn 与传统监督算法的不同 传统监督算法&#xff1a;要求模型识别训练数据&#xff0c;并且泛化到测试数据。meta learning的目标是自己学会学习。 教小朋友判断动物的异同…

【主函数参数和 fork 讲解】

主函数参数 main函数是有参数的&#xff0c;而且主函数可以在运行时传参数&#xff0c;举例如下&#xff1a; 【编写main.c文件】 主函数的三个参数&#xff1a;**参数个数&#xff0c;参数内容&#xff0c;环境变量**也可以这样写&#xff1a;环境变量最后一个元素为Null f…

JS判断一个元素是否在可视区域中

JS如何判断一个元素是否在可视区域中&#xff1f;下文分解。 方法一&#xff1a;利用 scrollTop、offsetTop、clientHeight 的关系 /*** 利用 offsetTop < clientHeight scrollTop;* param element* returns*/ export const isInViewPort element > {// clientHeight…

wma格式可以用u盘插音响播放吗?

WMA&#xff08;Windows Media Audio&#xff09;文件格式是由微软公司创建的一种音频文件标准。大多数现代车载音频系统、MP3设备、音响设备都支持播放WMA文件。但是&#xff0c;一些老旧的车载音频系统或设备可能不支持WMA格式&#xff0c;可以将WMA文件转换为更普遍支持的格…

白话transformer(四):整体架构介绍

transformer现在是最主流的深度学习框架&#xff0c;尤其是大模型的流程让transformer的作用更加凸显&#xff0c;他可以对话、分类、生成文本等功能&#xff0c;那么他到底是如何工作的呢。 B站视频 1、背景知识铺垫 1.1、生成式模型 相信大家在使用手机聊天的输入法时&am…

【C++】string类模拟实现

个人主页 &#xff1a; zxctscl 如有转载请先通知 文章目录 1. 前言2. 构造函数和析构函数3. 遍历3.1 下标[]3.2 迭代器 4. Modifiers4.1 push_back和append4.2 4.3 insert4.4 erase4.5 swap 5.Capacity5.1 resize5.2 clear 6. 深浅拷贝6.1 浅拷贝&#xff08;值拷贝&#xff0…

C语言puts( )函数和 printf( )函数在输出字符串时有何区别?

一、问题 puts( )函数是专门⽤于字符串输出的函数&#xff0c;printf( )函数的&#xff05;s 格式也可以输出字符串&#xff0c;⼆者是否完全相同&#xff1f;怎样区分使⽤这两个函数&#xff1f; 二、解答 (1&#xff09;printf( )函数可以输出各种类型&#xff0c;并且⼀次…

wy的leetcode刷题记录_Day92

wy的leetcode刷题记录_Day92 声明 本文章的所有题目信息都来源于leetcode 如有侵权请联系我删掉! 时间&#xff1a;2024-3-22 前言 目录 wy的leetcode刷题记录_Day92声明前言2617. 网格图中最少访问的格子数题目介绍思路代码收获 695. 岛屿的最大面积题目介绍思路代码收获 2…

Springboot vue elementui 超市管理系统

Springboot vue elementui 超市管理系统 点击获取项目全套源码

适合新生儿的奶瓶有哪些?五款高分新生儿奶瓶分享!

每一个有新生儿的家庭都一定会挑选奶瓶&#xff0c;但是因为市面有太多品牌和款式&#xff0c;让大家难以挑选&#xff0c;更为重要的是还有可能会不小心选到劣质的产品&#xff0c;不仅奶嘴的仿真度差、易胀气&#xff0c;还可能高温消毒后散发有害物质&#xff01;那么新生儿…

python基础知识(四)

if not x % 2 > if x % 2 ! 0 Python HTML和XML解析的第三方库是 Beautifull Soup 不属于软件设计原则是 自底向上 用来表示实体之间联系的是 二维表 当对关系R和S进行自然连接时&#xff0c;要求R和S含有一个或者多个共有的 属性&#xff08;关系就是二维表&#xff09…

仿muduo库实现one thread one loop式并发服务器

文章目录 一、项目简介 二、项目整体认识 2、1 HTTP服务器 2、2 Reactor模型 三、预备知识 3、1 C11 中的 bind 3、2 简单的秒级定时任务实现 3、3 正则库的简单使用 3、4 通用类型any类型的实现 四、服务器功能模块划分与实现 4、1 Buffer模块 4、2 Socket模块 4、3 Channel模…

算法系列--递归(2)

&#x1f495;"什么样的灵魂就要什么样的养料&#xff0c;越悲怆的时候我越想嬉皮。"&#x1f495; 作者&#xff1a;Mylvzi 文章主要内容&#xff1a;算法系列–递归(2) 前言:今天带来的是算法系列--递归(2)的讲解,包含六个和二叉树相关的题目哦 1.计算布尔⼆叉树的…