关于Sql语句学习与优化

一,基础CURD语句

1.增加语句   INSERT INTO tablename (`name`,`sex`) values ('小白',‘0’)

2.查询语句    SELECT * FROM tablename   

3.删除语句   DELETE FROM tablename WHERE (`id`=$id)

4.修改语句    UPDATA tablename SET `name`='小王',`sex`='1' WHERE (`id`=$id)

初学者开始学习Sql语句是最先接触到的就是这四句CURD,但Sql语句光会这四句是远远不够的,

面对大数据的查询操作时,简单的查询语句会给服务器巨大的压力,导致服务器反应慢,引起宕机。


二,Sql学习

首先我们来学习一些数据库最重要的sql命令

select 从数据库中提取数据

updata 更新数据库中的命令 

delete 从数据库中删除数据

insert into 向数据库中插入数据

create database 创建新数据库

alter database 修改数据库

create table 创建新表

describe table  显示具体的表结构

alter table 变更数据表

drop table 删除表

create index创建索引

dorp index 删除索引 


三,查询语句

1.在表中,一个列可能会包含多个重复值,有时您也许希望仅仅列出不同(distinct)的值。

select distinct uname from school_user  返回表中uname用户的唯一值。

2.where子句 运用案例

(1).搜索表中uname为猪小明的同学

select * from school_user where uname = '猪小明'

(2).adn同时满足两select * from school_user where age > 2  or age < 25个条件

select * from school_user where age > 2  and age < 26

(3).or满足其中一个条件

select * from school_user where age > 2  or age < 25

and 和 or也可以组合使用

select * from school_user where age >2 and (sex='0' or uname = '大白')

(4).not 非 满足不包含该条件的值

select * from school_user where not age >25

查询得出表中小于等于25的值

(5).查询表中uname列中的空

select * from school_user where uname='' or uname is null;

这里需要注意如果表中为''那么可以用uname=''来查询,如果表中为null 查不到可以用 is null查询;

(6).between   adn 在。。。之间    和

select * from school_user where age between 2 and 25

查询表中条件age 大于等于2和小于等于25之间的所有值

(7).in 查询school_user表中age列中等于(2,22,25)的所有值

select * from school_user where age in(2,22,25)

(8).like模糊查询

% 表示多个字值,_ 下划线表示一个字符;

 M% : 为能配符,正则表达式,表示的意思为模糊查询信息为 M 开头的。

select * from school_user where uname like '小%'

 %M% : 表示查询包含M的所有内容。

%M_ : 表示查询以M在倒数第二位的所有内容。

case 可以判断想要输出的值的具体显示

(9).sql:case( when  then)事例     在....时    那时

select 
      (case 
        when sex='1' then '男'
        when sex='0' then '女'
        else '空的'
        end
       )性别

    from school_user;

(10)order by 排序默认为asc正序排列

select * from school_user   ORDER BY uname

以上就是sql基础语句要掌握的内容.


四、sql函数学习

  • AVG() - 返回平均值
  • COUNT() - 返回行数个记录的值,
  • MAX() - 返回最大值
  • MIN() - 返回最小值
  • SUM() - 返回总和

1.GROUP BY 语句用于结合聚合函数,根据一个或多个列对结果集进行分组。

统计 school_log 各个 site_id 的访问量:

SELECT site_id,sum(school_log.count) as nums from school_log GROUP BY site_id

GROUP BY 多表连接查询,查询school.user中用户的数量

select school_user.uname,sum(school_log.count) as nums from school_log LEFT JOIN school_user on school_log.site_id=school_user.id GROUP BY school_user.uname


2.HAVING,在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用。

HAVING 子句可以让我们筛选分组后的各组数据。

select school_user.uname,sum(school_log.count) as nums from school_log LEFT JOIN school_user on school_log.site_id=school_user.id GROUP BY school_user.uname HAVING sum(school_log.count) >300;


3.UCASE把字段的值转换为大写,LCASE把字段的值转换为小写。


4.MID 用于从文本字段中提取字符

select mid(uname,1,1)as uname from school_user

展示查询出来值的前一个字符。


5.LENGTH 用于返回文本字段中的值

select LENGTH(uname) from school_user

6.FROMAT  用于对字段的显示进行格式化

SELECT*,DATE_FORMAT(Now(),'%Y-%m-%d %H-%i-%s') AS date

FROM school_user;  


猜你喜欢

转载自blog.csdn.net/qq_42213615/article/details/80539176
今日推荐