mysql在数据库命令行操作基础应用

--查看当前在什么数据库里面
select database();

-- 数据库的备份与恢复
-- 备份
mysqldump -uroot -p 备份的数据库名称 > xx.sql            // (表示定向输出到xx.sql)
-- 恢复
1.新建一个数据库  python_restore
2. mysql -uroot -p python_restore < xx.sql     


-- E-R模型 三范式 逻辑删除

-- MySQL 查询

    -- 准备数据
create table students(
id int unsigned primary key auto_increment not null,
name varchar(20) default '',
age tinyint unsigned default 0,
height decimal(5,2),
gender enum('男','女','人x','保密'),
cls_id int unsigned default 0,
isdelete bit default 0
);


insert into students values
(0,'韦少',18,180.00,2,1,0),
(0,'小月月',18,180.00,2,2,1),
(0,'彭于晏',29,185.00,1,1,0),
(0,'刘德华',59,175.00,1,2,1),
(0,'芙蓉',38,160.00,2,1,0),
(0,'凤姐',28,150.00,4,2,1),
(0,'王祖贤',18,172.00,2,1,1),
(0,'周杰伦',36,NULL,1,1,0),
(0,'程坤',27,181.00,1,2,0),
(0,'刘亦菲',25,166.00,2,2,0),
(0,'金星',33,162.00,3,3,1),
(0,'静香',12,180.00,2,4,0),

(0,'周杰',34,176.00,2,5,0);


    -- select查询 as distinct

    as: 能够给数据表和字段起别名


    表名: sql 语句中只有一个表的时候表名可以省略
    数据库名称: 当前正在使用这个数据库,并且查询的数据表就是属于该数据库就可以省略

    distinct: 去重


    -- where 条件
    -- 查询编号大于3的女同学
    select * from students where id > 3 and gender = 2;
    -- 查询编号小于4或没被删除的学生
    select * from students where id < 4 or isdelete = 0;

    -- 查找以周开头的学生
    select * from students where name like '周%'
    select * from students where name like '周__';
    -- 使用正则表达式查询 rlike

    select * from students where name rlike '^周';

 -- 范围查询
    select * from students where id in(1,3,8);
    -- between ... and
    select * from students where id between 1 and 5;
    -- 判断是否为空 null
    select * from students where height is null;




  
    -- order by 默认就是升序排序
    -- select * from 表名 order by 列1 asc|desc,列2 asc|desc,...
    select * from students order by height desc;

    select * from students order by height desc,age desc;




    -- 聚合函数 为了统计而生 
    -- count(*) 整行是否为空
    -- count(id) id 是否为空

    -- count(height) 身高



    -- 分组: group by ... having
    -- 分组之后会对分组的数据执行一次升序排序的操作
    -- 根据分组字段来筛选数据表中的数据 根据分组字段来比较当前这个数据在分组的结果集中是否存在,如果不存在, 会将改行所有的
    -- 信息存入结果集合中,以后再遇到相同之中的时候就不会存入结果集中,但是会影响统计信息,
    -- 获取班级上女生的总人数
    any_value
    select gender,count(*) from students group by gender having gender = 2;
    where 是对于数据表的数据进行筛选的操作
    having 是对分组的结果做进一步的筛选操作

    -- limit
    -- select * from 表名 limit start,count;  start 的默认值为0
    select * from students limit 5;

    -- 已知 用户选择的页码 n, 1,2,3...n, 每页显示 m 条数据,求第 n 页应该显示哪些数据

    select * from students limit (n-1)*m,m



    -- 连接查询
    -- 查询班级学生的名字和学生所在的班级名字
    -- 学生名字: 在 students 表
    -- 班级名字: 在 classes
    错误: select students.name,classes.name from students,classes;
    -- 连接查询 inner join on
    -- inner join 内连接查询
    SELECT students.name,classes.name from students inner join classes on students.cls_id = classes.id;
    select s.name,c.name from students as s inner join classes as c on s.cls_id = c.id;

    select * from students as s inner join classes as c on s.cls_id = c.id;





    -- 第一种写法
    select s.name,c.name from students as s join classes as c on s.cls_id = c.id;
    -- 第二种写法
    select s.name,c.name from students as s cross join classes as c on s.cls_id = c.id;

    -- 外连接查询:左右连接
    -- 左连接 左表示主表,主表中的数据会全部显示(不管漫步满足连接条件都会显示)
    select s.name,c.name from students as s left join classes as c on s.cls_id = c.id;
    select s.name,c.name from students as s right join classes as c on s.cls_id = c.id;

    select s.name,c.name from students as s right outer join classes as c on s.cls_id = c.id;
    -- 自关联
    广东省: 100010 广东省 NULL
    广州市: 100050 广州市 100010
    天河区: 100080 天河区    100050

    -- 查询广东省 有哪些市
    -- 将 areas 表想象成两张表(父表,子表)
    select p.atitle,s.atitle from areas as p inner join areas as s on s.pid = p.aid where p.atitle = '广东省';


    -- 子查询

    -- 总结
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值