sql写法基本总结

一  多表查询:

多表查询分类:
笛卡尔积查询
外连接查询
内连接查询
自关联查询
子查询
1 笛卡尔积查询
介绍: 将两张数据表中的数据做相乘操作,但是得到的数错误较多,不建议使用
2 外连接查询
左外连接查询
原理: 查询左表所有数据和左右两张表具有交集的数据
语法: select 左表属性列名..from 左表名 left outer join 右表名 on 条件
右外连接查询
原理: 查询右边表所有数据和左右两张表具有交集的数据
语法: select 左表属性列名..from 左表名 right outer join 右表名 on 条件
3 内连接查询
原理: 查询两张表的交集
语法: select 属性列名 from 表 1 inner join 表 2 on 条件 #显式查询
Select 属性列名 from 表 1,表 2 where 条件 #隐式查询
注意: 显示查询只能查询两张表数据,有数据限制,但是隐式没有限制,而且还好用,推荐使
用隐式内连接查询
4 子查询
原理:将内置查询结果作为查询条件的一部分的查询,即查询条件是查询语句镶套的一部
分的查询,通俗点讲就是将内置的查询语句和条件表达式组成主要查询的查询条件
语法: select 属性列 from 表.. where 条件 ;
# 条件=select 属性列名 from 表.. where 条件
# 条件可以是内连接,也可以是外连接
select 镶套语句 from 镶套语句 where 镶套语句# 其实就是一种编程语法和
运算逻辑,灵活性贯穿整个 sql 语句,sql 这块最难,含有较多逻辑思想 注意:在使用子查询时若是需要,可以将起别名查询,同时需要注意,子查询是多表操作最难的
一部分
方式: 表名 后空格紧跟(as->可以省略) 别名
5 自关联查询
原理:在同一张表中的数据具有关联性.可以将这张表看作多张表进行条件查询\
语法: # 重点在于掌握表中数据之间的关系,无具体语法

二 基本的sql语法:

1: sql 语句基本
1>:Sql 语法注释
--注释内容->单行注释
#注释内容->Mysql 数据库特有方法
/*
多行注释
*/
2>: sql 语法常见数据类型:
Int 整数(类似 java)
Bigint 长整形(java 中 long)
Data 时间
Varchar 字符型(一般指明长度,组成字符串)
注意:在数据库中一般不存储音频,视频,,图片等大文件,存储的只是这些文件的地址值,交
给请求者按照地址去找对应的资源去处理.
3>;语法建议;凡是数据库操作尽量做到见名知意
如:在对表中添加数据时候尽量使用将所有属性都一一对应的方式,
同时注意在写较长的 sql 语句时需要将各种语句分行写,方便后面注释,便于阅读数据.
4>: 注意 在 sql 语句中除了数字外,其余所有的数据在进行操作时都需要使用单引
括起来,且需要注意在 sql 语句中*代表所有通配
2 :数据库操作 sql 语句:
1>:查看已经存在的所有数据库 show databases;
2>:创建数据库 create database 数据库名;
3>:查看创建数据库的语句(含基本的信息) show create database 数据库名;
4>:判断数据库如果不存在就创建 create database if not exists 数据库名;
5>:创建数据库并指明字符集 create database 数据库名 character set 编码格式
->gbk/utf8;
6>:判断数据库是否存在,不存在就创建并且指明数据库编码
Create databaase if not exists 数据库名 character set 编码
格式;
7>:修改数据库编码方式 alter database 数据库名 charcter set 编码方式;
8>: 删除数据库 drop database 数据库名;
9>: 判断数据库存在就删除 drop databaase if exists 数据库名;
10>: 使用指定的数据库 use 数据库名;
11>: 查询当前正在使用的数据库 select database(); 3 : 数据库表操作:
1>: 查看数据库中的所有表 show tables;
2>: 查看表结构 desc 表名;
3>: 查看数据库中的表的字符集 show table status 数据库名 like ‘表名’;
4>: 创建数据表 create table 表名( 列名 数据类型 约束条件,
列名 数据类型 约束条件,
.....
);
5>: 修改表名 alter table 原名 rename to 新名;
6>: 修改表的字符集 alter table 表名 character set 编码方式;
7>: 给表中添加列 alter table 表名 add 列属性名 类型;
8>: 修改表的数据类型 alter table 表名 midify 列属性名 新数据类型;
9>: 修改表中属性列名和数据类型 alter table 表名 change 旧的属性列名
新的属列名 数据类型;
10>:删表中除属性列 alter table 表名 drop 属性列名;
11>:删除表 drop table 表名;
12>:判断如果表存在就进行删除 drop table if exists 表名;
13>:给表中添加数据 insert into 表名 (属性 1,属性 2,属性 3...) values (属性 1,
属性 2,属性 3,,);
注意:在对表中数据进行添加时还可以使用只指明表名,不必指明属性名,但是在数
据上必须将所有属性对应的数据都进行添加,否则会报错,但是为了养成良好
的编码习惯建议使用全属性列名的方式去进行数据的添加;简洁添加如下;
Insert into 表名 values( 属性 1,属性 2.... 必须全部填写 );
对表中进行部分数据的添加 insert to 表名(部分属性列名) values (对应属性列);
14>:批量添加 insert into 表名 (属性) values (对应属性),(对应属性)......;
15>:复制数据表 create table 新表名 like 将要被复制的表名;
16>:修改表中数据 update 表名 set 列名=值 1,列名=值 2 ;
注意: 这块可以使用条件语句进行初步判断,对满足条件的数据项进行操作,示例
Update 表名 set 列名=新值 where 列名=条件值;
特别需要注意的是在进行表中数据修改时候需要对表中数据进行进一步条件判断,
否则会将整个列得数据都修改了.
17>:删除表数据(删除争个属性列无需进行条件添加,但是若是想删除的只是某
一组数据中的某个列属性,需要添加条件进行筛选),示例:
Delete from 表名 where 条件; 4:数据查询(单表简单查询)
1>:查询表中的所有数据 select * from 表名;
2>:查询指定属性列的数据 select 属性列名 1,属性列名 2,..from 表名;
3>:查询指定属性列后去重 select distinct 属性列名 from 表名;
4>:查询指定属性列,然后指数据运算后展示
select 属性列名 运算符号 操作数 from 表名;
注意:这块主要是针对 数字数据 可以做简单的加减乘除,但是需要注意的是这块是单
纯的数据查询展示, 并没有对数据库中的数据进行修改 ;
5>: 查询指定属性列数据在原有基础上进行基本的数据运算,并进行 null 判断,如果是
Null进行数据0的替换 select ifnull (数字属性列名,0) 运算符 操作数from 表
名;
6>: 查询指定属性列名,并改名 select 属性列名 as 新名字 from 表;
注意:这块的 as 可以省略
5:条件查询(单表简单查询)
查询的大体语句结构:
SELECT
字段列表
FROM
表名列表
WHERE
条件列表
GROUP BY
分组字段
HAVING
分组后的过滤条件
ORDER BY
排序
LIMIT
分页 Sql 语句中的所有条件判断符号
一个属列性多个查询条件条件后用 in(值 1,值 2,值 3)
示例:
1> : 查询 stock(数字类型的属性列)大于 20 的;select * from 表名
where stock>20;
2> : 查询 stock(任意类型)为指定值的:
方式 1:select * from 表名 where stock in(值 1,值 2...);
方式 2:select * from 表名 where stock=值 1 or stock=值 2;
3> : 查询属性列 stock 不等于指定值的:select * from 表名 where
Stock!=指定值(数字无需单引号,非数字需要单引号);
注意:不等于有两种表达方式
4> : 查询 stock 介于两个指定值之间 select * from 表名 where
Stock >值 1 and stock< 值 2;
5> 查询和 null 相关的属性,查询 stock 不为 null
Select * from 表名 when stock is not null;
或者为 null select * from 表名 when stock is null;
6:特殊字段条件查询(单表简单查询);
以某些字段结尾 %指定字段名
以某些字段开头 指定字段名%
包含某些字段 %指定的字段%
特定位置是某些字段(以第二个为例子,倒数类推) _ _指定字段%
长度限制字段(一个下划线就是一个字,类推)
1> :查询 name 中以楠结尾的 select * from 表名 where name like ‘%楠’;
2> :查询 name 中以楠开头的 select * from 表名 where name like ‘楠%’; 3> :查询 name 中楠是第二个字符的
select * from 表名 where name like ‘_楠’;
4> :查询 name 中包含楠的 select * from 表名 where name like ‘%楠%’;
5> :查询 name 长度为 2 的 select * from 表名 where name like ‘__’;
7:聚合函数
介绍:将一列数据作为一个整体进行数据查询操作
聚合函数分类:
聚合函数查询语法:
Select 聚合函数名(列名) from 表名 where 条件;
8:排序查询
排序方式:asc ->升序
desc ->降序
语法:select 列名 from 表名 where 条件 order by 依据列名 排序方式 ,
依据列名 排序方式;
示例:按照价格降序排序
SELECT * FROM 表名 ORDER BY 价格 DESC; 9:分组查询:
语法: SELECT 列名列表 FROM 表名 [WHERE 条件] GROUP BY 分组列名 [HAVING 分组后
条件过滤] [ORDER BY 排序列名 排序方式];
10:分页查询:
语法 : SELECT 列名列表 FROM 表名 [WHERE 条件] [GROUP BY 分组列名] [HAVING 分
组后的条件过滤] [ORDER BY 排序列名 排序方式] LIMIT 当前页数,每页显示的条数;
注意:当前页数:(当前页数-1) * 每页显示的条数
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值