查看MySQL服务器中有哪些数据
show databases;
一定要分号结尾
默认情况数据库会认为你只是单纯回车,并没有结束语句,如果要结束只需要在后面加上分号“;”即可。
-- 创建数据库:create (创建)
create database mydata;
#使用数据库:use(使用)
use (选择要用的数据库)
-- 例:
use abc;
#删除数据库:drop(删除)
图形化界面只需要右键删除即可
sqldrop database (选择要删除的数据库);
-- 例:
drop database abc;
#删除:delete(用于删除数据)
delete databases abc;
#创建表
create table
例:
create table book( );
#更改原有表的结构
-- 修改表
alter table 表名;
-- 添加表
add[column]定义[first | after];
#使用like关键字创建一个与参照表相同结构的新表,但内容不会被复制,因此创建的一个表是空表
-- 创建一个新表,并复制另一个表的表结构
create table [表] like [表];
#增加列:
alter table [表] drop [列名];
#复制表:
create table[if not exists][新表名]
[like 参照表名]
[as (select语句)];
#字段column
atler table [表]
drop column [字段];
#删除
drop是删除结构的删除语句
drop table [表];
#更改列名
alter table [表]
change[表]
#查看表的表结构
dis
#添加外键
add foreing key(用户号);
#参照表
###refernces 参照
###restrict:当要删除或更新父表中被参照列上的外键中出现的值的时候拒绝对父表的删除或更新操作。
###cascade:从父表删除或更新时自动删除或更新子表中匹配的行
#check约束
check(expr)
###这里check是完整性约束,用于限制列中值范围
###expr是一种表达式,指定需要检查的条件
###在用语法结构时,应空格隔开 ###引号的作用是
数据插入
-- 常用格式
insert into [表名] values('#第一个字段','#第二个字段','第三个字段');
-- 字符型打单引号
数据修改
-- 常用格式
update [参数][表名] #或update[参数]
set [修改的名称=修改后的值]
where [条件][行]
-- 如:
where 订单号=5
-- 如果想要修改所有就不需要添加where条件
-- 复合语句
-- 例:
update members set 密码='123' where 性别='女';
数据删除
delete是删除数据的语句
-- delete delete from[表名]
-- where[名称='参数']
-- 例:
delete from book where 出版社='清华大学出版社';
数据查询
where
from
select * form [表名] where [值='数据'];
select * form members where 姓名='张三';
模糊检索
like运算符:like只能进行字符串相匹配,运算对象可以是 char 、vachar、text、datetime
-- 例:
select * form members where 姓名 like 张三;
" _ " 和 “ % ”:通配符
“ _ ” :单个任意的字符: 一个长度任意内容
-- 例:
select * form members where 姓名 like '张_';
-- 或者where 姓名 like '_三';
-- 或者where 姓名 like '_三%';
“ % ”:多个任意字符:多个长度任意内容
-- 例:
select * form members where 姓名 like '张三';
between......and 模糊查询
-- 例:
select form members where 数量 between 10 and 20
-- 或者
where 出版日期 between '2017-07-01' and '2017-12-31';
in关键字:
select * from book where 出版社 in('清华大学出版社','北京大学出版社','人民邮电出版社')
-- 可以指定一个值表,值表中列出所有可能的值,当与值表中的人一个匹配时,即返回TRUE,否则返回false
mysql 中对于null有明确规定:
is null,不能直接写 null。
分类汇总与排序
聚合函数(只能是int或者float类型,必须是数值类型的数据)
-- 1.count函数//求结果集行数
select count(*)
from book;
例:
###查看menmbers表的总人数
select count(*) as 总人数
from members;//从*中找
where 性别='男';//查找性别为男的总和人数
--
###查看sell表中的订购册数
select sun(订购册数)
from sell
where 订购册数 is not null;
or
select SUM(订购册数) as 总订购册数
from sell
--
###平均订购册数
select avg(订购册数)
from sell
--
###最大值
select max(订购册数)
from sell;
--
###最小值
select min(订购册数)
from sell
--
###最大值最小值
select max(订购册数),min(订购册数)
from sell
group by 子句
通过查询,进行分组
-- 例:
select 性别,count(*) as 人数//按照性别分组
from members
group by 性别;
having 子句
通过筛选后的再进行筛选,一定要有group by 子句
也可以添加where语句进行筛选
-- 例:
select 用户号,avg(订购册数) as 平均订购册数
from sell
group by 用户号
having avg(订购册数) > 5
-- 查找sell表中用户的订单数都在2笔以上且每笔订购册数都在5本以上的用户。
select 用户号,count(订单号)###调出订单号满足条件的用户
from sell
where 订购册数>5 ###查询订购册数大于5的用户
group by 用户号 ###根据用户号进行分组
having count(*)>=2 ###根据分组出来的查询每笔消费在2笔级以上的用户
order by子句(排序)
select *
from book
order by 出版时间 ASC ; #asc是升序
--
select *
from book
order by 单价 DESC; #desc是降序
limit子句(限制语句,主要是限制被select返回的行数)
-- 需要注意偏移量的问题,limit 后面跟的第一个参数为返回值第一行的偏移量,第二个是返回的行数
select * from members order by 注册时间 ASC limit 5;
当数据查询表的时候,有很多种连接方式,
1、全连接
-- 用book和sell表进行全连接
select *
from book,sell;
等值连接
select 姓名,订单号 from members,sell where members.用户号=sell.用户号;
select 书名,作者 from book,sell where 订购册数>20 and book.图书编号=sell.图书编号
2、内连接 join连接
select 姓名,订单号
from members inner join sell on members.用户号=sell.用户号;
select 书名,作者 from book join sell on book.图书编号=sell.图书编号 where订购册数 >20;
3、外连接,分为左外连接,右外连接
左外连接代表查询左表的所欲数据,右表配不上就为null
select *
from book left outer join sell on book.图书编号=sell.图书编号;
评论区