MySQL基础(DDL,DML,DQL)

news2024/11/15 23:54:23

目录

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

以上单表查询,下面多表查询:

 MYSQL多表设计,多表查询,事务,索引-CSDN博客

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

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

相关文章

win10笔记本在显示设置中不慎将主显示器禁用掉导致开机黑屏的解决方案

因为笔记本电脑的显示扩展接口有问题&#xff0c;所以在电脑开机之后&#xff0c;会误识别出几个不存在的扩展屏幕&#xff0c;所以我就想从显示设置中将这几个误识别出来的扩展屏幕禁用掉&#xff08;不然鼠标总是移动到主屏幕边界之外的地方&#xff09;&#xff0c;在显示设…

2.8、下拉刷新与上拉加载

页面的下拉刷新与上拉加载功能在移动应用中十分常见,例如,新闻页面的内容刷新和加载。这两种操作的原理都是通过响应用户的触摸事件,在顶部或者底部显示一个刷新或加载视图,完成后再将此视图隐藏。 实现思路 以下拉刷新为例,其实现主要分成三步: 监听手指按下事件,记录…

Epic LootBox Effects

Lootbox的程式化粒子效果。 为每个效果添加稀有度效果。 (常见、不常见、罕见、史诗) 产品特点 - 25个战利品箱特效,4个稀有特效(普通、罕见、稀有、史诗) -适用于2D和3D游戏。 - 适用于移动设备和台式机。 - 包括演示场景和手册。 下载:​​Unity资源商店链接资源下载链…

C++ STL- list 的使用以及练习

目录 0.引言 1. list 介绍 2. list 使用 2.1 构造函数 2.2 list iterator 的使用 3 list capacity 4. list element access 5. list modifiers 6. list 迭代器失效 7. list 与vector 对vector 8. OJ 题讲解 删除链表的倒数第 N 个节点&#xff1a; 0.引言 …

绿盟《安全知识图谱技术白皮书》.PDF

共82页&#xff0c;包含网络安全智能化发展趋势、安全知识图谱技术框架、安全知识图谱关键技术、安全知识图谱典型应用场景、安全知识图谱技术发展趋势等。 由于篇幅限制&#xff0c;仅展示部分内容 完整版图谱PDF&#xff0c;请关公号【网络安全实战】&#xff0c;后台发送“…

考研数学一——概率论真题——自我总结题型整理(总分393)

系列文章目录 终于考完研了&#xff0c;本人考的是南京航空航天大学的仪器科学与技术&#xff0c;英一数一电路&#xff0c;以下是成绩单&#xff1a; 平时习惯整理自己的学习体系&#xff0c;以下是一个记录。 其实&#xff0c;每个人都应该训练&#xff0c;看到某一类题目…

Vue2手搓级联组件

本文的布局才用了叶落风尘大佬的一片文章&#xff0c;功能是自己加的 源代码 页面部分 <div class"h-100vh grid place-items-center"><div><div class"h-455px flex flex-col border-1px border-solid border-#eee w-885px"><div cl…

洁净环境监测相关法规指南汇总

一 洁净级别确认 1. 用于生产无菌药品的洁净室和洁净空气设备如单向流系统&#xff08;UDAF&#xff09;、限制进入屏障系统&#xff08;RABS&#xff09;和隔离器&#xff0c;应根据所需环境特性进行确认。生产操作需要在适当洁净度级别的环境中进行&#xff0c;以降低粒子或…

【漏洞复现】通天星CMSV6-inspect_file-upload文件上传漏洞

免责声明&#xff1a;文章来源互联网收集整理&#xff0c;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该…

Android实现一周时间早中晚排班表

我们要做一个可以动态添加,修改一周早中晚时间排班表&#xff0c;需求图如下&#xff1a; one two 过程具体在这里不描述了&#xff0c;具体查看&#xff0c;https://github.com/yangxiansheng123/WorkingSchedule 上传数据格式&#xff1a; {"friday_plan":"…

个人周总结

个人周总结&#xff1a; 对于总体方向目标的完成&#xff0c;完成的不是很好&#xff0c;这周内的很多天都在游离&#xff0c;就是事情可能有需要做的&#xff0c;但是动力不很足&#xff0c;期间就是有点摆烂了。后面及时调整调整吧&#xff0c;有这种情况&#xff0c;一个原…

无人驾驶(移动机器人)路径规划之A star(Tie Breaker)算法及其matlab实现

在自动驾驶与移动机器人路径规划时&#xff0c;必定会用到经典的算法A star。下面是我未加入与加入Tie Breaker 的matlab实现效果。可以发现加入Tie Breaker之后效果明显改善。 目录 一、效果比较 1.未加入Tie Breaker&#xff08;黑色为障碍物&#xff0c;菱形绿色为目标点…

婴儿洗衣机有必要买吗?四大满分婴儿洗衣机入围榜单

宝宝衣服的清洗对父母来说都很重要&#xff0c;所以挑选一款适合宝宝的波轮洗衣机显得尤为重要。也许有许多人认为&#xff0c;为婴儿购买独立的洗衣机是不必要的&#xff0c;但是你是否了解呢&#xff1f;新生婴儿的肌肤要比成人更脆弱&#xff0c;更易受到感染而受到伤害&…

vue3.0 + ts + eslint报错:error Parsing error: ‘>‘ expected

eslint报错 这里加上对应的 eslint配置即可&#xff1a; parser: vue-eslint-parser, parserOptions: {parser: "typescript-eslint/parser",ecmaVersion: 2020,sourceType: module, }具体如下&#xff1a; module.exports {parser: vue-eslint-parser,parserOpti…

浏览器输入框自动填充默认样式移除

文章目录 浏览器输入框自动填充默认样式移除问题现象以及探索过程尝试代码有效关键代码&#xff08;解决方案&#xff09; 浏览器输入框自动填充默认样式移除 问题现象以及探索过程 &#xff08;在 uniapp 语法下&#xff09;本文的写法在 Edge 119.0.2151.58 (正式版本) (64 …

第九届蓝桥杯大赛个人赛省赛(软件类)真题C 语言 A 组-乘积尾零

solution 找末尾0的个数&#xff0c;即找有多少对2和5 >问题等价于寻找所给数据中&#xff0c;有多少个2和5的因子&#xff0c;较少出现的因子次数即为0的个数 #include <iostream> using namespace std; int main() {// 请在此输入您的代码printf("31");…

docker配置镜像加速后容器和镜像消失

一、问题描述 根据阿里云给docker配置镜像加速器 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-EOF {"registry-mirrors": ["https://gt6j98xi.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl rest…

大模型落地实战指南:从选择到训练,深度解析显卡选型、模型训练技、模型选择巧及AI未来展望---打造AI应用新篇章

大模型落地实战指南&#xff1a;从选择到训练&#xff0c;深度解析显卡选型、模型训练技、模型选择巧及AI未来展望—打造AI应用新篇章 0.前言大模型发展史 早期阶段&#xff08;1950s~1980s&#xff09; 在1950年代初期&#xff0c;人们开始尝试使用计算机处理自然语言文本。…

C语言:给结构体取别名的4种方法

0 前言 在进行嵌入式开发的过程中&#xff0c;我们经常会见到typedef这个关键字&#xff0c;这个关键字的作用是给现有的类型取别名&#xff0c;在实际使用过程中往往是将一个复杂的类型名取一个简单的名字&#xff0c;便于我们的使用。就像我们给很熟的人取外号一样&#xff…

对标开源3D建模软件blender,基于web提供元宇宙3D建模能力的dtns.network德塔世界是否更胜一筹?

对标开源3D建模软件blender&#xff0c;基于web提供元宇宙3D建模能力的dtns.network德塔世界是否更胜一筹&#xff1f; blender是一款优秀的3D建模开源软件&#xff0c;拥有免费开源、功能强大、渲染速度优秀的优点。而开源的dtns.network德塔世界&#xff0c;亦是专业级的元宇…