mysql入门:ddl,dml,dql,dcl语句基本操作介绍

news2024/11/30 18:50:28

mysql入门

  • 数据库相关概念介绍
      • 什么是数据库
      • sql语句简介
      • sql语句分类:
  • ddl语句:
    • ddl:数据库 库的创建查找:
      • ddl:数据库查询
      • 数据库创建
      • ddl:数据库删除
    • ddl:数据库 表 的操作
      • ddl表操作:查询
      • ddl 表操作——创建
      • mysql数据类型
      • ddl表——修改
  • dml语句
      • dml介绍:
      • insert 给表中添加数据
      • updata 修改数据
      • delete 删除数据
  • dql语句:
      • dql介绍
    • 查询关键字:
      • 基本查询分类:
      • 设置别名
      • 去除重复记录
    • dql之条件查询
    • dql之聚合函数
      • 聚合函数练习
    • 分组查询(group by)
      • where和having的区别
      • 分组查询举例:
    • 排序查询:(order by)
      • 排序查询练习
  • dcl语句:
    • dcl管理用户:
      • 1.查询用户
      • 2.创建用户
      • 修改用户密码
      • 删除用户
    • dcl语句——权限控制
      • 1.查询权限
      • 2.授予权限
      • 3.撤销权限

在这里插入图片描述

📌————本章重点————📌
🔗了解数据库的概念;
🔗掌握得到了,dml,读起来,dcl语句的基本使用;
🔗掌握具体实现细节;
🔗了解具体应用场景;
✨————————————✨

数据库相关概念介绍

什么是数据库

数据库是数据存放的仓库,用来存储要管理的事务。现在数据库也被认为是数据管理的新方法和技术,他能更方便组织数据,更新数据。

关系型数据库(robms)
建立在关系模型基础上,有一个或者多张二维表(也叫关系)连接组成,每个表格中有多个行(也称为记录)多个列(也称为字段),每个字段定义了数据库中的一种属性,基于表进行数据的存储的数据库称为关系型数据库。客户端通过数据库管理系统(dbms)来管理数据库,一个管理系统可以创建多个数据库,每一个数据库可以管理多张表。DBA是数据库管理员。

sql语句简介

sql(结构化查询) 是一种用于关系型数据库的标准化语言,用于执行各种数据库操作,例如查询、插入、更新和删除数据等,sql的通用语法,默认以分号结尾,可以多行书写 可以使用空格或缩进增加语句的可读性。 sql不区分大小写,但是关键字推荐使用大写。mysql中的注释:sql中可以使用单行注释——注释内容或者#注释内容。多行内容使用/注释内容/

sql语句分类:

ddl:数据库的 定义语言:数据库的定义,表的定义,字段的定义
dml:数据库操作语言:对于数据库表中数据的增加与删除
dql:数据可查询语言:用来查询数据库中表的记录
dcl:数据控制语言:用来创建数据库用户,控制数据库访问权限

ddl语句:

ddl:数据库 库的创建查找:

ddl:数据库查询

1.查询所有数据库

show databases

在这里插入图片描述

2.查询当前数据库

查看当前操作的数据库是哪一个,同时,我们可以使用use 关键字选择我们要使用的数据库。

select  database();

在这里插入图片描述

数据库创建

create database(if not exists)<如果不存在则创建>数据库名(default chaeset 字符集(utf8))(collate(排序规则));

1.create database text2;
在这里插入图片描述
2.
如果数据库已经存在还创建相同的数据库,则会报错,这时候我们加上if not exists则会避免报错
在这里插入图片描述

此时我们可以加上if not exists 保证创建的这个数据库之前没有创建过。

create database  if not exists  text2;

ddl:数据库删除

drop database(if exists 如果存在则删除,不存在则不操作)数据库名;
drop database text2;

数据库的使用
use 数据库名;
在这里插入图片描述
在这里插入图片描述

ddl:数据库 表 的操作

ddl表操作:查询

1.查询当前数据库中的所有表,前提要进入这个数据库

show tables

2.查询表结构

desc 表名;

在这里插入图片描述

3.查询指定表的建表语句

show create table 表名

ddl 表操作——创建

creat table 表名 ()创建表


Varchar 字符串类型 varchar(长度)
练习:将下边这个表在text数据库中创建出来:
在这里插入图片描述

create table user(
    id int comment '编号',
    name varchar(50) comment '姓名',
    age int comment '年龄',
    gender varchar(1) comment '性别'

)comment '用户表';

在这里插入图片描述

desc 表名 查看表结构
show create table 表名 查看创建表语句

mysql数据类型

在这里插入图片描述age tinyint unsigned
score double(4,1) 四代表整体长度 一代表小数长度
在这里插入图片描述

varchar会根据你存储字符串的长度进行变化,varchar的性能会比char的性能低,因为他会计算长度,所以在知道长度后建议使用char类型

这里我们举个例子:
创建一个用户名,长度不超过50位
用户名 username varchar(50) 性别 gender char(1)这里varchar的性能会比char的性能低,因为varchar需要计算你输入的长度。

日期类型:
在这里插入图片描述

注意:timestamp最长表达到2038年

练习:
更具需求创建表(设计合理到数据类型)
在这里插入图片描述

create table emp(
    id int comment '员工编号',
    workno varchar(10) comment '员工工号',
    name varchar(10) comment  '员工姓名',
    gender char(1) comment  '性别',
    age tinyint unsigned comment '年龄',
    idcard char(18) comment  '身份证号',
    entrydata date comment '入职时间'
)comment '员工表';

在这里插入图片描述

ddl表——修改

1.添加字段
alter table 表名 add 字段名 类型(长度)comment‘注释”;

alter table emp add text int comment ‘注释’;
desc emp;
在这里插入图片描述

2.修改字段
修改指定数据的类型
alter table 表名 modify 字段名 新数据类型(长度)

alter table emp modify text  char(10);
desc emp;

在这里插入图片描述

修改字段名和字段类型
alter table 表名 change 旧字段名 新字段名 类型(长度)comment’注释‘;

alter table emp change text text2 varchar(10) comment '这是一个测试';
desc emp;

在这里插入图片描述

删除字段

alter table 表名 drop 字段名;

修改表名

alter table 表名 rename to 新表名;

ddl表操作——删除

drop tableif exists)表名;

删除指定表,并重新创建该表(创建了一个相同对结构)为啥删除,就是删除数据,重新生成的表只有表头

truncate table 表名;

dml语句

dml介绍:

是对数据库中表的数据记录进行增删改操作

insert 给表中添加数据

1.给指定字段添加数据
insert into 表名 (字段名1,字段名2…)values(值1,值2…);

insert into emp2(id, workno, name, gender, age, idcard, entrydata) values (1,'001','xiaobai','男',18,'612771200307311566','2023-4-11');
select * from emp2;

在这里插入图片描述

注意:value和字段名是一一对应的;

2.给全部字段添加数据

insert 表名 values (值1,值2;

3.批量添加数据
为当前表中的指定字段进行赋值:

insert into 表名 (字段名1,字段名2...values(值1,值2...,(1,值2....),(1,值2....);

为当前表中的所有字段进行赋值: insert into 表名 values(值1,值2…),(值1,值2…),(值1,值2):

insert into emp2 values (1,'001','xiaobai','男',18,'612771200307311566','2023-4-13'),(2,'002','xiaowang','男',18,'612771200307311567','2023-4-15');

在这里插入图片描述

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

updata 修改数据

updata 表名 set 字段名1 =值1,字段名2 = 值2,…[where 条件];注意:不加where表示修改这个字段的全部数据。

update emp2 set name = 'xiaohei' where id = 1;

在这里插入图片描述

delete 删除数据

delete from 表名[where条件]

注意:
delete语句条件可以有也可以没有,如果没有的话就会删除整张表的所有数据;
delete语句不能删除某一个字段的值(可以使用update置为null)

dql语句:

dql介绍

dql是数据查询语言,用来查询表中的记录

查询关键字:

select
单表查询

select 字段列表
form 表名列表
where 条件列表
group by 分组字段列表
having 分组后条件列表
order by 排序字段列表
limit 分页参数

基本查询分类:

基本查询、条件查询、聚合函数、分组查询、排序查询、分页查询

其中select *from 表名中的 * 代表的是所有的意思,意思是查询所有字段

select 字段1,字段2,字段3....from 表名
select * from 表名

设置别名

select 字段1(as 别名1),字段2(as别名2) … from 表名; 作用:使得查询结果更直观
在这里插入图片描述

去除重复记录

select distinct 字段列表 from 表名

在这里插入图片描述

dql之条件查询

在这里插入图片描述
条件查询
1.查询年龄等于88的员工

select * from emp where age = 88;

2.查询年龄小于20的员工信息

select *from emp where age<20;

3.查询年龄小于等于20的员工信息

select *from emp where age<=20;

4.查询没有身份证号的员工信息

select *from emp where idcard is null;

5.查询有身份证号的员工信息

select *from emp where idcard is not null;

6.查询年龄不等于88的员工信息

select * from emp where age != 88;
select * from emp where age <> 88;

7.查询年龄在15岁(包含) 到20岁(包含)之间的员工信息

select * from emp where age>=15 and age<=20;
select * from emp where age>=15 && age<=20;
select * from emp where age between 15 and 20;

注意:between后边要跟小范围,and后边跟大范围;不能跟反,要不会出错
8.查询性别为女且年龄小于25岁的员工信息

select * from emp where gender  = '女' and age <25;

9.查询年龄等于18或20或40的员工信息

selecr * from emp where age = 18 or age = 20or age = 40;
select * from emp where age in (18,20,40);

10.查询姓名为两个字的员工信息

select * from name like '__';

一个下划线代表一个字符,like模糊搜索,限定多少位

11.查询身份证最后一位为x的员工信息

select * from emp where idcard like '%x'; 

上边这个表示只要数据中有任意的x就会搜索到

select * from emp where idcard like '_ 17个下划线_x';

dql之聚合函数

将一列数据作为一个整体进行纵向计算。注意,聚合函数是作用于某一列的
在这里插入图片描述
所有的null值是不计算聚合函数的。

聚合函数练习

1.统计该企业的员工数量

select count (*from emp;查询所有数据(单位:条)

或者还可以具体到每一条

select count(idcard) from emp;

2.统计该企业员工的平均年龄

select avg(age) from emp;

3.统计该企业员工的最大年龄

select max(age) from emp;

4.统计该企业员工的最小年龄

select min (age) from emp;

5.统计西安地区所有员工的年龄之和

select sum(age) from emp where workspace = '西安';

分组查询(group by)

select 字段 from 表名 (where 条件) group by 分组字段名 (having 分组后过滤条件)

注意:

where和having的区别

执行时间不同: where是分组之前进行过滤,不满足where条件,不参与分组;而having 是分组之后对结果进行过滤。
判断条件不同: where不能对聚合函数进行判断,而having可以

分组查询举例:

1.根据性别分组,统计男性员工和女性员工的数量
select gender, count(*) from emp group by gender
在这里插入图片描述

2.根据性别分组,统计男性员工和女性员工的平均年龄
select gender, avg(age) from emp group by gender ;
3.查询年龄小于45的员工,并根据工作地址分组,获取员工数量大于等于3的工作地址
select workaddress,count(* ) address_count from emp where age<45 group by workaddress having count(*)>=3;

注意:
执行顺序:where>聚合函数>having
分组之后,查询字段一般为聚合函数和分组字段,查询其他字段无任何意义。

排序查询:(order by)

语法:

select 字段列表 from 表名 order by 字段1 排序方法1,字段2 排序方法;

排序方式:
asc:升序(默认)
desc:降序

注意:如果是多个字段排序,当第一个字段相同时,才会根据第二个字段进行排序。

排序查询练习

1.根据年龄对公司的员工进行升序排序

select * from emp order by age ace;

2.根据入职时间,对员工进行降序排序

select * from emp order by worktime desc;

3.根据年龄对公司的员工进行升序挂序,年龄相同,再按照入职时间进行降序排序

select * from emp order by age ace,worktime desc;

分页查询:

select 字段列表 from 表名 limit 起始索引,查询记录数;

注意:
起始索引是从0开始的,起始索引 = (查询页码-1)*每页显示记录数;比如:我现在要查询的是第二页的10条数据,每页显示10条记录,则我的起始索引就是 (2-1)*10;
分页查询是数据库的方言,每个数据库有不同的实现方式,mysql中使用的是limit
如果查询的是第一页的数据,起始索引可以省略,直接写为limit 查询记录数;

举例:
1.查询第一页员工的数据,每页展示10条数据

select * from emp limit 0,10;

2.查询第二页员工数据,每页展示10条数据

select * from emp limit 10.10;

dcl语句:

dcl:数据控制语言,用来管理数据库用户、控制数据库的访问权限

dcl管理用户:

1.查询用户

用户信息都是存放在mysql中的user表中,所以我们可以查询数据库中的user表来查看用户信息。
use mysql;
select * from user;
在这里插入图片描述

2.创建用户

creat user '用户名'@'主机名' identfied by '密码';

创建一个用户itcast

create user 'itcast' @ 'localhost' identified by '123123'

这时候我们刷新一下用户表会发现我们的itcast这个用户已经创建完成了,我们发现他的权限基本都是N
在这里插入图片描述

这时候我们使用cmd命令登入查看该用户下的数据库,我们会发现,当前用户下只有俩个数据库,和root用户下比少了很多,即它没有访问其他用户的权限
在这里插入图片描述
我们目前创建的这个这个用户只能在本机上进行访问,如果我们想在任意主机上进行访问该怎么办呢?
我们只需要将== localhost 换成通配符 % ==

create user 'xiaowang' @ '%' identified by '123123';

在这里插入图片描述

修改用户密码

alter user '用户名'@'主机名' idetified with mysql_native_password by '新密码';

其中:mysql_native_password是一种mysql的加密方式,mysql_native_password 是 MySQL 中用于身份验证的默认密码策略。它使用 MySQL 服务器上的密码进行加密来验证用户的身份。

alter user 'xiaowang'@'%' identified with mysql_native_password by '123456';

这时候我们通过exit推出数据库后重新登入xiaowang用户检查密码是否修改完成

删除用户

drop user 'itcast'@'localhost';

以上介绍的sql开发人员使用的比较少,主要是dba(数据库管理员)使用。

dcl语句——权限控制

我们在刚刚创建了用户之后发现我们的用户不能访问其他数据库,这就是我们没有对其进行权限配置,接下来就让我们学习以下权限控制。
我们这里介绍常用的一些权限:

在这里插入图片描述
主要介绍以下三种使用:

1.查询权限

show crant for ‘用户名’@‘主机名’;

在这里插入图片描述

2.授予权限

grant 权限列表 on 数据库名.表名 to ‘用户名’@‘主机名’;

grant all on study.* to ‘xiaowang’@‘%’;
在这里插入图片描述

3.撤销权限

revoke 权限列表 on 数据库名.表名 from ‘用户名’@‘主机名’;

在这里插入图片描述

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

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

相关文章

数据库管理工具【dbForge Tools for Oracle】更新!赶快来看~

Devart 提供包括Oracle、SQL Server、MySQL、PostgreSQL、InterBase以及Firebird在内的专业数据库远程管理软件&#xff0c;dbForge Studio for MySQL是一个在Windows平台被广泛使用的MySQL客户端&#xff0c;它能够使MySQL开发人员和管理人员在一个方便的环境中与他人一起完成…

SpringBoot——整合MyBatis

前情回顾&#xff1a; 在开始介绍SpringBoot整合MyBatis之前&#xff0c;我们先来复习一下在Spring中整合MyBaits是如何来做的。其中的核心思想是将MyBatis中的SqlSession对象交给Spring去管理&#xff0c;并且Spring提供了一个Maper接口扫描器对象去完成为Mapper接口创建动态…

Java 中常见的加密算法,DES、3DES、AES、RSA

加密算法是一种将数据转换为不可读形式的算法&#xff0c;以保护数据的机密性和完整性。加密算法被广泛应用于计算机网络、数据库、电子商务等领域&#xff0c;用于保护敏感数据的安全性&#xff0c;如用户密码、信用卡信息、医疗记录等。在 Java 中&#xff0c;有许多常见的加…

【GigaGAN论文总结】Scaling up GANs for Text-to-Image Synthesis

【GigaGAN论文总结】Scaling up GANs for Text-to-Image Synthesis 1、论点2、贡献3、方法概览Sample-adaptive kernel selectionInterleaving attention with convolutionGenerator designDiscriminator designMulti-scale input, multi-scale output adversarial lossMatchin…

高性能ADC/DAC FMC子卡推出-FMC164

FMC164 子卡集成 4 通道 1Gsps 采样率&#xff0c;16 位 高性能ADC采样&#xff0c;板载4 通道1.25Gsps 16 位DA。板载时钟芯片 HMC7044&#xff0c;可以提供 JESD204B所需要的各种时钟。具有同步/触发功能&#xff0c;模拟信号采用 SSMC 射频连接器输入和输出。板载时钟芯片为…

ant-design实现树的穿梭框,穿梭后右侧是已选树(二)

根据上一篇目标一&#xff0c;进一步实现树的穿梭框 主要内容: 基于ant-design树的穿梭框&#xff0c;实现穿梭后右侧是已选树&#xff0c;&#xff08;当前antd右侧只有一个层级&#xff09; 理想的树的穿梭框&#xff1a; 左边是完整的树&#xff0c;右边是已选的树&#x…

Java面试知识点(全)- DB mysql面试知识点

[Java面试知识点(全) 导航&#xff1a; https://nanxiang.blog.csdn.net/article/details/130640392 注&#xff1a;随时更新 SQL优化 r m y s q l q u e r y ( " S E L E C T u s e r n a m e F R O M u s e r W H E R E s i g n u p d a t e > ′ r mysql_query(…

美国原油CFD价格波动受到哪些因素影响?

经过多年的发展&#xff0c;石油技术已经从煤炭转向原油作为主要能源&#xff0c;这种商品用于各种产品&#xff0c;包括汽油、塑料、药品等。因此&#xff0c;它的价值很高&#xff0c;美国原油CFD价格变动时全世界都在关注。对于交易者来说&#xff0c;美国原油CFD价格波动性…

从零开始Vue3+Element Plus的后台管理系统(五)——尝试多种图标ICON方案iconify

iconfont是过去使用较多的图标方案&#xff0c;后来更倾向于使用SVG&#xff0c;因为SVG更灵活兼容性更好。在最近的几个Vue2项目中&#xff0c;因为强调功能弱化设计所以直接用Element UI自带的图标即可满足需求。 Element Plus的图标库相对Element UI更加丰富&#xff0c;然…

flac格式如何转mp3?这几种方法快收藏起来吧

将FLAC格式转换为MP3格式&#xff0c;可以使用一些转换工具&#xff0c;如优速音频处理器等&#xff0c;也可以使用其他专业音频转换软件。FLAC是一种无损音频编码格式&#xff0c;通常用于保留原始音频质量&#xff0c;但相应的文件大小较大。而MP3是一种有损压缩音频编码格式…

MFC类继承实现CEdit自绘文字颜色,边框,背景色

效果 新建一个继承于CEdit的类CMyEdit 在他的窗体OnNcPaint函数中实现绘制边框,它所响应的消息是WM_NCPAINT void CMyEdit::OnNcPaint() {// TODO: 在此处添加消息处理程序代码// 不为绘图消息调用 CEdit::OnNcPaint()////执行默认的窗体处理过程Default();

linux环境安装使用FastDFS,FastDHT详解

01-简介 GitHub&#xff1a;happyfish100 (YuQing) GitHub FastDFS高性能的分布式文件系统&#xff0c;主要功能包含文件的存储、同步、访问&#xff08;上传和下载&#xff09;&#xff0c;特别适用于以文件为主体的网络站点&#xff08;图片分享和视频分享&#xff09;。 Fa…

2023年Java面试正确姿势(1000+面试题附答案解析)

前言 2023 跳槽不迷茫&#xff0c;大家可以先收藏再看&#xff0c;后续跳槽都能用上的&#xff01; 一键获取最新java文档。 Java程序员绝大部分工作的时间都是增删改查&#xff0c;很多人觉得这项工作没什么技术含量&#xff0c;任何一件事情都要站在不同的角度去考虑&#xf…

shell的数组

数组定义方法 方法一&#xff1a;数组名&#xff08; value0 value1 value2 ...&#xff09; 方法二&#xff1a;数组名&#xff08;[0]value [1]value [2]value...&#xff09; 方法三&#xff1a;列表名"value0 value1 value2 ..." 数组名&#xff08;$列表名&…

【WLAN从入门到精通-基础篇】

WLAN定义和基本架构 本文参考https://forum.huawei.com/enterprise/zh/thread/580888898454831104 1. WLAN定义 WLAN的全称是Wireless Local Area Network&#xff0c;中文含义是无线局域网&#xff0c;WLAN的定义有广义和狭义两种&#xff1a;广义上讲WLAN是以各种无线电波…

使用Kotlin函数式编程技术构建强大的 Android 应用程序

使用Kotlin函数式编程技术构建强大的 Android 应用程序 Kotlin 是一种现代的多用途编程语言&#xff0c;在 Android 应用程序开发人员中迅速流行起来。Kotlin 有别于其他编程语言的关键特性之一是它对函数式编程的强大支持。Kotlin 函数式编程允许开发人员编写更清晰、更简洁、…

本地生活服务:老将、新秀同台竞技

配图来自Canva可画 本地生活服务领域又热闹起来了。 事实上&#xff0c;本地生活服务一直为各路玩家所看好。最近几年&#xff0c;互联网大厂频频布局本地生活服务领域&#xff0c;其中抖音、快手等短视频平台更是持续加大在本地生活服务领域的布局力度。 前不久&#xff0c…

Grafana系列-统一展示-10-Explore Jaeger

系列文章 Grafana 系列文章 Explore Jaeger 你可以通过Explore查询和显示 Jaeger 的 trace。有 3 种方法: Query by searchQuery by trace IDUpload a JSON trace file Query by search 要使用该方法: 从 Query 类型选择器中选择 Search。填写搜索表格&#xff1a;(和 J…

2023第十三届中国数字营销与电商创新峰会 嘉宾揭晓

2023第十三届中国数字营销与电商创新峰会将于7月6日-7日在上海召开。 本次峰会将通过七大热点主题帮助品牌主突破模式能力&#xff0c;回归初心、精耕细作&#xff0c;实现可持续增长&#xff1b;提升产品能力&#xff0c;实现可持续长期增长&#xff1b;优化营销能力&#xf…

HTTP第11讲——HTTP的特点

灵活可扩展 首先&#xff0c; HTTP 协议是一个“灵活可扩展”的传输协议。 HTTP 协议最初诞生的时候就比较简单&#xff0c;本着开放的精神只规定了报文的基本格式&#xff0c;比如用空格分隔单词&#xff0c;用换行分隔字段&#xff0c;“headerbody”等&#xff0c;报文里的…