关系型数据库mysql(2)SQL语句

目录

一.SQL语句简介

1.1SQL语言

1.2SQL语句分类

1.3SQL分类

1.4SQL 语言规范

二.数据库基本操作

2.1查看数据库中的库信息

2.2查看数据库中的表信息

数据库内查看

数据库外查看

2.3显示数据库的结构(字段)

​编辑

2.4 字段属性

2.5常见的数据类型

2.6 char 和 varchar 的区别

 三.数据库管理(增删改查)

3.1数据库的创建

3.2表的创建

3.3插入数据

 3.4 查找数据库表中的数据

3.5修改表中的数据 

3.6删除表中的数据

 危险:删除一定要加条件,不然会删除整个表!!!

 3.7删除指定的表

3.8 删除指定的库 

四. 表结构的管理

4.1 修改表名

4.2 扩展表结构(增加字段) 

 4.3 修改字段名,添加唯一键 change

​编辑 4.4 删除字段 drop


一.SQL语句简介

1.1SQL语言

  • Structured Query Language的缩写,即结构化查询语言
  • 关系型数据库的标准语言
  • 用于维护管理数据库
  • 包括数据查询,数据更新,访问控制,对象管理等功能

1.2SQL语句分类

  • DDL:数据定义语言

用于创建数据库对象,如库、表、索引等。

例如:CREATE,DROP,ALTER 等

  • DML:数据操纵语言

用于对表中的数据进行管理。

例如: SELECT、UPDATE、INSERT、DELETE 等。

  • DQL:数据查询语言

于从数据表中查找符合条件的数据记录。

例如: SELECT

  • DCL:数据控制语言

用于设置或者更改数据库用户或角色权限

例如: GRANT,REVOKE

1.3SQL分类

  • 数据库:database

  • 表:table,行:row 列:column

  • 索引:index

  • 视图:view

  • 存储过程:procedure

  • 存储函数:function

  • 触发器:trigger

  • 事件调度器:event scheduler,任务计划

  • 用户:user

  • 权限:privilege

1.4SQL 语言规范

  • 在数据库系统中,SQL 语句不区分大小写,建议用大写

  • SQL语句可单行或多行书写,默认以 " ; " 结尾

  • 关键词不能跨多行或简写

  • 用空格和TAB 缩进来提高语句的可读性

  • 子句通常位于独立行,便于编辑,提高可读性

二.数据库基本操作

2.1查看数据库中的库信息

show databases

 

2.2查看数据库中的表信息

数据库内查看
use 数据库名
show tables

数据库外查看
show tables from 数据库名

 

库外查看要指定具体的数据库名

2.3显示数据库的结构(字段)

describe [数据库名]表名、


可缩写成:  desc [数据库名.]表名;

由于屏幕占比问题与字段数量问题,会导致有些表结构的效果呈现并不好。(默认查看为横向的查看 ) 

desc  表名\G;

2.4 字段属性

 Field:字段名称
type:数据类型
Null :是否允许为空
Key :主键
Type:数据类型
Null :是否允许为空
key :主键
Default :默认值
Extra :扩展属性,例如:标志符列(标识了种子,增量/步长)1 2
id:1 3 5 7

2.5常见的数据类型

类型说明
int整型,用于定义整数类型的数据
fload单精度浮点4字节32位,准确表示到小数点后六位
double双精度浮点8字节64位
char固定长度的字符类型,用于定义字符类型数据。
varchar可变长度的字符类型
text文本
image图片
decimal(5,2)5个有效长度数字,小数点后面有2位。指定长度数组

2.6 char 和 varchar 的区别

CHAR(4)存储需求VARCHAR(4)存储需求
''' '4个字节''1个字节
'ab''ab '4个字节'ab '3个字节
'abcd''abcd'4个字节'abcd'5个字节
abcdefgh''abcd'4个字节'abcd'5个字节

char

char的长度是不可变。char如果存入数据的实际长度比指定长度要小 会补空格至指定长度 如果存入的数据的实际长度大于指定长度,低版本会被截取高版本会报错。

varchar

varchar长度是可变的,默认会加一个隐藏的结束符,因此结束符会多算一个字节。

对比

  • varchar比char节省磁盘空间。
  • 但varchar类型的数据读写速度比char慢,因为char是连续的磁盘空间,而varchar在多次增删改查中会产生一些磁盘空间碎片

 三.数据库管理(增删改查)

3.1数据库的创建

create database dashuju;

3.2表的创建

#格式
 CREATE TABLE 表名(字段1 数据类型,字段2 数据类型[,...] [,PRIMARY KEY (主键名)]);
 
create table class (id int not null,name char(15) not null,score decimal(4,2),passwd char(45) default'',primary key (id));
 
#解释
id 字段:这是一个整数类型(int)字段,标记为"not null",表示该字段不允许存储NULL值。同时,它被指定为主键(primary key),这意味着每一行的id字段值必须是唯一的,通常用于唯一标识表中的每一条记录。
 
name 字段:这是一个固定长度字符类型(char(15))字段,同样不允许存储NULL值。这意味着每个name字段的值必须是一个最多包含15个字符的字符串,若实际输入的字符数少于15个,剩余部分会被填充为空格以达到15个字符的长度。
 
score 字段:这是一个十进制类型(decimal(4,2))字段,用于存储带小数点的分数。"(4,2)"表示该字段可以存储最大共4位数字,其中包含2位小数,例如0.00到999.99之间的数值。
 
passwd 字段:这是一个固定长度字符类型(char(45))字段,用于存储密码信息,默认值(default)被设置为空字符串('')。这意味着如果没有为passwd字段提供值,它将自动填充一个空字符串。
 
当这条SQL语句被执行后,数据库中将创建一个名为class的表,包含id、name、score和passwd这四个字段。
 
 
 

主键:共同点:字段的值都是唯一的,不允许有重复值。 

3.3插入数据

方式一:指定字段插入数据

​#为指定字段插入值
 
INSERT INTO 表名(字段1,字段2[,...]) VALUES (字段1的值,字段2的值,...);    
#注意字段的属性not null,则必须为该字段插入值
insert into class (id,name,score,passwd) values(1,'张三',90,PASSWORD('123456'));

 大写的PASSWORD表明用密文表示

如果不加 PASSWORD,直接按照字段顺序插入 

为所有字段插入值
insert into 表名 values (所有字段的值);   
#每个字段值用逗号相隔;

这时密码由明文表示 

 3.4 查找数据库表中的数据

 SELECT * FROM 表名;      #查询表中所有记录
 ​
 #按条件查找数据记录,且只显示指定字段的值
 SELECT 字段名1,字段名2[,...] FROM 表名 [WHERE 条件表达式];
 ​
 #mysql的分页语句:
 select * from 表名 limit 2; 
 
 select * from 表名 limit 2,3;       
#显示第2行后的前3行(即显示第3~5行)

显示class表中的所有信息 

 

显示表中name=lisi的信息 (附带条件)

 显示表中id=2的信息 (附带条件)

 显示class表中第一行的信息

 

显示ky35表中第一行后的前两行,即显示2和3行 

3.5修改表中的数据 

UPDATE 表名 SET 字段名1=字段值1[,字段名2=字段值2] [WHERE 条件表达式];

 #如若不指定条件 那么修改更新的数据信息就是数据表中所有信息

#将数据表ky35中所有score字段都修改为90

#where代表条件判断 更新ky35数据表中的score段 id为2的用户信息的score字段修改为92

3.6删除表中的数据

 DELETE FROM 表名 [WHERE 条件表达式];     #删除一定要加条件,不然会删除整个表

 危险:删除一定要加条件,不然会删除整个表!!!

指定条件删除ky35表中id=2的数据 

 不加条件就是删除整个表,切勿删库

 3.7删除指定的表

DROP TABLE 数据库名.表名;
或
USE 库名;
DROP TABLE 表名;

删除了大数据库中的class表

3.8删除指定的库 

DROP DATABASE 数据库名;

删除了大数据库

四. 表结构的管理

4.1 修改表名

 ALTER TABLE 旧表名 RENAME 新表名

将原先的表ky35改名为ky36

4.2 扩展表结构(增加字段) 

 ALTER TABLE 表名 ADD 字段名 数据类型;

#修改数据表ky36内容 新增Phone的数据列 字段字节长度为11位 默认值为15252526801

 

 alter table ky36 add Phone varchar(11) default '15252526801';后还可以跟约束 例如not null为非空

 4.3 修改字段名,添加唯一键 change

 ALTER TABLE 表名 CHANGE 旧字段名 新字段名 [数据类型] [约束];

 

修改phone为num,并更换数据类型和添加约束 

 4.4 删除字段 drop

 ALTER TABLE 表名 DROP 字段名;

删除指定字段num 

4.5 克隆表

方式一:like方法
create table 新表名 like 旧表名;
#通过LIKE方法,复制旧表的结构生成新表
 
insert into 新表名 (select * from 旧表名);     
#再将旧表数据导入新表

 将ky36复制到ky37

 

这时我们可以查看到ky37和ky36的结构一样 

将源表ky36的数据导入到ky37中 

方式二:Show create table方法
 create table 新表名 (select * from 旧表名);

 

和方法一对比,方法二并不能保持原有表的结构 

区别

第一种 迁移表  表的结构、属性、约束、数据都有

第二种  备份数据 表的复制内容(数据)

如果想将数据迁移到其他地方使用Like备份方法;

如果想只备份数据的内容可以使用第二种方法。

4.6临时表

临时建立的表,用于保存一些临时数据,不会长期存在(下次重新进入数据库即不存在)

如果在退出连接之前,也可以可执行增删改查等操作,比如使用DROP TABLE语句手动直接删除临时表。

CREATE TEMPORARY TABLE 表名(字段1 数据类型,字段2 数据类型[, ...] [, PRIMARY KEY (主键名)]);

临时表创建和正常表格一样

create temporary table class1 (id int(6) zerofill primary key auto_increment,name varchar(20) not null,cardid int(18) not null unique key,hobby varchar(30),haoma int(11));
 
#解释
这条SQL语句用于创建一个临时表class1,临时表只在当前会话期间存在,会话结束后自动删除。临时表的具体结构如下:
 
id 字段:整数类型(int),设置了宽度为6且自动填充零(zerofill),这意味着即使实际值小于6位数,也会在其前面填充零以使总长度达到6位。同时,该字段被定义为主键(primary key)和自动递增(auto_increment),这意味着每当插入新行时,id字段的值会自动加1,且每一行的id值在整个临时表中必须是唯一的。
 
name 字段:变长字符串类型(varchar(20)),不允许存储NULL值(not null),最多可存储20个字符长度的字符串。
 
cardid 字段:整数类型(int),宽度为18,也不允许存储NULL值。该字段还被定义为唯一键(unique key),即在cardid列中的所有值必须独一无二,不可重复。
 
hobby 字段:变长字符串类型(varchar(30)),可以存储最多30个字符长度的兴趣爱好描述,允许存储NULL值。
 
haoma 字段:整数类型(int),宽度为11,可以存储不超过11位的整数电话号码,允许存储NULL值。
 
执行这条SQL语句后,将在当前数据库会话中创建一个临时表class1,具备上述五个字段和相应的约束条件。

 

建好临时表class1却看不到 

 

可以查询出临时表class1

插入数据 

退出mysql后重新登陆 

 

这时再查询时,会发现临时表已经被释放了,因为临时表是存在内存中的,一旦推出就会被释放 

 4.7清除表的三种方式

delete清空 
 delete from 表名;
truncate清空 
 truncate table 表名;  
drop清空 
drop table 表名;  
区别

delete 清空属于按照行清空,一行一行进行,效率低,速度慢(对于表数据较多的情况) truncate 相当于删除表数据,保留表结构,重新创建一个与原表结构相同的表 

当数据表中有自增型约束字段时,delete 清除表数据后,在插入数据时,自增字段的数值会接着被删除表数据的最后一个自增数,计数。(eg:被删除表数据最后一行id(自增),为10,再创建时,该id从11开始)。truncate 清空后,自增型字段会从1开始计数。

当不再需要一张表的时候使用Drop;想保留部分数据的时候使用Delete,并且带上Where语句;保留表而删除所有数据的时候用Truncate 

五.数据库用户管理 

5.1. 登录用户的管理

明文密码创建用户格式:


CREATE USER '用户名'@'来源地址' [IDENTIFIED BY [PASSWORD] '密码'];
  • 来源地址:可以指定为localhost本机,也可以指定%(代表任意地址),或者指定为192.168.241.%(代表192.168.241网段的主机都可以登录)
  • IDENTIFIED BY:不能省略,如果省略,用户密码将为空(不建议使用)
  • 密码:若使用明文密码,直接输入密码即可,键入到数据库中数据库会自动加密;若使用加密密码,需要先使用Select PASSWORD('密码')命令,来获取加密密码,再将获取到的加密密码添加到PASSWORD中

新建一个用户名为zk,地址为本机,密码为123的用户

加密密码创建用户:

 SELECT PASSWORD('密码');    #先获取加密的密码
 ​
 CREATE USER 'zk1'@'localhost' IDENTIFIED BY PASSWORD '加密的密码';

查看用户信息,创建后的用户保存在mysql数据库的user表里

use mysql;
 
select user,authentication_string,Host from user;

 

5.2查看用户密码的信息

用户信息存放在 mysql 数据库下的 user 表(MySQL 服务下存在一个系统自带的 mysql 数据库)。

 

找到了我们创建的用户zk,并且发现他的密码自动生成了密文 

5.3  登录用户用户名的更改 (重命名)

rename user 'zk'@'locahost' to 'zk2'@'localhost'

 

 

5.4修改用户密码

 set password = password('123');

 5.5删除登录用户

drop user 'zk2'@'localhost';

5.6 修改其他用户密码 

set password for 'zk1'@'localhost' = password('123456');

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

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

相关文章

音频和视频标签

音频用audio标签 controls表示控制栏 loop循环播放音频 autoplay自动播放&#xff08;浏览器基于隐私一般不支持&#xff09; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Com…

sonar接入maven项目

1、介绍 sonar是一款静态代码质量分析工具&#xff0c;支持Java、Python、PHP、JavaScript、CSS等25种以上的语言&#xff0c;而且能够集成在IDE、Jenkins、Git等服务中&#xff0c;方便随时查看代码质量分析报告。他有如下特性 (1) 检查代码是否遵循编程标准&#xff1a;如命…

[BT]BUUCTF刷题第2天(3.20)

第2天&#xff08;共5题&#xff09; Web [ACTF2020 新生赛]Exec Payload&#xff1a;target127.0.0.1;cat /flag 分号;在许多shell中用作命令分隔符&#xff0c;意味着在执行完前一个命令&#xff08;这里是设置target变量&#xff09;后&#xff0c;接着执行cat /flag命令…

Spark-Scala语言实战(4)

在之前的文章中&#xff0c;我们学习了如何在scala中定义无参&#xff0c;带参以及匿名函数。想了解的朋友可以查看这篇文章。同时&#xff0c;希望我的文章能帮助到你&#xff0c;如果觉得我的文章写的不错&#xff0c;请留下你宝贵的点赞&#xff0c;谢谢。 Spark-Scala语言…

IDEA 下载依赖包源码报错 Cannot download sources Sources not found for:XXX

最近在做一个功能的时候想看一个库的源码&#xff0c;结果源码下不下来&#xff0c;报Cannot download sources Sources not found for:XXX,网上搜了半天&#xff0c;也找不到靠谱的结论 后来想了下&#xff0c;应该是镜像那边出了问题&#xff0c;把镜像一删&#xff0c;源码…

航空实时监控

1、从Kafka中读取飞机数据&#xff0c;并进行清洗 此步骤在前面的“使用Spark清洗统计业务数据并保存到数据库中”任务阶段应该已经完成。如果没有完成&#xff0c;请参考源代码自行完成。核心类主要有三个&#xff1a;SparkStreamingApplication类、SparkUtil类和MapManager类…

免费PDF转换和编辑工具 PDFgear 2.1.4

PDFgear是一款功能强大的 PDF 阅读及转换软件。 它支持多种文件格式的转换和编辑&#xff0c;同时还提供了丰富的功能模块&#xff0c;如签名、表单填写等&#xff0c;方便用户进行多样化的操作。 该软件界面简洁美观&#xff0c;操作简单易懂&#xff0c;适合不同层次的用户…

从零到一构建短链接系统(八)

1.git上传远程仓库&#xff08;现在才想起来&#xff09; git init git add . git commit -m "first commit" git remote add origin OLiyscxm/shortlink git push -u origin "master" 2.开发全局异常拦截器之后就可以简化UserController 拦截器可以…

ASP .Net Core 配置集合 IConfiguration 的使用

&#x1f433;简介 IConfiguration 是 ASP.NET Core 中的一个接口&#xff0c;用于表示配置集合。以下是关于 IConfiguration 的详细介绍&#xff1a; 作用&#xff1a;IConfiguration 允许开发人员从各种来源&#xff08;如文件、环境变量、命令行参数等&#xff09;读取应用…

linux 命令笔记:gpustat

1 命令介绍 gpustat是一个基于Python的命令行工具&#xff0c;它提供了一种快速、简洁的方式来查看GPU的状态和使用情况它是nvidia-smi工具的一个封装&#xff0c;旨在以更友好和易于阅读的格式显示GPU信息。gpustat不仅显示基本的GPU状态&#xff08;如温度、GPU利用率和内存…

软考高级:软件架构风格-虚拟机风格概念和例题

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;大厂高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

ubuntu部署wireguard服务端,ubuntu部署wireguard客户端

docker部署方式 docker run -d \--namewg-easy \-e WG_HOST6.6.6.6服务端IP \-e PASSWORD123abc登陆管理密码 \-e WG_DEFAULT_ADDRESS10.0.8.x客户端 IP 地址范围 \-e WG_DEFAULT_DNS1.1.1.1配置dns \-e WG_ALLOWED_IPS10.0.8.0/24 \-e WG_PERSISTENT_KEEPALIVE25 \-v ~/.wg-e…

汽车KL15、KL30、ACC的区别

文章目录 前言一、KL30是什么&#xff1f;二、KL15是什么&#xff1f;KL15信号的演变 三、为啥用KL15、KL30呢&#xff1f; 前言 相信刚接触汽车电子的伙伴都会有一个疑惑&#xff0c;什么是KL15?什么是KL30? 内心一脸懵逼…… KL是德语Klemme的缩写&#xff0c;指的是ECU的…

【ChatGLM3-6B】本地大模型使用方法详细教程!!!内含详细的代码解析!!

ChatGLM3介绍 ChatGLM3 是智谱AI与清华大学KEG实验室联合发布的新一代对话预训练模型。 ChatGLM3-6B 的基础模型 ChatGLM3-6B-Base 采用了更多样的训练数据、更充分的训练步数和更合理的训练策略。在语义、数学、推理、代码、知识等不同角度的数据集上测评显示&#xff0c;Ch…

Day62:WEB攻防-PHP反序列化CLI框架类PHPGGC生成器TPYiiLaravel等利用

目录 反序列化链项目-PHPGGC&NotSoSecure NotSoSecure(综合类) PHPGGC(单项类) 反序列化框架利用-ThinkPHP&Yii&Laravel [安洵杯 2019]iamthinking Thinkphp V6.0.X 反序列化 CTFSHOW 反序列化 267 Yii2反序列化 CTFSHOW 反序列化 271 Laravel反序列化 知识…

[Qt学习笔记]Qt使用MFC编译生成dll库在无编程环境电脑出现无法加载dll的问题

目录 1、 问题介绍2、 问题分析3、 问题总结和思考 1、 问题介绍 在项目实践中&#xff0c;使用Qt调用了一个vs创建的dll库&#xff0c;在本机上编译和release后的exe可以加载对应的dll文件&#xff0c;将exe拷贝到有vs编程环境的电脑上也可以加载对应的dll文件&#xff0c;但…

Maven Deploy测试

文章目录 Maven环境deployreleaseRepo Manager演示 RefFAQ Maven 环境 jdk8maven v3.9.5 deploy mvn install将jar存到localRepository&#xff0c;mvn deploy把jar推送到远程仓库&#xff0c;然后可以像central库那样下载依赖。 release 基于git执行项目发版流程&#x…

ab (Apache benchmark) - 压力/性能测试工具

Apache benchmark&#xff08;ab&#xff09; 安装window安装使用方法 - bin目录运行使用方法 - 任意目录运行 linux安装 基本命令介绍常用参数:输出结果分析&#xff1a; ab的man手册 安装 window安装 官网下载链接&#xff1a;https://www.apachehaus.com/cgi-bin/download…

鸿蒙Harmony应用开发—ArkTS-高级组件:@ohos.arkui.advanced.Chip(操作块组件)

操作块&#xff0c;用于搜索框历史记录或者邮件发送列表等场景。 说明&#xff1a; 该组件从API Version 11开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 无 Chip Chip({options:ChipOptions}) 装饰器类型&#xff1a;Builde…

软考高级:软件架构风格-数据流风格概念和例题

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;大厂高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《Effective Java》独家解析》专栏作者。 热门文章推荐&am…