mysql 中的数据库的备份和恢复:
备份数据库:
cmd窗口中使用mysqldump 备份数据库
mysqldump -u root -p db_name > c:/xxx.sql
例如:mysqldump -u root -p mydb2 > c:/mydb2.sql
恢复数据库:
方式一:
cmd窗口中使用mysql命令 恢复数据库
注意,只能恢复数据库中的数据,不能恢复数据库本身!所以要提前建好数据库.
mysql -h 主机名 -P 端口号 -u 用户名 -p db_name < c:/xxx.sql
-h 默认取值localhost
-P 默认取值3306
方式二:
在mysql命令下,source xxx.sql,这个命令的作用就是,在当前位置执行sql文件中的所有的sql.
首先新建出数据库,进入数据库,在source执行备份的sql文件即可。
source c:/xxx.sql
注意:如果在cmd窗口下,执行出现“拒绝访问”的提示请使用管理员权限进行打开
如果出现其他问题,但是又不是错误的问题,可能是因为版本问题,详情前看 mysql的专栏
数据服务器中涉及的计算问题:
1. mysql中的各个列属性其实在参与计算的时候作为表达式进行展示的数据
对于每一门添加十分:Select name,chinese+10,math+10,english+10 from exam;
2. 任何数值型的数据和null进行计算的话,在mysql5.6版本中是会将null作为0进行使用,使用了聚合函数的话。
3. 如果没有使用聚合函数的话数值型和null进行相加的话,最终的结果是 null 不支持
4. 解决方案就是使用 sql的内置函数 ifnull(参数1,0) 如果参数是null 默认指定 0 否则指定的是参数的本身
5. mysql 中基本所有的参数的默认值都是 null 数据库的服务器进行指定的默认值,可以直接进行使用null值进行填充,如果存在not null的直接约束的话,则不能使用null进行填充
6. 数据库服务器是可以为 表和列进行取别名的 关键字 as (现在基本可以进行省略);
查询语句:
//创建exam的表结构
create table exam(
id int primary key auto_increment,
name varchar(20) not null,
chinese double,
math double,
english double
);
//插入三条数据
insert into exam(id,name,chinese,math,english)
values(null,'关羽',89,79,90);
insert into exam(id,name,chinese,math,english)
values(null,'刘备',99,69,90);
insert into exam(id,name,chinese,math)
values(null,'张飞',89,79);
//查询整张表:Select * from exam;
//查询总分:select name as "姓名", chinese+math+english as '总分' from exam;
//给表进行改名:alter table stu_user rename to exam;
//去重:distinct 表中有内容重复的话可以直接进行去重的操作
// select distinct english as '英语' from exam;
//null处理语句:select name,ifnull(chinese,0)+ifnull(math,0)+ifnull(english,0) as '总分' from exam;
//select name ,english from exam;
// 支持as的隐式声明
//select name english from exam;
// where子查询
//根据姓名进行查询:select name,chinese,math,english from exam where name='关
羽';
//查询英语成绩大于90分的同学:Select name,english from exam where english in(90,100);
Select name,english from exam where english between 90 and 100;
Select name,english from exam where english>=90 and english<=100;
//查询总分大于230分的同学:where中不能别名是不能进行使用的
select name ,ifnull(chinese,0)+ifnull(math,0)+ifnull(english,0) as '总分' from exam where ifnull(chinese,0)+ifnull(math,0)+ifnull(english,0)>230;
//根据范围进行查询; select name ,english from exam where english in(90,89);
select name ,math from exam where math not in(90);
//模糊查询:Select name from exam where name like "%张%";
//中间或者开头是张字进行开头的结果 %--->表示的是出现一个或者多个 _ 占位符
Select name from exam where name like "%张_%";
Select name from exam where name like "%_张_%";
select id,ame,chinese,math,english from exam;
select * from exam ; //通配符的形式进行查询的操作
select name ,english from exam;
//错误的写法:Select name english from exam; english被当作是name的别名进行书写
Select distinct english from exam;
Select name,chinese+10,math+10,english+10 from exam;
Select name,ifnull(chinese,0)+ifnull(math,0)+ifnull(english,0) from exam;
Select name ,ifnull(chinese,0)+ifnull(math,0)+ifnull(english,0) as 总分 from exam;//别名可以进行省略 As
//其中聚合函数对null值作了一定的处理的机制
Select name ,ifnull(chinese,0)+ifnull(math,0)+ifnull(english,0) 总分 from exam;
//条件查询:%--->模糊查询表示的是通配符,可以出现任意字符一个或者多个 _模糊查询用于占位符,表示一定会出现的数据
//between...and...区间的范围, 测试边界值 --->包含边界值的存在
//in() 表示的是集合运算符
//like 模糊查询 和% _进行结合使用的机制
//is null 判断是否为空
//and 逻辑与 or 逻辑或 not 逻辑或,可以和比较运算符继续宁结合的使用
//modify 一般用于修改表中的属性的信息 ,修改表中的记录还是使用 set
select name from exam where name='关羽';
Select name from exam where english>90;
Select name ,english from exam where english between 90 and 100;
Select name, sum(chinese+math+english) "总分" from exam;
select name,ifnull(chinese,0)+ifnull(math,0)+ifnull(english,0) as zf from exam
where ifnull(c