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 条记录

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux源码包安装

目录 一、transmission源码包安装 二、 nginx源码包安装 一、transmission源码包安装 1、下载编译环境所需的软件包依赖 2、下载transmision源码包到用户主目录下 https://github.com/transmission/transmission/releases/download/4.0.5/transmission-4.0.5.tar.xz 3、解压…

支持度和置信度

支持度和置信度是数据挖掘和关联规则挖掘领域中常用的两个指标&#xff0c;用于衡量项集之间的关联程度。 支持度&#xff08;Support&#xff09;&#xff1a;支持度是指某个项集在数据集中出现的频率&#xff0c;即该项集在数据集中出现的次数与总事务数之比。支持度用来衡量…

Qt 利用共享内存实现一次只能启动一个程序(单实例运行)

Qt 利用共享内存实现一次只能启动一个程序 文章目录 Qt 利用共享内存实现一次只能启动一个程序摘要利用共享内存实现一次只能启动一个程序示例代码 关键字&#xff1a; Qt、 unique、 单一、 QSharedMemory、 共享内存 摘要 今天接着在公司搞我的屎山代码&#xff0c;按照…

数学建模(层次分析法 python代码 案例)

目录 介绍&#xff1a; 模板&#xff1a; 例题&#xff1a;从景色、花费、饮食&#xff0c;男女比例四个方面去选取目的地 准则重要性矩阵&#xff1a; 每个准则的方案矩阵&#xff1a;​ 一致性检验&#xff1a; 特征值法求权值&#xff1a; 完整代码&#xff1a; 运行结…

基于ssm新生报到系统论文

摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对新生报到信息管理混乱&#xff0c;出错率高&#xff0c;信息安全性差…

containerd源代码分析: 整体架构

本文从代码的大的整体组织上来熟悉containerd项目 containerd项目总的说是一个cs模式的原生控制台程序组。containerd作为服务端来接收处理client的各种请求&#xff0c;如常用的拉取推送镜像&#xff0c;创建查询停止容器&#xff0c;生成快照&#xff0c;发送消息等。client/…

About Online Taxis

About Online Taxis 关于网络预约出租汽车&#xff08;网约车&#xff09; 1&#xff09;网络预约出租汽车 驾驶员证&#xff08;人证&#xff09; 2&#xff09;网络预约出租汽车 运输证&#xff08;车证&#xff09; 民之苦已久......

【PHP】通过PHP安装数据库并使数据初始化

一、前言 有些CMS在部署的时候不用使用数据库工具&#xff0c;而是通过数据库安装页面就能完成数据库创建和数据填充&#xff0c;所以自己就想动手做一个这样的功能&#xff0c;这样在给别人安装系统的时候就不用再那么麻烦了&#xff0c;直接一键安装解决了。 二、效果图 输…

jupyter notebook使用教程

首先是打开jupyter notebook 下载安装好之后&#xff0c;直接在命令行中输入‘jupyter notebook’即可跳转到对应页面 还可以进入想要打开的文件夹&#xff0c;然后再文件夹中打开中断&#xff0c;执行‘jupyter notebook’命令&#xff0c;就能够打开对应文件界面的jupyter …

iOS模拟器 Unable to boot the Simulator —— Ficow笔记

本文首发于 Ficow Shen’s Blog&#xff0c;原文地址&#xff1a; iOS模拟器 Unable to boot the Simulator —— Ficow笔记。 内容概览 前言终结模拟器进程命令行改权限清除模拟器缓存总结 前言 iOS模拟器和Xcode一样不靠谱&#xff0c;问题也不少。&#x1f602; 那就有病治…

时序预测 | Matlab基于BiTCN-LSTM双向时间卷积长短期记忆神经网络时间序列预测

时序预测 | Matlab基于BiTCN-LSTM双向时间卷积长短期记忆神经网络时间序列预测 目录 时序预测 | Matlab基于BiTCN-LSTM双向时间卷积长短期记忆神经网络时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab基于BiTCN-LSTM双向时间卷积长短期记忆神经网络时…

PSO-CNN-SVM,基于PSO粒子群优化算法优化卷积神经网络CNN结合支持向量机SVM数据分类(多特征输入多分类)-附代码

PSO-CNN-SVM&#xff0c;基于PSO粒子群优化算法优化卷积神经网络CNN结合支持向量机SVM数据分类 下面是一个大致的步骤&#xff1a; 数据准备&#xff1a; 准备训练集和测试集数据。对数据进行预处理&#xff0c;包括归一化、标准化等。 设计CNN模型&#xff1a; 设计合适的CNN…

vue.config.js配置项

vue.config.js配置项 vue-cli3 脚手架搭建完成后&#xff0c;项目目录中没有 vue.config.js 文件&#xff0c;需要手动创建 创建vue.config.js vue.config.js(相当于之前的webpack.config.js) 是一个可选的配置文件&#xff0c;如果项目的 (和 package.json 同级的) 根目录中存…

基于OrangePi Zero2的智能家居项目(准备阶段)

一、需求及项目准备&#xff08;前期准备&#xff09; 1、各类的需求 以及复习巩固的东西 2、系统框架图 3、硬连接线 3.1硬件准备 USB充电头&#xff08;当前实测可用&#xff1a;5V/2.5A)x1、USB转TYPE-Cx1、SU-03Tx1、烟雾报警模块x1、4路继 电器x1、 OLEDx1、 电磁锁x1&a…

【C语言】多文件编程以及static关键字

1、多文件编程 把函数声明放在头文件xxx.h中&#xff0c;在主函数中包含相应头文件在头文件对应的xxx.c中实现xxx.h声明的函数 a、主文件 #include<stdio.h> #include "MyMain.h"//需要包含头文件&#xff0c;头文件包含我们自定义的函数int main(){int num…

JWT的实现及其适用场景

官方文档 一、什么是JWT JWT&#xff08;全称JSON Web Token&#xff09;是一种开放标准&#xff08;RFC 7519&#xff09;&#xff0c;它定义了一种紧凑且自包含的方式&#xff0c;用于作为JSON对象在各方之间安全地传输信息。此信息是经过数字签名的&#xff0c;因此可以验…

分页多线程处理大批量数据

1.业务场景 因为需要从一个返利明细表中获取大量的数据&#xff0c;生成返利报告&#xff0c;耗时相对较久&#xff0c;作为后台任务执行。但是后台任务如果不用多线程处理&#xff0c;也会要很长时间才能处理完。 另外考虑到数据量大&#xff0c;不能一次查询所有数据在内存…

LaTeX论文汇报ppt模板

在 LaTeX 的 beamer 类中&#xff0c;您可以使用不同的主题和模板来创建适合论文汇报的演示文稿。以下是一个使用了比较正式的 Madrid 主题的模板&#xff0c;您可以基于这个模板进行定制和扩展&#xff0c;以满足您论文汇报的需求。当需要在ppt输入中文的时候需要将第一行中的…

北京中科富海低温科技有限公司确认出席2024第三届中国氢能国际峰会

会议背景 随着全球对清洁能源的迫切需求&#xff0c;氢能能源转型、工业应用、交通运输等方面具有广阔前景&#xff0c;氢能也成为应对气候变化的重要解决方案。根据德勤的报告显示&#xff0c;到2050年&#xff0c;绿色氢能将有1.4万亿美元市场。氢能产业的各环节的关键技术突…

大数据技术在工厂生产数字转型中的应用与价值

hello宝子们...我们是艾斯视觉擅长ui设计和前端开发10年经验&#xff01;希望我的分享能帮助到您&#xff01;如需帮助可以评论关注私信我们一起探讨&#xff01;致敬感谢感恩&#xff01; 随着大数据技术的快速发展&#xff0c;越来越多的企业开始关注并应用大数据技术&#x…