当前位置:网站首页>SQL的通用语法和使用说明(图文)
SQL的通用语法和使用说明(图文)
2022-08-02 14:09:00 【为java献身】
文章目录
简介:
SQL,全称Structured Query Language,结构化查询语言。
SQL是操作关系数据库的标准语言,是所有关系数据库通用的。
SQL只是制定的一个标准,由具体的关系数据库厂商来实现,所以某些关系数据库可能不支持SQL中的少数语句。
DDL(Data Definition Language,数据定义)
操作数据库,表等
操作数据库
查询
SHOW DATABASES;
创建
创建数据库
CREATE DATABASES 数据库名称;
在可视化工具中,创建一个名为db1的数据库
显示所有数据库验证我们是否创建成功
判断创建数据库
CREATE DATABASE IF NOT EXISTS 数据库名称;
判断是否存在,如果不存在就创建 删除
删除数据库
DROP DATABASE 数据库名称;
删除名称为db2的数据库
判断删除数据库
DROP DATABASE IF EXISTS 数据库名称
使用数据库
查看当前使用的数据库
SELECT DATABASE();
使用数据库
USE 数据库名称;
操作表
查询表
查询当前数据库下所有表名称
SHOW TABLES;
查询表结构
DESC 表名称;
创建表
CREATE TABLE 表名(
字段名n 数据类型n
字段名n 数据类型n
-----
字段名n 数据类型n
)
创建一个名为tb_dog的表名
查看刚才新建表结构 删除
删除表
DROP TABLE 表名;
删除名为tb_dog的表
判断删除
DROP TABLE IF EXISTS 表名;
如果存在名为tb_dog的表就删除 修改表
修改表名
ALTER TABLE 表名 RENAME TO 新的表名;
将stu修改为students
添加一列
ALTER TABLE 表名 ADD 列名 数据类型;
原有结构
添加一列数据
ALTER TABLE 表名 ADD 列名 数据类型;
修改数据类型
ALTER TABLE 表名 MODIFY 列名 新数据类型;
将上面的phone列名的类型修改为char
修改列名和数据类型
ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型
将phone列名修改为tel 新的类型为varchar
删除列
ALTER TABLE 表名 DROP 列名;
删除tel列
DML(Data Manipulation Language,数据操作)
添加数据
给指定列添加数据
INSERT INTO 表名(列名,列名,.....) values(值1,值2);
验证是否添加成功给全部列添加数据
INSERT INTO 表名 VALUES(值1,值2,....);
添加lucy数据
验证
修改数据
UPDATE 表名 SET 列名1=值1,列名2=值2,....[where 条件]
修改语句中如果不加条件,则将所有数据都修改
当id为8的时候将名字修改为jams age改为18
验证
删除
DELETE FROM 表名 [where 条件];
如果删除语句中不加条件,则将所有数据都删除!
删除emp表中id为8的数据
DQL(Data Query Language,数据查询)
基础查询
查询部分列
SELECT 列名1,列名2 from 表名;
查询emp表中的age和name信息
查询所有列
SELECT * FROM 表名;
DISTINCT可以去除重复记录
查询emp表中的所有列数据
条件查询
SELECT 字段列表 FROM 表名 WHERE 条件列表
举例:查询emp表中age大于25的列
排序查询(ORDER BY)
SELECT 字段列表 FROM 表名 ORDER BY 排序字段名1 [排序方式1],排序字段名2 [排序方式2]....;
排序方式:
.ASC:升序排列(默认值) 如果不指定排序方式的话默认使用升序排列
.DESC:降序排列
将emp表中的数据根据age的大小进行降序排列.如果age一样的话根据dept_id大小进行升序排列
聚合函数
概念
将一列数据作为一个整体,进行纵向计算。
聚合函数分类
count(列名) //统计数量(一般选用部位null的列)
max(列名) //最大值
min(列名) // 最小值
sum(列名) //求和
avg(列名) //平均值
聚合函数语法
SELECT 聚合函数名(列名) FROM表;
null值不参与所有聚合函数运算
查询emp表中所有的列数
查看emp表中age最大的值是多少
查看emp表中age最小的人和名字
求emp表中所有age的和
求emp表中age的平均值
分组查询(GROUP BY)
语法
SELECT 字段列表 FROM 表名[where 分组前条件限定] GROUP BY 分组字段名 [HAVING 分组后条件过滤];
注意:分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义
where和having区别
.执行时机不一样:where是分组之前进行限定,不满足where条件,则不参与分组,而having是分组之后对结果进行过滤。
.可判断的条件不一样:where不能对聚合函数进行判断,having可以。
执行顺序:where>聚合函数>having
students中的所有数据
我们对表中数据根据sex分别求男女的数学平均分
查询表中男女生的数学平均分以及人数,分数小于70的不进行分组
查询表中男女生的数学平均分以及人数,分数小于70的不进行分组,分组之后大于90分的人数大于2
分页查询(LIMIT)
SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询条目数;
起始索引从0开始计算公式:起始索引=(当前页码-1)*每页显示的条数
Oracle分页查询使用rownumber
SQL server分页查询使用top
将表中的数据分成三列 查询第一页的内容
例如:新建一个 Message
对象,并将读取到的数据存入 Message
,然后 mHandler.obtainMessage(READ_DATA, bytes, -1, buffer).sendToTarget();
换成 mHandler.sendMessage()
。
约束
约束分类
非空约束
描述 保证列中所有数据不能有null值
关键字NOT NULL
唯一约束
描述:保证列中所有数据各不相同
关键字UNIQUE 主键约束
描述:主键是一行数据的唯一表示,要求非空且唯一
关键字PRIMARY KEY 默认约束
描述:保存数据时,未指定值则采用默认值
关键字 DEFALUT
外键约束
描述 外键用来让两个表的数据之间建立连接,保证数据的一致性和完整性
关键字 FOREIGN KEY
用来让两个表的数据之间建立链接,保证数据的一致性和完整性
dept表
emp表
模型
语法
创建表时添加外键约束
CREATE TABLE 表名(
列名 数据类型,
...
[CONSTRAINT] [外键名称] FOREIGN KEY(外键列名) REFERENCES 主表(主表列名)
)
建完表后添加外键约束
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称);
删除约束
ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;
多表查询
内连接
隐式内连接
SELECT 字段列表 FROM 表1,表二...where 条件;
查询emp和dept表中的所有数据 条件是emp中的部门id等于部门id
不这么写会出现笛卡尔积
显示内连接
SELECT 字段列表 FROM 表1[INNER] JOIN 表二 ON 条件;
内连接相当于查询A B 交集数据
外连接
左外连接
SELECT 字段列表 FROM 表1 LEFT [OUTER] JOIN 表2 ON 条件;
右外连接
SELECT 字段列表 FROM 表1 RIGHT [OUTER] JOIN 表2 ON 条件;
左外链接:相当于查询A表所有数据和交集部分数据
右外连接:相当于查询B表所有数据和交际部分数据
子查询
单行单列:作为条件值,使用= != > <等进行判断
SELECT 字段列表 FROM 表 WHERE 字段名 = (子查询);
多行单列:作为条件之,使用in等关键字进行判断
SELECT 字段列表 FROM 表 WHERE 字段名 IN(子查询);
多行多列:作为虚拟表
SELECT 字段列表 FROM(子查询) WHERE 条件;
事务
事物的特性
原子性
原子性事务中的操作为一个整体,要么都做,要么都不做.即一旦事务出错,就回滚事务一致性
一致性事务:执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。因此当数据库只包含成功事务提交的结果时,就说数据库处于一致性状态
简单举例 两个人各自有一千块钱 甲借给乙500块钱之后两个人钱数之和还是2000:隔离性
隔离性:一个事务的执行不能被其他事务干扰。即一个事物内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事物之间不能互相干扰 持久性
持久性:指一个事物一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响
# 开启事务
START TRANSACTION
或 BEGIN;
#提交事务
COMMIT;
# 回滚事务;
ROLLBACK;
(复习sql用法,参考的是黑马程序员的视频)
边栏推荐
- Win10无法连接打印机怎么办?不能使用打印机的解决方法
- Impressions of Embrace Jetpack
- kotlin Android序列化
- LLVM系列第六章:函数返回值Return
- LLVM系列第十八章:写一个简单的IR处理流程Pass
- 7. How to add the Click to RecyclerView and LongClick events
- Detailed explanation of RecyclerView series article directory
- 深度学习之文本分类总结
- 让深度学习歇一会吧
- IllegalStateException: Room cannot verify the data integrity. Looks like you've changed schema but
猜你喜欢
随机推荐
利用红外-可见光图像数据集OTCBVS打通图像融合、目标检测和目标跟踪
使用预训练语言模型进行文本生成的常用微调策略
FP6293电池升压5V-12V大电流2APWM模式升压方案
自定义圆形seekBar,超简单
想做好分布式架构?这个知识点一定要理解透彻
PyTorch(11)---卷积神经网络_一个小的神经网络搭建model
LLVM系列第二十章:写一个简单的Function Pass
Word2vec词向量
FP6195耐压60V电流降压3.3V5V模块供电方案
LLVM系列第六章:函数返回值Return
LeetCode2 电话号码的字母组合
boost库智能指针
LLVM系列第五章:全局变量Global Variable
让深度学习歇一会吧
LLVM系列第七章:函数参数Function Arguments
还是别看学位论文
系统线性、时不变、因果判断
7. How to add the Click to RecyclerView and LongClick events
使用npx -p @storybook/cli sb init安装失败,手把手搭建专属的storybook
流,向量场,和微分方程