当前位置:网站首页>SQL语言
SQL语言
2022-07-04 12:39:00 【游戏编程】
SQL语言
语法基础
注释
# 使用'#'注释-- 使用'--'注释/*多行注释*/
创建使用数据库
CREATE DATABASE db01;USE db01;
创建表
CREATE TABLE table01 ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, col1 INT NOT NULL DEFAULT 1, col2 VARCHAR(45) NULL, col3 DATE NULL);
修改表
# 添加新列ALTER TABLE table01 ADD col CHAR(20);# 修改列 ALTER TABLE 表名 CHANGE 原字段名 新字段名 字段类型 约束条件ALTER TABLE table01 CHANGE col col4 CHAR(32) NOT NULL DEFAULT 'xxx';# 删除列ALTER TABLE table01 DROP COLUMN col4;# 删除表DROP TABLE table01;
增删改
# 添加数据INSERT INTO table01(col1, col2)VALUES(val1, val2);# 表数据迁移CREATE TABLE newtable ASSELECT * FROM table01;# 更新UPDATE table01SET col = valWHERE 条件;# 删除DELETE FROM table01WHERE 条件;
查询
基础
# 去重SELECT DISTINCT * FROM table01;# 限制返回SELECT * FROM table01 LIMIT 5, 2; # 从5开始(不包括5)返回两行数据,即6,7# 排序 ASC升序,DESC降序SELECT * FROM table01ORDER BY col1 DESC, col2 ASC;# 筛选SELECT * FROM table01 WHERE 条件;
计算字段
函 数 | 说 明 |
---|---|
AVG() | 返回某列的平均值 |
COUNT() | 返回某列的行数 |
MAX() | 返回某列的最大值 |
MIN() | 返回某列的最小值 |
SUM() | 返回某列值之和 |
# 举例:计算去重的col1列的均值命名为avg_colSELECT AVG(DISTINCT col1) AS avg_colFROM table01;
文本处理
可以使用 LIKE + 正则表达式 筛选文本
SELECT *FROM table01WHERE col1 LIKE '[^AB]%'; -- 不以 A 和 B 开头的任意文本
还可以使用一些函数进行文本处理:
函数 | 说明 |
---|---|
LEFT() | 左边的字符 |
RIGHT() | 右边的字符 |
LOWER() | 转换为小写字符 |
UPPER() | 转换为大写字符 |
LTRIM() | 去除左边的空格 |
RTRIM() | 去除右边的空格 |
LENGTH() | 长度 |
SOUNDEX() | 将一个字符串转换为描述其语音表示的字母数字模式 |
分组
分组就是把具有相同的数据值的行放在同一组中。可以对同一分组数据使用汇总函数进行处理。
WHERE 过滤行,HAVING 过滤分组,行过滤应当先于分组过滤。
SELECT col1, COUNT(*) AS numFROM table01WHERE col1 > 2GROUP BY col1HAVING num >= 2;
还需要注意以下几点
- GROUP BY 子句出现在 WHERE 子句之后,ORDER BY 子句之前;
除了汇总字段外,SELECT 语句中的每一字段都必须在 GROUP BY 子句中给出;
NULL 的行会单独分为一组;
大多数 SQL 实现不支持 GROUP BY 列具有可变长度的数据类型。
子查询
子查询中只能返回一个字段的数据。可以将子查询的结果作为 WHRER 语句的过滤条件:
SELECT *FROM table01WHERE col1 IN (SELECT col1 FROM table02);
连接查询
连接用于连接多个表,使用 JOIN 关键字,并且条件语句使用 ON 而不是 WHERE。
等值连接:
SELECT A.value, B.valueFROM tablea AS A INNER JOIN tableb AS BON A.key = B.key;
也可以不明确使用 INNER JOIN,而使用普通查询并在 WHERE 中将两个表中要连接的列用等值方法连接起来。
SELECT A.value, B.valueFROM tablea AS A, tableb AS BWHERE A.key = B.key;
自然连接:
自然连接是把同名列通过等值测试连接起来的,同名列可以有多个。
SELECT A.value, B.valueFROM tablea AS A NATURAL JOIN tableb AS B;
外连接:
分为左外连接,右外连接以及全外连接,左外连接就是保留左表没有关联的行,右外连接同理。
SELECT A.value, B.valueFROM tablea AS A LEFT OUTER JOIN tableb as bON A.col1 = B.col1;
组合查询
使用 UNION 来组合两个查询,如果第一个查询返回 M 行,第二个查询返回 N 行,那么组合查询的结果一般为 M+N 行。每个查询必须包含相同的列、表达式和聚集函数。
默认会去除相同行,如果需要保留相同行,使用 UNION ALL。
SELECT *FROM table01WHERE col1 = 1UNIONSELECT *FROM table01WHERE col1 =2;
使用视图查询
视图是虚拟的表,本身不包含数据,也就不能对其进行索引操作。对视图的操作和对普通表的操作一样。
下面是一个简单的视图创建:
CREATE VIEW myview ASSELECT 语句;
权限管理
在mysql中,账户信息保存在 mysql 这个数据库中
USE mysql;SELECT * FROM user;
账户操作
# 创建一个账户CREATE USER myuser IDENTIFIED BY '密码';# 修改用户名RENAME myuser TO newname;# 删除用户DROP USER newname;# 查看权限SHOW GRANTS FOR myuser;# 授权GRANT SELECT, INSERT ON mydatabase.* TO myuser;# 删除权限REVOKE SELECT, INSERT ON mydatabase.* FROM myuser;# 更改密码SET PASSWROD FOR myuser = Password('new_password');
作者:S++
游戏编程,一个游戏开发收藏夹~
如果图片长时间未显示,请使用Chrome内核浏览器。
边栏推荐
- CA:用于移动端的高效坐标注意力机制 | CVPR 2021
- 老掉牙的 synchronized 锁优化,一次给你讲清楚!
- 【云原生 | Kubernetes篇】深入了解Ingress(十二)
- Efficient! Build FTP working environment with virtual users
- [cloud native | kubernetes] in depth understanding of ingress (12)
- CVPR 2022 | transfusion: Lidar camera fusion for 3D target detection with transformer
- Annual comprehensive analysis of China's mobile reading market in 2022
- 《预训练周刊》第52期:屏蔽视觉预训练、目标导向对话
- iptables基础及Samba配置举例
- 「小技巧」给Seurat对象瘦瘦身
猜你喜欢
分布式事务相关概念与理论
阿里云有奖体验:用PolarDB-X搭建一个高可用系统
16. Memory usage and segmentation
golang 设置goproxy代理的小细节,适用于go module下载超时,阿里云镜像go module下载超时
Read the BGP agreement in 6 minutes.
Will the concept of "being integrated" become a new inflection point of the information and innovation industry?
Golang sets the small details of goproxy proxy proxy, which is applicable to go module download timeout and Alibaba cloud image go module download timeout
AI 绘画极简教程
【云原生 | Kubernetes篇】深入了解Ingress(十二)
DC-5 target
随机推荐
Besides, rsync+inotify realizes real-time backup of data
DGraph: 大规模动态图数据集
C fonctions linguistiques
Peak detection of measured signal
实战:fabric 用户证书吊销操作流程
DVWA range exercise 4
After the game starts, you will be prompted to install HMS core. Click Cancel, and you will not be prompted to install HMS core again (initialization failure returns 907135003)
阿里云有奖体验:用PolarDB-X搭建一个高可用系统
ArcGIS uses grid processing tools for image clipping
Jetson TX2配置Tensorflow、Pytorch等常用库
When to use pointers in go?
go-zero微服务实战系列(九、极致优化秒杀性能)
ArcGis利用栅格处理工具进行影像裁剪
WPF double slider control and forced capture of mouse event focus
iptables基础及Samba配置举例
使用宝塔部署halo博客
N++ is not reliable
一个数据人对领域模型理解与深入
DC-5 target
Comparative study of the gods in the twilight Era