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.rhkb.cn/news/282534.html

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

相关文章

Linux:执行命令的命令eval与Bash解析命令的方式

相关阅读 Linuxhttps://blog.csdn.net/weixin_45791458/category_12234591.html?spm1001.2014.3001.5482 eval命令用于接收参数&#xff0c;并将这些参数作为一行命令执行&#xff0c;这也许会使人困惑&#xff0c;为什么我不能直接执行命令而需要使用eval命令间接执行呢&…

【应用笔记】LAT1305+使用STM32+TT类型IO的注意事项

1. 概述 在 STM32 系列 MCU 中&#xff0c; 除了一些特殊管脚外&#xff0c;绝大多数管脚都可以分类为 FT (兼容5V 信号)或 TT&#xff08;兼容 3V3 信号&#xff09;类型的 IO&#xff0c;由于 MCU 内部设计的不同&#xff0c; TT IO 相比 5V IO 有更多的限制&#xff0c;下面…

【回溯专题part1】【蓝桥杯备考训练】:n-皇后问题、木棒、飞机降落【已更新完成】

目录 1、n-皇后问题&#xff08;回溯模板&#xff09; 2、木棒&#xff08;《算法竞赛进阶指南》、UVA307&#xff09; 3、飞机降落&#xff08;第十四届蓝桥杯省赛C B组&#xff09; 1、n-皇后问题&#xff08;回溯模板&#xff09; n皇后问题是指将 n 个皇后放在 nn 的国…

MySQL数据库索引

目录 一.索引的基本内容 1.索引的定义 2.索引的作用 &#xff08;1&#xff09;设置了合适的索引之后&#xff0c;数据库利用各种快速定位技术&#xff0c;能够大大加快查询速度&#xff0c;这是创建索引的最主要的原因。 &#xff08;2&#xff09;当表很大或查询涉及到多…

鸿蒙一次开发,多端部署(四)工程管理

DevEco Studio的基本使用&#xff0c;请参考DevEco Studio使用指南。本章主要介绍如何使用DevEco Studio进行多设备应用开发。 说明&#xff1a; 本章的内容基于DevEco Studio 3.1.1 Release版本进行介绍&#xff0c;如您使用DevEco Studio其它版本&#xff0c;可能存在文档与产…

python --- 练习题3

目录 1、猜数字游戏&#xff08;使用random模块完成&#xff09; &#xff1a;继上期题目&#xff0c;附加 2、用户登录注册案例 3、求50~150之间的质数是那些&#xff1f; 4、打印输出标准水仙花数&#xff0c;输出这些水仙花数 5、验证:任意一个大于9的整数减去它的各位…

行业模板|DataEase制造行业大屏模板推荐

DataEase开源数据可视化分析平台于2022年6月发布模板市场&#xff08;https://templates-de.fit2cloud.com&#xff09;&#xff0c;并于2024年1月新增适用于DataEase v2版本的模板分类。模板市场旨在为DataEase用户提供专业、美观、拿来即用的大屏模板&#xff0c;方便用户根据…

机器学习_正则化

文章目录 代价函数 如果我们有非常多的特征&#xff0c;我们通过学习得到的假设可能能够非常好地适应训练集&#xff08;代价函数可能几乎为 0&#xff09;&#xff0c;但是可能会不能推广到新的数据。 下图是一个回归问题的例子&#xff1a; 第一个模型是一个线性模型&#xf…

思科网络中DHCP协议的配置

一、什么是DHCP&#xff1f;DHCP有什么作用&#xff1f; &#xff08;1&#xff09;DHCP&#xff08;Dynamic Host Configuration Protocol&#xff09;是一种网络协议&#xff0c;用于在局域网中自动分配IP地址和其他网络配置信息给计算机设备。我们电脑连接WiFi的时一般就是…

鸿蒙一次开发,多端部署(三)应用UX设计原则

设计原则 当为多种不同的设备开发应用时&#xff0c;有如下设计原则&#xff1a; 差异性 充分了解所要支持的设备&#xff0c;包括屏幕尺寸、交互方式、使用场景、用户人群等&#xff0c;对设备的特性进行针对性的设计。 一致性 除了要考虑每个设备的特性外&#xff0c;还…

VMD + CEEMDAN 二次分解,CNN-Transformer预测模型

往期精彩内容&#xff1a; 时序预测&#xff1a;LSTM、ARIMA、Holt-Winters、SARIMA模型的分析与比较-CSDN博客 风速预测&#xff08;一&#xff09;数据集介绍和预处理-CSDN博客 风速预测&#xff08;二&#xff09;基于Pytorch的EMD-LSTM模型-CSDN博客 风速预测&#xff…

【Excel自动化办公】使用openpyxl对Excel进行读写操作

目录 一、环境安装 1.1 创建python项目 1.2 安装openpyxl依赖 二、Excel数据读取操作 三、Excel数据写入操作 3.1 创建空白工作簿 3.2 写数据 四、设置单元格样式 4.1 字体样式 4.2 设置单元格背景填充色 4.3 设置单元格边框样式 4.4 单元格对齐方式 4.5 数据筛选…

Manga image Translator: 一键翻译各类图片内文字支持多种语言开源AI工具

项目地址&#xff1a;GitHub - zyddnys/manga-image-translator: Translate manga/image 一键翻译各类图片内文字 https://cotrans.touhou.ai/ 官方演示&#xff1a; https://touhou.ai/imgtrans/ 夸克网盘文件包下载链接&#xff1a;夸克网盘分享提取码&#xff1a;22G3 文…

基于高斯模型的运动目标检测(车辆检测),Matlab实现

博主简介&#xff1a; 专注、专一于Matlab图像处理学习、交流&#xff0c;matlab图像代码代做/项目合作可以联系&#xff08;QQ:3249726188&#xff09; 个人主页&#xff1a;Matlab_ImagePro-CSDN博客 原则&#xff1a;代码均由本人编写完成&#xff0c;非中介&#xff0c;提供…

数值分析(三) Lagrange(拉格朗日)插值法及Matlab代码实现

目录 前言一、Lagrange&#xff08;拉格朗日&#xff09;插值1. 线性插值2. 抛物插值3. 拉格朗日插值多项式 二、Lagrange插值算法及matlab代码1. Lagrange 插值算法matlab实现2 实例3. 线性插值示意图代码4. 抛物插值示意图代码 三、总结四、插值法专栏 前言 本篇为插值法专栏…

Linux学习之自定义协议

前言&#xff1a; 首先对于Tcp的socket的通信&#xff0c;我们已经大概了解了&#xff0c;但是其中其实是由一个小问题&#xff0c;我们目前是不得而知得&#xff0c;在我们客户端与服务端连接成功后&#xff0c;服务端读取来自客户端得消息&#xff0c;我们使用的是函数read,…

高通 8255 基本通信(QUP)Android侧控制方法说明

一&#xff1a;整体说明 高通8255芯片中&#xff0c;SPI IIC UART核心统一由QUP V3 进行控制 QUP V3为可编程模块&#xff0c;可以将不同通道配置为SPI IIC UART通路&#xff0c;此部分配置在QNX侧 QUP 资源可以直接被QNX使用&#xff0c;Android侧可以通过两种方法使用QUP资源…

YOLOv5-Y5周:yolo.py文件解读

本文为&#x1f517;365天深度学习训练营 中的学习记录博客 原作者&#xff1a;K同学啊|接辅导、项目定制 我的环境&#xff1a; 1.语言&#xff1a;python3.7 2.编译器&#xff1a;pycharm 3.深度学习框架Tensorflow/Pytorch 1.8.0cu111 一、代码解读 import argparse i…

idea将非UTF-8的properties修改为UTF-8编码的文件

需求背景 由于项目初始化时&#xff0c;properties文件的编码格式为ASCII编码格式&#xff0c;此时用idea打开该文件会默认展示UTF-8的编码内容&#xff0c;其中汉字可以正常展示&#xff0c;但是使用notepad打开却依旧时ASCII编码格式 idea配置 打开idea-setting-editor-f…

QT C++ QButtonGroup应用

//QT 中&#xff0c;按钮数量比较少&#xff0c;可以分别用各按钮的信号和槽处理。 //当按钮数量较多时&#xff0c;用QButtonGroup可以实现共用一个槽函数&#xff0c;批量处理&#xff0c;减少垃圾代码&#xff0c; //减少出错。 //开发平台&#xff1a;win10QT6.2.4 MSVC…