SQL语句日常积累

1.create table 字段解释


CREATE TABLE t_age(
id bigint(20) NOT NULL AUTO_INCREMENT,
tdt datetime DEFAULT NULL,
tage int(20) DEFAULT NULL COMMENT '年龄',
tprovince VARCHAR(20) DEFAULT NULL COMMENT '省份',
PRIMARY KEY(id)
)ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

ENGINE=InnoDB:将数据库的引擎设置为InnoDB
AUTO_INCREMENT:自动增长的起始值为1
DEFAULT CHARSET=utf8:设置数据库默认字符集为utf-8

2.查看数据库

show DATABASES;

3.创建表

CREATE table table_name{
列名1 类型(长度) [约束],
列名2 类型(长度) [约束],
......
}

长度区别:
int:不影响存取值,即使设定的值超出了长度的范畴,也能存,如果没有达到设定的长度,则使用空格自动填充到设定的长度
char:不可变字符,设定的长度就是规定当前字段能存的数据的最大长度,若超出长度,则会报错,若没有达到长度,使用空格填充到设定的长度
varchar:可变字符,设定的长度同样是规定当前字段能存的数据的最大长度,若超出长度,则会报错,若没有达到长度,不会使用空格填充,实际多长就是多长

表约束
非空约束 NOT NULL
默认值约束 DEFAULT ‘男’
唯一约束 UNIQUE
主键约束 PRIMARY KEY

修改字段名:

ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型

4.查询表中全部数据

select * from 表名;

SELECT * FROM p_product;

5.查询表中某些列数据

select 列1,列2 from 表名;
语句执行顺序:from->select

SELECT id, title, original_price FROM p_product;

6.数据去重

select dintinct 列… from 表名;

7.范围查询

1.列再这个区间的值 where 列 between 条件1 and 条件2;
2.列不在这个区间 where 列 not between 条件1 and 条件2; 或者 where 列 !(between 条件1 and 条件2)

8.集合判断

where 列 in (值1,值2); 列中的数据值是in后面的值里面的

SELECT * FROM o_order WHERE total_price in (10000,20000);

9.模糊查询

where 列 like %0 表示以0结尾
where 列 like 0% 表示以0开始
where 列 like %0% 表示数据中包含0

select * FROM o_order WHERE affiliate LIKE '%google';

10.结果排序
对查询出的结果按照一列或多列进行升序还是降序排列 升序:asc 降序:desc 注意:不能使用中文的别名排序)

where 条件 order by 列[asc/desc]
语句执行顺序:from->where->select->order by

select * FROM o_order where total_price between 10000 and 20000 ORDER BY total_price DESC;

11.分页查询
beginIndex:表示从第多少条数据开始
pageSize:表示每页显示的数据条数
beginIndex = (当前页数-1)*pageSize

where 条件 limit benginlndex,pageSize;

SELECT * FROM o_order WHERE total_price BETWEEN 5000 and 10000 LIMIT 3,1500;

12.聚集函数

COUNT:统计结果记录数,若统计的是列,列中为Null,那么count将不会计算值
MAX: 统计计算最大值
MIN: 统计计算最小值
SUM: 统计计算求和
AVG: 统计计算平均值

13.分组
group by:分组汇总
使用了group by之后,要求selelct出的结果字段都是可汇总的,否则就会报错
group by原则:selelct后面的所有列中,没有使用聚合函数的列,必须出现在group by后面
如果要对分组后数据进行筛选,则必须使用having关键字,条件写在having后
分组通常和聚合函数一起使用

select 聚集函数 from 表名 where [条件] group by 列 having 分组后的条件
语句执行顺序: from->where->group by ->having->select->order by
where:过滤符合条件的数据
having:是对group by的结果进行过滤

SELECT * FROM o_order WHERE `status` = -5 GROUP BY total_price HAVING total_price BETWEEN 2500 and 5000;

Where和Having的区别
where:先过滤已有的数据(数据是已经存在的)-》进行分组-》聚集计算
Having:先分组-》在对分组进行计算-》根据得到的记过过滤(分组把数据算出来之后,在过滤)

14. 多表查询
多表查询又称交叉链接,交叉链接又称为笛卡尔积,使用交叉链接会产生笛卡尔积,

内链接:Join
过滤为空的数据(查询的实际上是两张表数据的交集部分) 目的 ==》解决笛卡尔积现象,正确查询了需要的数据

SELECT * FROM 表1, 表2 WHERE 表1.字段 = 表2.字段;  -- 隐式内连接,使用where条件消除笛卡尔积
SELECT * FROM 表1 [INNER] JOIN 表1 ON 表1.字段 = 表2.字段;	-- 显式内链接,如果是多张表,则一直在join..on后依次添加join..on即可,inner关键字可被省略

外链接:左外连接、右外链接、全外链接
**左外链接:**以左表为主,返回左表中的全部数据,在返回右表与共有键关联的数据,若右表中无数据则返回NULL

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咸宁七s

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值