A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 小石姐姐 于 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元以上的商品并且按照总金额升序排序









0 个回复

您需要登录后才可以回帖 登录 | 加入黑马