SQL【2】稍稍进阶

目录

首先,怎么安装,环境怎么调。

alter——改变(此段Al)

创建于删除数据库、表格

上一节进阶

 预设值default​编辑

关于插入顺序

有条件的删除DELETE FROM 表 WHERE 条件

多种语句组合查看

查看+排序​编辑

LIMIT 2只取前2名

where major in(期望列表) 

 关掉安全更新

 


首先,怎么安装,环境怎么调。

一个简陋的8.4.0from

安装server 以及 workbench

MySQL :: Download MySQL Community Server (Archived Versions)

alter——改变(此段Al)

在MySQL中,ALTER关键字用于修改现有数据库对象的结构,如表(TABLE)、视图(VIEW)等。通过ALTER关键字,您可以添加、删除或修改表字段,改变字段的属性,以及执行其他与表结构相关的操作。
以下是ALTER关键字的一些常见用法:
1. **添加新字段**:
```sql
ALTER TABLE table_name ADD new_column datatype;
```
2. **删除字段**:
```sql
ALTER TABLE table_name DROP COLUMN column_name;
```
3. **修改字段类型或属性**:
```sql
ALTER TABLE table_name MODIFY COLUMN column_name new_datatype;
```

```sql
ALTER TABLE table_name CHANGE COLUMN old_column new_column new_datatype;
```
4. **重命名字段**:
```sql
ALTER TABLE table_name RENAME COLUMN old_column TO new_column;
```
5. **更改表的名称**:
```sql
ALTER TABLE old_table_name RENAME TO new_table_name;
```
6. **添加索引**:
```sql
ALTER TABLE table_name ADD INDEX index_name (column_name);
```
7. **添加主键约束**:
```sql
ALTER TABLE table_name ADD PRIMARY KEY (column_name);
```
8. **添加外键约束**:
```sql
ALTER TABLE table_name ADD FOREIGN KEY (column_name) REFERENCES other_table(other_column);
```
9. **添加唯一性约束**:
```sql
ALTER TABLE table_name ADD UNIQUE (column_name);
```
10. **添加默认值**:
```sql
ALTER TABLE table_name ALTER COLUMN column_name SET DEFAULT default_value;
```
11. **删除默认值**:
```sql
ALTER TABLE table_name ALTER COLUMN column_name DROP DEFAULT;
```
12. **修改存储引擎**:
```sql
ALTER TABLE table_name ENGINE = engine_name;
```
13. **修改字符集**:
```sql
ALTER TABLE table_name CHARACTER SET charset_name;
```
14. **修改排序规则**:
```sql
ALTER TABLE table_name COLLATE collate_name;
```
15. **添加分区**:
```sql
ALTER TABLE table_name ADD PARTITION ...;
```
16. **移除分区**:
```sql
ALTER TABLE table_name REMOVE PARTITIONING;
```
17. **优化表**:
```sql
ALTER TABLE table_name OPTIMIZE PARTITION partition_name;
```
18. **分析表**:
```sql
ALTER TABLE table_name ANALYZE PARTITION partition_name;
```
19. **检查表**:
```sql
ALTER TABLE table_name CHECK PARTITION partition_name;
```
在使用ALTER关键字时,请注意以下几点:
- 执行ALTER TABLE操作可能会锁定表,导致其他会话无法访问该表,直到操作完成。
- 对于大型表,某些类型的ALTER TABLE操作可能需要较长时间,因此最好在维护窗口期间执行这些操作。
- 在生产环境中执行ALTER TABLE之前,应在测试环境中充分测试以确保操作的稳定性和性能影响。
- 如果要保留原始数据,请在执行任何破坏性的ALTER TABLE操作之前备份您的表和数据。
总之,ALTER关键字是MySQL中管理和维护数据库结构的强大工具之一,但应谨慎使用,特别是在生产环境中。
 

创建于删除数据库、表格

#create database `sql_t`;#创建数据库
show databases;#看看已有的database们
use `sql_t`;#你要用哪个数据库
create table `tb1_t`(
`student_id` INT PRIMARY KEY,#作为住建
`name` VARCHAR(20),#字符串,长度最大20
`major` VARCHAR(20)#字符串,长度最大20
);
DESCRIBE `tb1_t`;#看看表格
ALTER TABLE `tb1_t` ADD gpa decimal (3,2);#增加属性(列:alter table 表 add 列名 属性(详细三位数,其中小数点后占两位);
alter TABLE `TB1_T` DROP column gpa;#删除属性: alter table 表 drop column 列名;
DROP TABLE `tb1_t`;#删除表格

 

上一节进阶

 预设值default

插入时,没写major,但又缺省值。

有人说,直接update不加where ,就直接更新,但我好像是安全更新模式?

14:27:31    update `TB1_T`  SET `GPA`=4    Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column.  To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect.    0.000 sec
 这个错误信息表明,您正在尝试更新一个表(`TB1_T`)中的记录,但没有提供WHERE子句来指定要更新哪些特定的行。在MySQL的“安全更新模式”下,这是不允许的,因为这可能会导致意外更新表中的所有行,这可能是非常危险的操作。
错误信息中的关键部分是:
- **Error Code: 1175**: 表示您在没有使用关键字段的情况下尝试更新表。
- **You are using safe update mode**: 表示MySQL客户端正在安全更新模式下运行。
- **and you tried to update a table without a WHERE that uses a KEY column**: 表示更新操作没有包含WHERE子句,或者WHERE子句没有使用关键字段(通常是主键或索引)。
为了解决这个问题,您有以下几个选择:
1. **添加WHERE子句**:在您的UPDATE语句中添加一个WHERE子句,以指定要更新的特定行。例如:
   ```sql
   UPDATE `TB1_T` SET `GPA`=4 WHERE `student_id`=1; -- 假设`student_id`是表中的一个关键字段
   ```
2. **关闭安全更新模式**:如果您确实需要更新表中的所有行,并且知道这样做的后果,您可以关闭安全更新模式。这通常在MySQL客户端的偏好设置中进行,具体步骤如下:
   - 打开MySQL客户端的偏好设置(Preferences)。
   - 导航到SQL编辑器(SQL Editor)部分。
   - 取消选中“安全更新”(Safe Updates)选项。
   - 重新连接到数据库。
请注意,关闭安全更新模式时要非常小心,因为不正确的UPDATE语句可能会更改或删除大量数据。
以下是添加了WHERE子句的示例UPDATE语句:
```sql
UPDATE `TB1_T` SET `GPA`=4 WHERE `student_id` = 123; -- 用实际的条件替换`student_id` = 123
```
请确保在执行更新操作时,您确切知道自己在做什么,并且已经备份了重要数据。

这多出的一行不是行

关于插入顺序

是默认按照主键排的,我随便插的

有条件的删除DELETE FROM 表 WHERE 条件

多种语句组合查看

查看+排序

降序 

LIMIT 2只取前2名

这里是先排序,再取前两名

SB的SQL,不能先按照A排序取前n行,在按b∪排序吗!

在SQL查询中,LIMIT子句必须放在ORDER BY子句之后。这是因为LIMIT是用来限制查询结果的行数,而ORDER BY是用来指定结果集的排序顺序。如果LIMIT放在ORDER BY之前,SQL解释器将无法知道如何对结果进行排序,因为排序是在限制行数之前发生的。 

where major in(期望列表) 

错误信息指出您的SQL语句存在语法错误。在SQL中,WHERE子句必须放在ORDER BY子句之前。您当前的查询中WHERE子句放在了ORDER BY子句之后,这是不正确的。 以下是修正后的SQL语句:

行吧,where-》order by-》limit,顺序不能颠倒 

 关掉安全更新

set sql_safe_updates =0;#关掉安全更新

这样这句话可以执行,本来报错呢 

删除整个表格drop table 表

创玩表格想删怎么办,delete是删除表内东西,想删除整个表,用drop table表名

外键 foreign key(列名)reference 表(列) on delete cascade 

注意括号不能少

#create database `sql_t`;#创建数据库
set sql_safe_updates =0;#关掉安全更新
show databases;#看看已有的database们
use `sql_t`;#你要用哪个数据库
create table `tb1_t`(
`student_id` INT PRIMARY KEY,#作为住建
`name` VARCHAR(20),#字符串,长度最大20
`major` VARCHAR(20)DEFAULT'MATH'#预设值为math
);
ALTER TABLE `tb1_t` ADD gpa decimal (3,2);#增加属性(列:alter table 表 add 列名 属性(详细三位数,其中小数点后占两位);
alter TABLE `TB1_T` DROP column gpa;#删除属性: alter table 表 drop column 列名;

INSERT INTO 	`TB1_T`(GPA,STUDENT_ID) VALUES (1.2,11); 
INSERT INTO 		`TB1_T` VALUES(9,'RKW','BASKETBALL',5);
INSERT INTO 		`TB1_T` VALUES(17,'SD','BASKETBALL',4.99);
INSERT INTO 		`TB1_T` VALUES(7,'SENDO','BASKETBALL',4.98);
INSERT INTO 		`TB1_T` VALUES(27,'conan','fooTBALL',5.98);
DELETE FROM `TB1_T` WHERE STUDENT_ID=17;
DESCRIBE `tb1_t`;#看看表格的各类属性
update 	`tb1_t` 
set 	`name`='heye'
where `name`=null;
select * from 	`tb1_t`;
select * from 	`tb1_t` where major in ('football','basketball')ORDER BY MAJOR aSC,GPA DESC  	;#看看表格的值
update `TB1_T` 
SET `GPA`=4  WHERE STUDENT_ID<>1
;
DROP TABLE `tb1_t`;#删除表格

 

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

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

相关文章

Leetcode面试经典150题-221.最大正方形

解法都在代码里&#xff0c;不懂就留言或者私信 class Solution {/**本题一看就是典型的动态规划&#xff0c;要找以每个点为右下角的正方形的面积&#xff0c;然后取最大的这个题要注意找规律&#xff0c;我找到的规律如下&#xff1a;1.以第一行为右下角的&#xff0c;因为正…

ADC——模数转换器

一、转换流程 在处理器中主要进行ADC 1、AD转换流程 &#xff1a;采样、保持、量化、编码 通过比较器获得的电信号转换数字信号&#xff0c;根据自己需求&#xff0c;如果要求速率就可以使用较多的比较器&#xff0c;不要求速率考虑成本就可以使用较少的比较器&#xff0c;将最…

Vue学习笔记 二

4、Vue基础扩展 4.1 插槽 组件的最大特性就是复用性&#xff0c;而用好插槽能大大提高组件的可复用能力在Vue中插槽是很重要的存在&#xff0c;通过插槽&#xff0c;我们可以把父组件中指定的DOM作用到子组件的任意位置&#xff0c;后面我们坐项目用到的组件库比如element-ui…

5、Django Admin后台移除“删除所选”操作

默认情况下&#xff0c;Django Admin后台的listview模型列表页&#xff0c;会有一个Delete Selected删除所选操作。假设你需要再从Hero管理模型中移除该删除操作。 ModelAdmin.get_actions方法可以返回所有的操作方法。通过覆盖此方法&#xff0c;移除其中delete_selected方法…

Python 优雅编程:会报恩的代码(五)

文章目录 引言从文本搜索指定单词&#xff0c;不区分单词的大小写使用 str.lower()使用 re 模块 从文本搜索多个单词&#xff0c;依旧不区分单词的大小写使用 str.lower() 和循环使用 re 模块 反复执行 re.compile&#xff0c;re 是否会缓存编译结果&#xff1f;结语 引言 在 …

苹果mac数据恢复概率大吗 mac数据恢复专业软件哪个好用

一般情况下&#xff0c;当我们把电脑中的数据删掉后&#xff0c;都会保存在回收站里面&#xff0c;但如果回收站被清空了或者数据在回收站中没有找到的话&#xff0c;那么&#xff0c;之前被删掉的数据还能恢复吗&#xff1f;恢复的概率有多大呢&#xff1f; 答案是可以的&…

链式栈、队列

1、链式栈&#xff1a; 声明&#xff1a; #ifndef _STACK_H #define _STACK_H #include<stdlib.h>typedef int DataType;typedef struct snode //节点 {DataType data;struct snode *pnext; }SNode_t;typedef struct stack //链表 {SNode_t *ptop;int clen; }St…

【python】—— Python爬虫实战:爬取珠海市2011-2023年天气数据并保存为CSV文件

目录 目标 准备工作 爬取数据的开始时间和结束时间 爬取数据并解析 将数据转换为DataFrame并保存为CSV文件 本文将介绍如何使用Python编写一个简单的爬虫程序,以爬取珠海市2011年至2023年的天气数据,并将这些数据保存为CSV文件。我们将涉及到以下知识点: 使用r…

金九银十,自动化测试面试题精选【美团二面】

面试一般分为技术面和hr面&#xff0c;形式的话很少有群面&#xff0c;少部分企业可能会有一个交叉面&#xff0c;不过总的来说&#xff0c;技术面基本就是考察你的专业技术水平的&#xff0c;hr面的话主要是看这个人的综合素质以及家庭情况符不符合公司要求&#xff0c;一般来…

Kubernetes 上安装 Jenkins

安装 Helm curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash添加 Jenkins Helm 仓库 首先添加 Jenkins Helm 仓库 helm repo add jenkins https://charts.jenkins.io helm repo update安装 Jenkins 使用 Helm 安装 Jenkins 的最新版本&…

uni-app应用更新(Android端)

关于app更新&#xff0c;uni-app官方推荐的是 uni-upgrade-center&#xff0c;看了下比较繁琐&#xff0c;因此这里自己实现检查更新并下载安装的逻辑。 1.界面效果 界面中的弹框和 进度条采用了uView 提供的组件 2.检查更新并下载安装 一、版本信息配置在服务端&#xff0c…

时装爱好者的网页购物天堂:Spring Boot技术探索

第2章相关技术 2.1 B/S架构 B/S结构的特点也非常多&#xff0c;例如在很多浏览器中都可以做出信号请求。并且可以适当的减轻用户的工作量&#xff0c;通过对客户端安装或者是配置少量的运行软件就能够逐步减少用户的工作量&#xff0c;这些功能的操作主要是由服务器来进行控制的…

详解TensorRT的C++高性能部署以及C++部署Yolo实践

详解TensorRT的C高性能部署 一. ONNX1. ONNX的定位2. ONNX模型格式3. ONNX代码使用实例 二、TensorRT1 引言 三、C部署Yolo模型实例 一. ONNX 1. ONNX的定位 ONNX是一种中间文件格式&#xff0c;用于解决部署的硬件与不同的训练框架特定的模型格式的兼容性问题。 ONNX本身其…

JAVA数据导出为Excel

目录 一、导入依赖 二、使用的相关类 1、XSSFWorkbook 构造方法 创建表 操作表 保存表 样式和格式 日期处理 密码保护 其他 2、XSSFSheet 获取属性和信息 行操作 列操作 表的属性 合并单元格 保护表 页眉和页脚 注释 其它 3、XSSFRow 获取属性和信息 单…

单点登录OAuth2.0

OAuth 2.0&#xff08;Open Authorization 2.0&#xff09;是OAuth协议的第二个版本&#xff0c;于2012年正式成为RFC 6749标准。在OAuth 2.0之前&#xff0c;OAuth 1.0版本已经为Web应用提供了一定程度的授权功能&#xff0c;但随着时间的推移&#xff0c;这些版本逐渐显露出一…

Nginx: TCP建立连接的优化和启用Fast Open功能

TCP 建立连接优化 在三次握手中&#xff0c;相关TCP的内核参数可优化这一过程 net.ipv4.tcp_syn_retries 6net.ipv4.tcp_synack_retries 5net.ipv4.tcp_syncookies 0net.ipv4.tcp_max_syn_backlognet.core.somaxconnnet.core.netdev_max_backlog 1 &#xff09; net.ipv4…

C语言之猜数字小游戏

哈喽&#xff0c;大家好&#xff01;我是冰淇淋加点糖。今天我们来用前面所学的知识来开发一个猜数字的小游戏&#xff0c;锻炼我们的编程能力和编程思维。 猜数字小游戏功能简介 1.随机生成一个1-100的数字。 2.玩家用户开始猜数字。 > 猜大了&#xff0c;提醒猜大了…

【知识库系列】MPR/多模态方向观察:图像视频与3D生成

多模态背后的backbone会长成什么样&#xff1f; 各种模态到梯度下降到最后会不会都差不多&#xff1f; Sora 是不是已经被追上了? 我们真的把视频数据都用好了吗&#xff1f; 知识库完整文档&#xff1a; MPR/多模态方向观察&#xff1a;图像视频与3D生成&#xff1a;https…

SpringBoot实现前后端传输加密设计

在Web应用中&#xff0c;确保前后端之间的数据传输安全是非常重要的。这通常涉及到使用HTTPS协议、数据加密、令牌验证等安全措施。本文通过将前后端之间的传输数据进行加密&#xff0c;用于在Spring Boot应用中实现前后端传输加密设计。 一、数据加密方案 即使使用了HTTPS&…

java利用JXL操作excel

通过JXL操作Excel JXL是韩国人所著,目前停止更新,只支持xls格式,即2007之前的版本 import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java…