本帖最后由 小石姐姐 于 2018-5-11 10:09 编辑
mysql笔记
四种层 DDL create ,drop alter truncate//删除 DCL控制 if grant DML insert update delete DQL select
关系数据库ER模型图E:Entity实体 R: Relational关系 primary key 主键unique 唯一约束 show tables; desc 表名称; 添加列alter table 表名 add 列名 类型 not null;alter table 表名 add 列名 类型 约束; 修改列的类型alter table 表名 modify 列名 类型 约束 alter table 表名 modify 列名 类型 约束alter table 表名 modify 列名 类型 约束 创建表create table test1(
id int primary key auto_increment,
username varchar(30) not null,
password varchar(30) not null
)
重启Mysqlservices.msc
更新表updata table set username = 's',password='sss' where id='111'
查询查询所有
select * form tbname
条件查询
select * form tbname where name ='name'
select username,password tbname where name ='name';
模糊查询
selecct username form tbname where name like 's_'两个字符
select username form tbname where name like 's%';开头
select username form tbname where name like '%s';结尾
select usernaem from tbname where name like '%s%'包含
范围查询
select * form tbname where English in (4,4,4);
排序查询
select * form tbname order by english ; 默认为升序查询
select * form tbname order by english desc;降序查询
select * from tbname order by english asc;升序
多个条件排序
select * form tbname order by english asc, chinese desc; 先按照英语升序排列,如果相同,就按照语文降序排列
模糊查询配合排序
select username,password form user where username like '李%' oder by english asc;
聚合函数
sum()求总和
select sum(english) from exan; /查询英语成绩的总和
select sum(english),sum(math) from exan;//查询多个
求三列数据所有的和
select sum(english) + sum(math) +sum(chinese) form exan;
这种是一列一列算好在相加
select sum(english+math+chinese) form exan;
这种是一行一行算好,每次相加 注意如果中间有null值 整行就作废,null+任何都为null
解决
select sum(ifnull(english,0)+math+chinese) form exan;
count()统计个数
select count(*) form exan where username like '李%';
分组查询(比如想查询哪个商品销量最好)
select product,count(*) from oderitem group by product order by count(*) desc;
创建数据库语法
createdatabase db1 character set gbk; create database db2 character set utf8 collate gbk;
创建数据库语法createdatabase db1 character set gbk; create database db2 character set utf8 collate gbk; //校对规则 数据库排序 例如笔画
l 修改某一列的所有值update user set password = '123';
l 按条件修改数据update user set password='huazhen' where username ='123123';
l 按条件修改多个列update user password='huazai',age='123' where username = '123123';
l 删除某一条记录delete from user where id ='1';
l 删除表中的所有记录
delete from user; truncate table user;
查询所有学生考试成绩信息select * from exam;
查询所有学生的姓名和英语成绩
select name,english from exam;
查询英语成绩信息(不显示重复的值)
select distinct english from exam;
查看学生姓名和学生的总成绩
select name,english+chinese+math from exam;
别名查询as
select name,english+chinese+math as 'sum' from exam;
条件查询 查询李四学生的成绩:
select name,english,math,chinese from exam where name = 'lisi';
查询名称叫李四学生并且英文大于90分
select * from exam where name ='lisi' and english > 90;
查询姓李的学生的信息
select * from exam where name like 'li%';
n查询英语成绩是69,75,89学生的信息
select * from exam where english in (69,75,89);
排序查询查询学生信息,并且按照语文成绩倒序排序:-->
select chinese order by chinese asc;
查询学生信息,先按照语文成绩进行倒序排序,如果成绩相同再按照英语成绩升序排序
select * from exam order by chinese desc, english asc;
查询姓李的学生的信息,按照英语成绩降序排序
select * from exam where name like 'li%' order by english ;
l获取所有学生的英语成绩的总和:
select sum(english) from exam;-----
获取所有学生的英语成绩和数学成绩总和
select sum(english)+ sum math from exam;
l 查询姓李的学生的英语成绩的总和
select sum(english) from exam where name like 'li%';
l 查询所有学生各科的总成绩:
select sum(ifnull(english,0)) + sum (ifnull(chinese,0)) + sum (ifnull(math,0)) from exam;
与上面的语句有什么不同?
* 上面的语句是按照列的方式统计,英语成绩总和+语文成绩总和+数学成绩总和。
* 下面的语句先计算英语+数学+语文然后再求和
l获得姓李的学生的个数
select count(*) from exam where name like 'li%';
l 获得数学成绩的最高分:n
select max(math) from exam;
l 获得语文成绩的最小值ml>n
select min(chinese) from exam where >100;
l 获取语文成绩的平均值
分组查询 语法:使用group by 字段名称; 按商品名称统计,每类商品所购买的个数: select product,count(*) group by product from oderitem;
按商品名称统计,每类商品所花费的总金额: select product sum(price) group by price from oderitem;
按商品名称统计,统计每类商品花费的总金额在5000元以上的商品并且按照总金额升序排序
|