MySql(一):基本操作
最最最重要的就是搞清楚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数据库的定义信息
crop database demo; # 删除数据库demo
select database(); # 查看正在使用的数据库
use demo; # 使用demo 数据库
ddl—table相关操作
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
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;
可关注公众号,随时随地查阅相关文章
上一篇: 在才学上占了上风的曹植,最后为何会输给自己的兄长?
下一篇: 从皇后到皇太后,杨丽华仅用了三年时间