mysql在数据库命令行操作基础应用
2018-04-03 22:33
627 查看
--查看当前在什么数据库里面
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 = '广东省';
-- 子查询
-- 总结
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 = '广东省';
-- 子查询
-- 总结
相关文章推荐
- MySQL基础操作之对数据库和表的增删改查
- MySql基础之数据库简介及mysql系统级操作和基础语法
- mysql常用基础操作语法(六)--对数据排序和限制结果数量的条件查询【命令行模式】
- python连接sqlite(mysql)数据库以及sqlite数据库基础操作
- MySQL基础(二)数据库、表的创建及操作
- mongo数据库命令行操作应用分享
- 【PHP基础知识】——数据库MySQL操作(下)
- Linux下将数据库从MySQL迁移到MariaDB的基础操作教程
- Mysql基础—对数据库和表的基本操作
- mysql 数据库基础操作
- C#数据库编程基础之部分控件应用及DataGridView的操作
- Linux下将数据库从MySQL迁移到MariaDB的基础操作教程
- PHP基础----PHP 与 MySQL----php操作数据库标准思路(自己总结的,没有标号)
- mysql中关于数据库和表的一些操作(命令行形式)
- mysql基础知识之-数据库的创建、查看等常用操作
- mysql常用基础操作语法(七)--统计函数和分组查询【命令行模式】
- nodejs简单应用四(数据库mysql操作)
- mysql 数据库 命令行的操作——对库的操作
- 数据库基础:讲解MySQL索引的概念及数据库索引的应用<转载>