Mysql :(一)
顶哥说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 等;
DDL --database相关操作
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 数据库
DDL—table相关操作
create table demo( # 创建demo表, 指定 id 字段为主键约束,
idint 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
DML 相关操作
插入表记录: insert
insert into demo(id, name) values(1, "song");
insert into demo(id) values(2); # 无数据字段会使用null
更新表记录:update
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表并重建同结构的表
DQL 相关操作
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;
#查询第二页的数据信息
select * from student limit 3, 3;