SQL常用语句总结

news2024/11/17 15:34:29

一,简介

1.1 数据库是用来存放数据的,对数据库的操作需要用到SQL语句

1.2 数据库种类有也非常多:

关系型数据库:
Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL、SQLite

非关系型数据库:
NoSql、Cloudant、MongoDb、redis、HBase

1.3 常用的是Oracle、MySQL、SQLite

二 常用语句操作,MySQL创建用户表为例

2.1 mysql其他数据类型五大类

整数类型:BIT、BOOL、TINY INT等。
浮点数类型:FLOAT、DOUBLE、DECIMAL。
字符串类型:TEXT、MEDIUM TEXT、LONGTEXT等。
日期类型:Date、DateTime、TimeStamp、Time、Year。
其他数据类型:BINARY、VARBINARY、ENUM、SET等。

2.2 登录MySQL数据库,cmd命令进入MySQL安装目录bin

cd D:\PHPTools\mysql-5.7.25\bin

2.3 登录数据库,执行命令,输入密码

mysql -u root -p

 2.4 创建数据库

create database DONG;

 2.5  删除数据库

drop database DONG;

 2.6 使用数据库

use DONG;

 2.7 创建用户表

CREATE TABLE IF NOT EXISTS `user`(
   `uid` INT UNSIGNED AUTO_INCREMENT,
   `account` VARCHAR(100) NOT NULL,
   `password` VARCHAR(100) NOT NULL,
   `name` VARCHAR(100),
   `sign` VARCHAR(500),
   `avatar` VARCHAR(100),
   `time` DATE,
   PRIMARY KEY (`uid` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

 2.8 查看全部表

show tables;

 2.9 查看表数据结构

desc user;

 2.10 删除表

DROP TABLE user;

 2.11 插入用户表数据

INSERT INTO user 
(account,password,name,sign,time) 
VALUES 
("test" , "123456" , "zhangsan" , "hahahahaha" , NOW());

 2.12 查询用户表数据

select * from user;

 2.13 where 根据用户id查询

select * from user where uid =2;

 2.14 更新用户id是2的,用户的名字和签名

UPDATE user SET name="lisi-lisi222" , sign="吼吼吼吼-吼吼吼吼222" where uid=2;

再次查询可以看到用户名和签名已变 

select * from user where uid =2;

 2.15 删除用户id==1的那条数据

DELETE FROM user WHERE uid=1;

再次查询用户表,可以看到没有用户id==1的数据了 

 三 进阶查询,MySQL创建文章表为例

3.1 创建文章表,并关联用户表,创建用户表外键

CREATE TABLE IF NOT EXISTS `article`(
   `id` INT UNSIGNED AUTO_INCREMENT,
   `title` VARCHAR(255) NOT NULL,
   `content` TINYTEXT NOT NULL,
   `time` DATE,
   PRIMARY KEY (`id` ),
   uid INT  references user(uid)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

3.2  创建多个文章数据

INSERT INTO article 
(title,content,time,uid) 
VALUES 
("哈哈" , "哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈" , NOW() , 1);

INSERT INTO article 
(title,content,time,uid) 
VALUES 
("吼吼" , "吼吼吼吼吼吼吼吼吼吼吼吼吼吼吼吼" , NOW() , 1);

INSERT INTO article 
(title,content,time,uid) 
VALUES 
("嗷嗷" , "嗷嗷嗷嗷嗷嗷嗷嗷嗷嗷嗷嗷嗷嗷嗷嗷" , NOW() , 2);

INSERT INTO article 
(title,content,time,uid) 
VALUES 
("呵呵" , "呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵" , NOW() , 2);

 3.3 查询文章表数据,可以看到有4条数据

select * from article;

 3.4 LIKE 模糊查询

select * from article where  content like "%哈哈";

 3.5 查询uid==1的文章

select * from article where uid =1;

3.6 文章表按用户ID降序排序,ASC,DESC

select * from article ORDER BY uid DESC;

3.7 ORDER BY分组,文章表按用户分组,统计每个人有多少文章

SELECT COUNT(*) FROM article GROUP BY uid;

3.8 LIMIT 限制返回条数,如下限制返回2条数据

 select * from article LIMIT 2;

3.9 分页

select * from table_name limit [offset,] rows

offset:指定第一个返回记录行的偏移量(即从哪一行开始返回),注意:初始行的偏移量为0
rows:返回具体行数

如下,文章表从第2行开始,检索3行记录,即:检索记录行 3-4

select * from article limit 2 ,3;

 分页格式,查询每页10条数据,page页码,pageSize每页条数

select * from table limit (page-1)*pageSize,pageSize; 

 select * from article limit 0,10;

3.10 ALTER修改表

MODIFY修改文章表字段类型,修改title 从 VARCHAR 改为 TEXT

ALTER table article MODIFY title TEXT;

 或使用CHANGE 修改文章表字段名字,修改 title 为 name。CHANGE 关键字之后,紧跟着的是你要修改的字段名,然后指定新字段名及类型

ALTER table article CHANGE title name TEXT;

 查询后可以看到title的名字和类型都变了

3.11 UNION 连接两个以上的表,将结果合并到一个集合中,多个 SELECT 语句会删除重复的数据

SELECT uid FROM user
UNION
SELECT uid FROM article
ORDER BY uid;

 用户表和文章表都存在用户id是1,2的数据

四 多表联合查询

4.1 OIN 按照功能大致分为如下三类:

  • INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
  • LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
  • RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。

4.2 先看下两个表的全部数据

 

4.2 INNER JOIN 内连接

 

查询两个表的相同uid的 

select a.name , b.name from user a INNER JOIN article b ON a.uid=b.uid;

4.3  LEFT JOIN 左连接

 select a.name , b.name from user a LEFT JOIN article b ON a.uid=b.uid;

 4.4 RIGHT JOIN 右连接

 select a.name , b.name from user a RIGHT JOIN article b ON a.uid=b.uid;

五 事务

5.1 事务概念

  • 在数据库中,我们将一条 SQL 语句称为一次基本的操作。将若干条 SQL 语句“打包”在一起,共同执行一个完整的任务,这就是事务。
  • 事务( Transaction)由一次或者多次基本操作构成,或者说,事务由一条或者多条 SQL 语句构成。

5.2 事务控制语句:

  • BEGIN 或 START TRANSACTION 显式地开启一个事务;

  • COMMIT 也可以使用 COMMIT WORK,不过二者是等价的。COMMIT 会提交事务,并使已对数据库进行的所有修改成为永久性的;

  • ROLLBACK 也可以使用 ROLLBACK WORK,不过二者是等价的。回滚会结束用户的事务,并撤销正在进行的所有未提交的修改;

  • SAVEPOINT identifier,SAVEPOINT 允许在事务中创建一个保存点,一个事务中可以有多个 SAVEPOINT;

  • RELEASE SAVEPOINT identifier 删除一个事务的保存点,当没有指定的保存点时,执行该语句会抛出一个异常;

  • ROLLBACK TO identifier 把事务回滚到标记点;

  • SET TRANSACTION 用来设置事务的隔离级别。InnoDB 存储引擎提供事务的隔离级别有READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ 和 SERIALIZABLE。

5.3 MYSQL 事务处理主要有两种方法

1、用 BEGIN, ROLLBACK, COMMIT来实现

  • BEGIN 开始一个事务
  • ROLLBACK 事务回滚
  • COMMIT 事务确认

2、直接用 SET 来改变 MySQL 的自动提交模式:

  • SET AUTOCOMMIT=0 禁止自动提交
  • SET AUTOCOMMIT=1 开启自动提交

5.4 事务的使用

 begin;开始,   commit;结束,中间是执行的语句称之为事务

 begin;

 INSERT INTO user
    (account,password,name,sign,time)
     VALUES
    ("shiwu" , "123456" , "shiwu_name" , "事务签名" , NOW());
 

INSERT INTO article
    (name,content,time,uid)
    VALUES
    ("事务" , "事务事务事务事务事务事务" , NOW() , 1);
 

commit;

 六 临时表

6.1 作用:

MySQL 临时表在我们需要保存一些临时数据时是非常有用的。临时表只在当前连接可见,当关闭连接时,Mysql会自动删除表并释放所有空间

6.2 TEMPORARY创建临时表

CREATE TEMPORARY TABLE IF NOT EXISTS `article_te`(
   `id` INT UNSIGNED AUTO_INCREMENT,
   `title` VARCHAR(255) NOT NULL,
   `content` TINYTEXT NOT NULL,
   `time` DATE,
   PRIMARY KEY (`id` ),
   uid INT  references user(uid)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

 6.3 使用 SHOW TABLES命令显示数据表列表时,你将无法看到 article_te表

 6.4 删除临时表,默认情况下,当你断开与数据库的连接后,临时表就会自动被销毁。当然你也可以在当前MySQL会话使用 DROP TABLE 命令来手动删除临时表。

DROP TABLE article_te;

七 导出数据

7.1 使用 SELECT ... INTO OUTFILE 语句导出数据

SELECT * FROM user INTO OUTFILE 'D:\\PHPTools\\mysql-5.7.25\\outfile\\user.txt';

7.2 可能出现导出失败的提示

 这是mysql设置的权限的问题,可以使用show variables like ‘%secure%’;查看 secure-file-priv 当前的值是什么

 可以看到最后一行 secure_file_priv 是 NULL就代表禁止导出,需要在my.ini里面配置一下

MySQL服务重启一下

 再次执行导出

 SELECT * FROM user INTO OUTFILE 'D:\\PHPTools\\mysql-5.7.25\\outfile\\user.txt';

可以看到成功了 

 在目录里面会生成一个文本文件

 打开文件内容如下

 八 导入数据

8.1 使用 LOAD DATA 导入数据

新建一个 user2 空白表

 8.2 查询空数据

 8.3 导入刚的 user.txt 文件

LOAD DATA LOCAL INFILE 'D:\\PHPTools\\mysql-5.7.25\\outfile\\user.txt' INTO TABLE user2;

 8.4 再次查询,看到数据已经导入进来了

8.5 注意:

如果指定LOCAL关键词,则表明从客户主机上按路径读取文件。如果没有指定,则文件在服务器上按路径读取文件

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

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

相关文章

Vue Cli 之 环境变量和模式

一、环境变量 ​ 我们在使用 Vue-cli 创建的Vue项目中,可以在构建和运行时为项目设置环境变量,这些环境变量会根据环境(模式)的不同,而自动注入到项目中,也就是说我们可以根据环境不同,设置不同…

二进制单节点搭建 Kubernetes v1.20

目录 第一章.操作系统初始化配置 1.1.安装环境部署 1.2.部署 docker引擎 第二章.部署 etcd 集群 2.1.ETCD简述 2.2.准备签发证书环境 在 master01 节点上操作 2.3. 生成Etcd证书​​​​​​​ 2.4.在 node01 节点上操作 在 node02 节点上操作 2.5.部署 Master 组件…

SpringBoot ( 四 ) 接值

2.5.接值 通过方法的参数来接收请求传来值 请求时传值的方式有三种方式 : URL?namevalueform表单Ajax 异步传值 接收传来的值有三类 : 单一值对象数组 2.5.0.传值 2.5.0.1.URL?传值 URL?标识1值1&标识2值2 URL后面使用 ? 连接参数, 每组参数使用 连接标识与值, 多…

10.过滤器

过滤器是做文本格式化的,只能用在 插值表达式 与 v-bind 上,在vue3中已经被弃用了,这里我简单记录一下并写一下在vue3的替代方法 目录 1 基本使用 1.1 vue2中的写法 1.2 vue3的替代 2 私有过滤器与全局过滤器 2.1 vue2的写法 2.2…

shell脚本----数组

文章目录 一、数组定义的方法二、数组的操作2.1 数组的输出2.2 删除数组2.3 数组切片2.4 数组的替换2.5 判断数组中是否有空值2.6 追加函数2.7 向函数传入参数 一、数组定义的方法 数组定义的规则 数组中的每个元素分分隔符一定为空格隔开每个元素都拥有与其对应的下标&#…

Kubesphere流水线实现蓝绿发布

Kubesphere流水线实现蓝绿发布 1. Gitlab仓库准备 1.1 创建仓库 新建空白项目,名字随便取 greenweb复制克隆地址 http://192.168.31.199/deploy/greenweb.git1.2 初始化并上传代码 克隆并初始化代码仓库 mkdir git cd git git clone http://192.168.31.199/deploy/green…

AIMD 为什么收敛(tcp reno/cubic 为什么好)

TCP 拥塞控制目标是缓解并解除网络拥塞,让所有流量公平共享带宽,合在一起就是公平收敛。 AIMD(几乎所有与拥塞控制相关的协议或算法都有 AIMD 的影子,包括 RoCE,BBRv2) 为什么收敛?我一般会给出下面的老图:…

1区(TOP)极速送审,5月SCI/SSCI/EI刊源表已更新,

2023年5月SCI/SSCI/EI期刊目录更新 5月我处新增多本1-2区高分区新刊,包括计算机、医学、环境、化学、材料、生物、工程、社科领域,新刊版面极速送审~ 以下是本月重点期刊推荐,可作参考: 计算机类新刊: 1区计算机科…

钓鱼邮件演练项目实战

1、 使用 setoolkit 克隆站点 Setoolkit 是一个万能的社工工具(社会工程学工具集合) ┌──(root Cwillchris)-[~] └─# setoolkit 翻译成中文: 从菜单中选择: 1)社会工程攻击 2)渗透测试(快速通道) 3)第三方模块 4)更新社会工程师工具包 5)更新 SET 配置…

使用 spring 的 IoC 的实现账户的CRUD(2)双层实现+注解开发

在http://t.csdn.cn/yucl4的基础上进行注解开发 【分析】 xml文件其中spring容器中的bean,因此通过注解把这些放到容器中即可 component:相当xml中的bean的id: 如果不指定 value 属性,默认 bean 的 id 是当前类的类名, 首字母小写。 Controller Service Reposito…

计算机毕业论文选题推荐|软件工程|系列二

文章目录 导文题目导文 计算机毕业论文选题推荐|软件工程 (***语言)==使用其他任何编程语言 例如:基于(***语言)门窗账务管理系统的设计与实现 得到:基于JAVA门窗账务管理系统的设计与实现 基于vue门窗账务管理系统的设计与实现 等等 题目 基于(***语言)门窗账务管理系…

C++——类和对象(6)

作者:几冬雪来 时间:2023年5月10日 内容:C类和对象内容讲解 目录 前言: 1.取地址操作符重载: 2.构造函数(进阶): 1.初始化列表: 2.static成员: 结尾…

数据可视化工具 - ECharts饼形图的编写

1 饼形图 1年龄分布模块制作 1.1 官网找到类似实例&#xff0c; 适当分析&#xff0c;并且引入到HTML页面中 <!DOCTYPE html> <html> <head><meta charset"utf-8"/><title>ECharts</title><!-- 引入刚刚下载的 ECharts 文件…

Android WebRTC+SRS/ZLM视频通话(4):Android使用WebRTC推流SRS/ZLMediaKit

Android WebRTCSRS/ZLM视频通话&#xff08;4&#xff09;&#xff1a;Android使用WebRTC推流SRS/ZLMediaKit 来自奔三人员的焦虑日志 接着上一章内容&#xff0c;继续来记录Android是如何使用WebRTC往SRS或ZLMediaKit进行推流。想要在Android设备上实现高质量的实时流媒体推送…

VirtualBox+Vagrant

1.下载VirtualBox 1.下载 VirtualBox官网下载 下载过程无特别注意事项&#xff0c;注意调整到非 C 盘位置即可&#xff0c;其他部分皆为默认设置 2.修改虚拟电脑存储位置 1.将C:\Users\用户名下的VirtualBox VMs文件夹复制到自定义目标文件夹中 2.打开VirtualBox,在全局设置…

嵌入式TCP/IP协议栈-LwIP

文章目录 LWIP是什么基础知识OSI七层模型TCP/IP五层模型LwIP的模型常见协议ARP协议ICMP协议DHCP协议DNS协议 LwIP APISocket大端模式与小端模式地址字节序IP地址转换 网络并发 LWIP是什么 LWIP是一个轻量级的TCP/IP协议栈&#xff0c;其全称为Lightweight IP&#xff0c;它专门…

UNIX网络编程卷一 学习笔记 第十二章 IPv4与IPv6的互操作性

未来数年内&#xff0c;因特网也许会逐渐从IPv4过渡到IPv6&#xff0c;在过渡阶段&#xff0c;基于IPv4的现有应用能与基于IPv6的全新应用协同工作非常重要。例如&#xff0c;厂商不应只提供仅能与IPv6 telnet服务器程序协同工作的telnet客户程序&#xff0c;而应该提供既能与I…

环境搭建:Visual Studio的安装和创建C++项目

Visual Studio的安装和创建C项目 引言前言下载Visual Studio安装包安装Visual Studio创建项目小结 引言 &#x1f4a1; 作者简介&#xff1a;专注于C/C高性能程序设计和开发&#xff0c;理论与代码实践结合&#xff0c;让世界没有难学的技术。 &#x1f449; &#x1f396;️ C…

第五十章 Unity Input Manager 输入系统(上)

Unity的输入系统支持多种输入设备&#xff0c;比如键盘和鼠标&#xff0c;游戏手柄&#xff0c;触摸屏&#xff0c;VR和AR控制器等等。Unity 通过两个独立的系统提供输入支持&#xff1a;第一&#xff0c;输入管理器 (Input Manager) 是 Unity 核心平台的一部分&#xff0c;默认…

数据可视化一、ECharts

零、文章目录 数据可视化一、ECharts 1、数据可视化 &#xff08;1&#xff09;数据可视化 数据可视化主要目的&#xff1a;借助于图形化手段&#xff0c;清晰有效地传达与沟通信息。数据可视化可以把数据从冰冷的数字转换成图形&#xff0c;揭示蕴含在数据中的规律和道理。…