顶哥说sql语句其实不难,尤其对于那些英语稍好一些的人来说!

最最最重要的就是搞清楚sql语句的执行顺序!!!数据就像沙子, 语句就是筛子, 沙子按照顺序经过给定的筛子,留下来的就是你要的!!!并不是写在前面的就先执行!!! 如下:

SELECT  *, SUM(pnum)  '商品总数量'  (4)

FROM  products            (1)

GROUP BY  con             (2)

HAVING SUM(pnum) > 200;   (3)

这句sql语句其实是先执行 (1) FROM  products  从products表中筛选所有数据

再执行(2) GROUP BY con 将数据按照con字段进行分组

再执行(3) HAVING  SUM(pnum) > 200 筛选出pnum总数大于200的分组

最后执行(4) SELECT * , SUM(pnum)  将层层过滤的数据显示出来

注意:  顶哥较懒, 下文的sql语句统统小写啦

如遇诸如  :  Incoreect  string   value : .....  之类的报错请通过以下sql语句查看自己的数据库默认编码是否和输入环境的编码一致:

SHOW  VARIABLES  LIKE  'character%';

今天内容:

l  数据定义语言:简称DDL(Data Definition Language),用来定义数据库对象:数据库, 表, 列等. 关键字: create , alter , drop 等;

l  数据操作语言:简称 DML(Data Manipulation Language), 用来对数据库中表的记录进行更新. 关键字:insert , delete, update等;

l  数据控制语言:简称 DCL(Data Control Language), 用来定义数据库的访问权限和安全级别,及创建用户;

l  数据查询语言:简称DQL(Data Query Language), 用来查询数据库中表的记录. 关键字:select, from,  where 等;

create  database  demo;  # 创建名为demo的数据库(默认编码)

create  database  if  not  exists  demo; #  不存在则创建demo数据库

create  database  demo  character  set  ‘gbk’;     # 创建名为demo gbk编码的  数据库

show  databases;  # 列出mysql服务器中所有的数据库

show  create database  demo;  # 查看demo数据库的定义信息

drop  database demo;  # 删除数据库demo

select  database();  # 查看正在使用的数据库

use  demo;  # 使用demo 数据库

create table  demo(         # 创建demo表, 指定 id 字段为主键约束,

id int primary key,      #  name 字段为非空约束

name varchar(12)  not null

create  table  demo1  like  demo; #  创建demo1表,表结构和demo表相同

show  tables ;  # 查看数据库中所有的表

desc   demo;  #  查看demo表的结构(Tips:为何是desc?  describe是描述的意思!

drop  table  demo; # 删除demo表

drop  table  if  exists  demo; #  demo表存在则删除

alter  table   demo  add  address  varchar(20); # 为demo表增加地址字段

alter  table    demo   modify   address  varchar(30); # 修改表中字段的类型长度;

alter  table   demo   change   address    addr   varchar(30);  # 修改表中字段名;

alter  table   demo   drop   addr; # 删除表中的字段

rename  table  demo  to   dmeo1; # 将demo表重命名为demo1

alter  tabel  demo1  character  set  'gbk'; #将demo1表的编码修改为gbk

插入表记录: insert

insert  into  demo(id,  name)  values(1, "song");

insert  into  demo(id)  values(2);  # 无数据字段会使用null

update  demo  set  id = 1, name = 'song';  # 将demo表中记录全部更新

update  demo  name = 'hui'  where  id = 2; #  将id为2的记录名字更新为hui

delete  from  demo; #  删除demo表中的所有数据

delete  from  demo  where  name = 'song'; # 删除demo表中name为song的记录

truncate  table  demo;  # 摧毁demo表并重建同结构的表

select  *  from  demo ; #  查询demo表中所有的数据

select  id, name  from  demo; # 查询demo表中id 和 name 列的数据

select  id  as   编号,  name  as  姓名  from  demo  as  学生表; #  使用别名,as 可以省略;

select   distinct  name, age  from  demo; # 去除重复值

select  math + english  总成绩  from  student;  # 从学生表中查询熟悉和英语的总分并使用别名;

select  name , age + 10  from student; # 查询姓名年龄,并将每个人的年龄增加10岁;

select  *  from  student   where   math > 100  or english  > 100; # 查询任意一科超过100的学生;

select  *  from  student   where   name   like   '_宋%宝'; # 查询所有名字第二个字是宋且以宝结尾的学生;

select  *  from  student   where   age > 12  order  by  id  asc,  age   desc; # 查询年龄大于12的按照id升序排序显示,id一样时按照年龄降序排序

select   max(age)  from student; #  查询学生表中年龄最大的

select  *  from  student  where   age  >  18  group  by  sex    having   name is not  null;  #   查询 年龄大于18的按照性别进行分组,且姓名不为空的记录

Tips:  having 和where的区别:

having 是在分组后对数据进行过滤

where 是在分组前对数据进行过滤

having 后面可以使用聚合函数

where 后面不可以使用聚合函数

select   *  from  student  limit  0, 3 ; #  查询索引从0开始,共3条记录

Tips:  起始索引 = (当前页页码数 -1 ) * 每页显示条数

#查询第一页的数据信息

select  *  from  sudent  limit  0, 3;

#查询第二页的数据信息