SQL小技巧---总结学习过程中,遇到的一些容易被忽视但是很有用的小技巧

549 阅读6分钟

这是我参与8月更文挑战的第7天,活动详情查看:8月更文挑战

大家好,我是【豆干花生】,这次我带来了一整套sql、mysql学习笔记,后续还会更新~

在本模块中,您将学习到一些SQL小技巧---总结学习过程中,遇到的一些容易被忽视但是很有用的小技巧

这是我从头开始学习sql/mysql的学习笔记,后续还会更新,欢迎关注~

注:本笔记为coursera网站课程《Databases and SQL for Data Science with Python》的学习笔记

image.png

操作MySQL数据库的sql语句是否区分大小写?

一、在windows系统中不区分大小写

二、在Linux和Unix系统中字段名、数据库名和表名要区分大小写

总之,名字要区分大小写,操作语句也尽量大写,不然容易报错!

每一句以分号结尾

每个sql语句只有有分号的时候才算结束

注释方式

单行注释:–注释内容#注释内容 多行注释:/*注释内容*/

英文相关

column是列,row是行

navicat操作后,表无变化

1.刷新一下,看变化没

右键点击表,选择刷新

2.打开表,选择开始事务,选择提交

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mMHuP9D6-1628406941600)(C:\Users\YUANMU\AppData\Roaming\Typora\typora-user-images\image-20210418171634962.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oqjgXTcF-1628406941603)(C:\Users\YUANMU\AppData\Roaming\Typora\typora-user-images\image-20210418173258577.png)]

mysql事务回滚是什么意思_Mysql事务提交及事务回滚是什么意思

原文链接:blog.csdn.net/weixin_2993…

事务可以说是一段sql 语句的批处理,但是这个批处理是一个atom(原子) ,不可分割,要么都提交执行,要么回滚(rollback)都不执行。

一、事务提交(commit)

成功的结束,将所有的**DML(insert、update、delete)**语句操作历史记录和底层硬盘数据来一次同步。

然后我们通过“start transaction”语句开启事务。

再对表中数据进行一些更新操作

事务开启后,再更新数据的话,数据库中的真实数据是不会有变化的,只是将记录更新到事务日志中。如果想要数据同步更新到数据库中,我们就需要进行事务提交操作。

这里就需要大家掌握事务提交的语法:commit;

事务提交后,我们再通过Navicat检查下数据表中的数据是否发生了变化。

事务提执行交即确认后,才能对真实的表数据进行改变。

二、事务回滚(rollback)

失败的结束,将所有的DML语句操作历史记录全部清空。

这里我们再重新开启事务,并再进行一系列更新数据操作。

事务回滚的基本语法:rollback;

当我们进行事务回滚操作后,在开启事务之后的一系列操作都会被清空,也就是说进行事务回滚后,数据库中数据依然不会发生任何变化。

注意:如果事务中所有sql语句执行正确则需要自己手动提交commit;否则有任何一条执行错误,需要自己提交一条rollback,这时会回滚所有操作,而不是commit会给你自动判断和回滚

总而言之,正确操作如下:

1.书写语句,使之正确运行

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Whhbo3Vp-1628406941607)(C:\Users\YUANMU\AppData\Roaming\Typora\typora-user-images\image-20210418181011557.png)]

这里可以选择,保存语句,但是只是对语句的保存,而不是对数据库的保存

事务开启后,再更新数据的话,数据库中的真实数据是不会有变化的,只是将记录更新到事务日志中。如果想要数据同步更新到数据库中,我们就需要进行事务提交操作。

2.右键点击表,选择设计表,点击保存(相当于对事物的提交),完成对数据库的真是保存

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dld23Hu6-1628406941611)(C:\Users\YUANMU\AppData\Roaming\Typora\typora-user-images\image-20210418181206149.png)]

3.打开表,邮件刷新,则可看到更新的表

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8Gv4Jzb9-1628406941612)(C:\Users\YUANMU\AppData\Roaming\Typora\typora-user-images\image-20210418181320240.png)]注意:执行语句的时候,要保证数据库/表没有在执行事物,否则无法正常进行

sql语句如果包含嵌套功能,需要内嵌另一个语句,而不是用where直接得出结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Nanv3Ocd-1628406941613)(C:\Users\YUANMU\AppData\Roaming\Typora\typora-user-images\image-20210418220852074.png)]

所以第四个选项正确,第一个错误

DDL与DML语句

blog.csdn.net/yingshukun/…

DDL语句

简单说,其实主要就是用来创建表的,当然也可以删除表,或者修改表的定义,比如原表只有三列,现在需要五列,就要修改表的定义

create table  表名称(列名1 类型 配置, 列名2 类型  配置, 列名3 类型 配置);
drop table 表名称;
drop table if exists 表名称;
/* 修改表名称 */
alter table 原表名 rename to 新表名;
/* 添加新列 */
alter table 表名称 add column 列名 类型 配置

DML语句

对数据库里的表数据进行相应的增、删、改、查的操作。注意,这里是表中的数据,而DDL则是对表的结构进行创建或修改,注意区分

#想要插入的字段和值的顺序要一一对应起来
insert into 表名称 (字段1,字段2,字段3……) values (被插入的值1,值2,值3……)

insert into 表名称  values(值1,值2,值3……)
delete  from  表名称  where 字段 = 条件;

# 用于删除表中所有数据,但不删除表
delete from 表名  或者  delete * from 表名
update 表名称  set 字段1=值1,字段2=值2,……  where 字段 = 条件;   
#查询的字段就是你要查询的列名,用*可表示查询全部字段    
select 查询的字段 from 表名称 where 字段 = 条件;

#查询整张表的所有数据
select * from 表名称;

示例如下:

create table contacts (
	id integer primary key autoincrement,
	name text not null ,
	phone text not null default 'unknow');

alter table contacts rename to students;
/* 添加字段,分多次添加 */
alter table contacts add column email text;
alter table contacts add column qq text not null;

insert into stu_info (name,number,age) values("zhangsan","20171220",20);

delete from stu_info  where number = "20171221";

update stu_info set name = "zhangsan",age=10  where number = "20171221";

select * from  food_types  where name = "apple" 

select * from stu_info where name = 'zhangsan'

navicat运行部分sql语句

可以在一个查询文件里(即一个sql文件),写很多sql语句,但是每次只选中一部分语句,然后运行这一部分。

将所有sql语句全写入sql文件中:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cwqBtm6b-1628406941614)(C:\Users\YUANMU\AppData\Roaming\Typora\typora-user-images\image-20210513115838888.png)]

选择部分语句运行:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mVgpuLjY-1628406941615)(C:\Users\YUANMU\AppData\Roaming\Typora\typora-user-images\image-20210513115902234.png)]

这里选择只运行最后一条语句,则只展示最后一条,而不再运行前面的语句:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pjsUgNux-1628406941616)(C:\Users\YUANMU\AppData\Roaming\Typora\typora-user-images\image-20210513115923323.png)]

使用sql语言自己创建一个表

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TsbI7iqv-1628406941616)(C:\Users\YUANMU\AppData\Roaming\Typora\typora-user-images\image-20210513120327230.png)]

-- Drop the table in case it existsDROP TABLE PETSALE;-- Create the tableCREATE TABLE PETSALE (	ID INTEGER NOT NULL,	ANIMAL VARCHAR(20),	SALEPRICE DECIMAL(6,2),	SALEDATE DATE,	QUANTITY INTEGER,	PRIMARY KEY (ID)	);-- Insert sample data into the tableINSERT INTO PETSALE VALUES(1,'Cat',450.09,'2018-05-29',9),(2,'Dog',666.66,'2018-06-01',3),(3,'Parrot',50.00,'2018-06-04',2),(4,'Hamster',60.60,'2018-06-11',6),(5,'Goldfish',48.48,'2018-06-14',24);-- Retrieve all records from the tableSELECT * FROM PETSALE;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AplpauKn-1628406941617)(C:\Users\YUANMU\AppData\Roaming\Typora\typora-user-images\image-20210513120341053.png)]

都看到这里了,不如点个赞哦~

在这里插入图片描述