mysql外键约束,多表设计,多表查询最完整版的(一)笔记

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
 
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值