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表名

#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`;#删除表格

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值