数据库基础语法(SQL--增删改查 及 简单方法 以及SQL优化)

SQL基础语法

下述的table_name指表名称
SQL表内数据插入/新增语句

insert into table_name (field1,field2,…) values (value1,value2…)

use youzi;  #声明使用youzi这个数据库
create table commoditytype(  #创建一张表
ct_id int(11) primary key,
ct_name varchar(50) not null
)default charset=utf8;
#向表中插入一条数据
insert into commoditytype (ct_id,ct_name) values (1,'水果'),(2,'蔬菜');

SQL表内数据的修改/更新语句

update table_name set field1 = value1,field2 = value2… WHERE CONDITION;
注意:
1.WHERE CONDITION是条件判断,假如不使用这个,那么表中所有的数据都会被修改
2.使用WHERE CONDITION时,可以修改主键(下面代码中将演示)

#此处依旧使用上面所创建的表
update commoditytype set ct_name = '柚子' where ct_id = 1;
#当ct_id的值为1时,将其对应的ct_name值改为柚子

update commoditytype set ct_id = 3 where ct_name='蔬菜';
#当ct_name的值为蔬菜时,将其对应的ct_id修改为3

update commoditytype set ct_name = '橘子'#此时没有加where condition条件,那么整张表的ct_name都会改为橘子

update commoditytype set ct_id = 5;
#此时mysql会报出一个异常 ERROR 1062 (23000): Duplicate entry '5' for key 'PRIMARY'

SQL表内删除数据语句

删除全部
delete from table_name;
删除指定数据
delete from table_name WHERE CONDITION;

#此处依旧使用上面所创建的表
delete from commoditytype;#删除整张表
delete from commoditytype where ct_id=1;#删除表中ct_id对应的数据

SQL表内数据查询语句

查询全部
select * from table_name
精确查询
select field1,field2 from table_name;

#此处依旧使用上面所创建的表
select * from commoditytype;#查询并显示commoditytype这张表的所有数据

select ct_id from commoditytype;#查询并显示这张表ct_id字段的所有信息

select ct_id,ct_name from commoditytype;#查询并显示ct_id 和 ct_name的信息
#多个字段用逗号隔开

SQL的单表查询语句

DISTINCT关键字 去除重复数据
select distinct field1,field2… from table_name;
另外MySQL还支持简单的四则运算和关系运算符、逻辑运算符
BETWEEN ADN关键字
IS NULL关键字
IN关键字
LIKE关键字
代码如下所示

select * from commoditytype where ct_id>1 and ct_name='柚子';# 关系运算符和逻辑运算符
select * from commoditytype where ct_id between 1 and 3; #between and 关键字
select * from commoditytype where ct_id is null;    #is null 关键字
select * from commoditytype where ct_id in (10,20,30); #in 关键字,取出ct_id的值等于10,20,30时
select * from commoditytype where ct_name like '%'; #like 关键字 用于模糊查询

between and 对应not between and
is null 对应 is not null
in 对应 not in
三个关键字都用各自对应的反关键字,取值与之相反
in 关键字类似于一个集合,你所要筛选的字段是否在集合内(上面的(10,20,30)就是集合);
like 关键字 后面用到的’%‘是通配符,表示匹配一个或者多个字符,还可以使用’_'表示匹配一个字符

SQL的简单方法

排序 ORDER BY
select field1,field2… from table_name ORDER BY field[ASC|DESC]; #不带条件的排序
select field1,field2… from table_name WHERE CONDITION ORDER BY field[ASC|DESC]; #带条件的排序

select ct_name from commoditytype order by ct_id desc;
#打印ct_name,排序方式是根据ct_id,desc表示倒序,不写或者写asc表示正序

select ct_name from commoditytype where ct_name='柚子' order by ct_id desc;
#有条件的排序打印

LIMIT关键字
select field1,field2…from table_name limit 2; # limit 2 表示输出前两行数据
select field1,field2…from table_name limit 2,5; #limit 2,5表示从第3行开始,输出五行(从零开始计数)

select * from commoditytype limit 2;
#打印前两行
select * from commoditytype limit 25;
#从第三行开始,打印五行
#
#  与order by 连用可做排行榜
#
select * from commoditytype order by ct_id limit 1;
#升序排序之后,输出第一条数据

统计函数

COUNT()函数:统计记录数
AVG()函数:计算平均值
SUM()函数:求和
MAX()函数:取最大值
MIN()函数:取最小值

重点讲解COUNT()函数

select COUNT(*) from table_name: #*统计表中所有字段的数据,返回数量
select COUNT(field) from table_name; #统计表中field字段的数据,返回field字段的数量

select count(*) from commoditytype;
select count(ct_name) from commoditytype;

假如表中没有数据,那么返回0,不是null
count()函数通常与GROUP BY关键字一起使用,以达到分组查询统计的功能

select count(*) from commoditytype group by ct_name;

对于分组之后的数据进一步查询的话 需要使用HAVING关键字

select avg(c_inprice),c_type from commodity group by c_type having avg(c_inprice)>100;
#由于之前创的表数据不够使用,这边的commodity表是另一张表,c_inprice是商品进价
#语句解读:筛选出进价的平均值大于100的商品的种类和该商品进价的平均值

SQL优化

SQL优化,让搜索引擎使用索引进行查找数据,不要进行全表查找
1.在使用SQL语句时,优先考虑where和order by关键字
2.减少对null值的判断,否则搜索引擎会放弃使用索引而进行全表搜索
3.避免在where条件中使用!= < >,否则搜索引擎会放弃使用索引而进行全表搜索
4.避免使用like关键字,否则搜索引擎会放弃使用索引而进行全表搜索
5.避免在where条件中使用 or,否则搜索引擎会放弃使用索引而进行全表搜索
6.避免使用in 和 not in的使用,(使用exists代替)否则搜索引擎会放弃使用索引而进行全表搜索
7.在where中避免对字段的操作,否则搜索引擎会放弃使用索引而进行全表搜索

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值