1.导出

sql server 查询数据插入到视图 sql导入数据后怎么查看_分页

 

sql server 查询数据插入到视图 sql导入数据后怎么查看_聚合函数_02

2.导入

2.1.创建对应的数据库并切换到该数据库

sql server 查询数据插入到视图 sql导入数据后怎么查看_数据库_03

 2.2.把sql文件拖入到相应的数据库表名处。

sql server 查询数据插入到视图 sql导入数据后怎么查看_数据库_04

2.查询

2.1.准备数据

use mydb;
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for student
-- ----------------------------
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student`  (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '学生表的主键列',
  `name` varchar(255) ,
  `age` int(11) ,
  `address` varchar(255),
  PRIMARY KEY (`id`) USING BTREE
) ;

-- ----------------------------
-- Records of student
-- ----------------------------
INSERT INTO `student` VALUES (1, '张三', 18, '北京');
INSERT INTO `student` VALUES (2, '李四', 19, '北京');
INSERT INTO `student` VALUES (3, '王五', 19, '北京');
INSERT INTO `student` VALUES (4, '钱七', 19, '北京');
INSERT INTO `student` VALUES (5, '关羽', 25, '南京');
INSERT INTO `student` VALUES (6, '张飞', 25, '南京');
INSERT INTO `student` VALUES (7, '赵云', 28, '南京');
INSERT INTO `student` VALUES (8, '项羽', 19, '南京');
INSERT INTO `student` VALUES (9, '刘备', 30, '上海');
INSERT INTO `student` VALUES (10, '曹操', 40, '许昌');
INSERT INTO `student` VALUES (11, '夏侯', 36, '许昌');
INSERT INTO `student` VALUES (12, '诸葛亮', 38, '上海');
INSERT INTO `student` VALUES (13, '周瑜', 78, '江东');
INSERT INTO `student` VALUES (14, '小乔', 56, '江东');
INSERT INTO `student` VALUES (15, '孙尚香', 59, '江东');

2.2.基础查询

-- 查询表中的所有记录 * 表示统配,所有的列,但会导致索引失效
select * from student;
-- 查询表中的所有记录 列出每个列名
select id,name,age,address from student;

-- 查询部分列 查询到的结果放在一个临时表中
select name,age from student;

-- 赋予查询到的列名 别名 as 可以省略
select name as 姓名,age 年龄 from student;

2.3.去除重复值

-- 去重复值,要求查询的所有列值 都必须相同时。
select distinct address from student;

2.4.条件查询

-- 条件查询
-- 判断查询
select * from student where age>=25;
select * from student where age!=25;
select * from student where age<=25;

-- 多条件查询
select * from student where age>25 and address='许昌';

select * from student where age >30 or address='上海';

-- 范围语句
select * from student where age >=30 and age<=40;
-- between 二者之间
select * from student where age between 30 and 40;

-- 查询年龄是 20,25,30,45,55的人
select * from student where age in(20,25,30,45,55);

-- 模糊查询 like
-- 通配符 _ 通配一个字符  % 通配n个字符
-- 查询名字中第二个字符为三的人
select * from student where name like '_三';

-- 查询姓李的人
select * from student where name like '李%';

2.5.排序查询

-- 排序查询 order by 列名 desc:降序 
select * from student order by age;-- 升序

-- 多列进行排序年龄按照降序  id按照升序
select * from student order by age desc,id ;

-- 同时存在 where 与 order by 时,where 在前 order by 在后
select * from student where age>25 order by age;

2.6.查询列上进行运算。

select age,name from t_student;

select age*3,name from t_student;

-- 有了这个特性 就可以在设计数据库表的时候 如果有些值可以通过多列运算出来 此时就没有必要设计了。
-- 比如: 订单表
-- 订单号   订单的价格  订单的数量  订单的总价
-- 在实际开发中订单的总价可以通过订单的价格*订单的数量计算出来 那么就没有必要再数据库中再定义订单总价这列。
create table t_order(
     orderno int primary key,
		 name varchar(20),
		 price DECIMAL(7,2),
		 num int
		 -- total decimal(7,2) -- 这里没有必要再定义总价因为
)
select orderno,name,price,num,price*num total from t_order;

2.7.聚合函数

-- SQL 结构化查询语言 也是一种编程语言,所以也有函数 并且有 内置函数(官方) 和自定义函数(程序员)

-- count(列名) count(1)表中第1列但是它不能使用distinct去重  count(*)表中所有列 统计记录条数  这三个的区别

select count(distinct name),count(2),count(*) from t_student;


-- 聚合函数总共有5个:
--   max(列名):求某列的最大值。
--   min(列名):求某列的最小值。
--   sum(列名):求某列的和
--   avg(列名):求某列的平均值
--   count(列名):求某列的个数。
   
-- 求最大的年龄
select max(age) from t_student;

-- 求最小的年龄
select min(age) from t_student;

-- 求年龄的和
select sum(age) from t_student;

-- 求学生的个数.
select count(id) from t_student;

-- 求年龄平局值
select avg(age) from t_student;

2.8.分组查询

-- 在sql中有个 group by  语句  将某一列相同数据 视为一组 然后进行查询 与聚合函数连用。

-- 求各个地区的人数
select count(*),address from t_student group by address;

-- 查询 各个地区的平均年龄
select avg(age),address from t_student group by address;

-- 可以使用 having 对分组进行条件检索。 

-- 查询 平均年龄大于30的地区人数
select address,count(*),avg(age) from t_student group by address having avg(age)>30;

-- 查询 最大值小于30 的地区 人数 和 平均年龄
select address,count(*),avg(age),max(age) from t_student group by address having max(age)<30;
-- 查询 人数大于3的地区 最大年龄

-- 查询每个地区 25岁以上人数的数量
select address,count(*) from t_student where age>25 group by address;

注意: 若使用了group by 那么select后只能根分组的条件列和聚合函数。

select id,address,count(*),avg(age),max(age) from t_student group by address having max(age)<30;

这种是错误的,因为select后跟了id 而id不是分组的条件。

2.9.分页查询

-- 当数据库表数据量比较大   例如: 1000w行数据 如果我们执行 select * from student 此时有可能数据库卡死 -- 拿出1000w数据到内存里,你的内存可能会不够。导致电脑卡死。
-- 如果在java中 有可能内存直接溢出 所以实际开发中 都是分页查询 (部门查询)

-- 分页使用: limit 
select * from student limit 3,5; //从第3条记录查询 查询5条

select * from t_student limit 3,5; -- 从第三条记录查询 查询5条记录。
select * from t_student limit 0,5; -- 从第0条记录查询  查询5条记录。

--- 分页: 
select * from 表名 limit (n-1)*m,m; -- 查询第n页得m条记录。
--- n表示页码  m:表示每页得条数,
第1页每页显示5条记录: select * from t_student limit 0,5;
第2页每页显示5条记录: select * from t_student limit 5,5;
第3页每页显示5条记录: select * from t_student limit 10,5;
第4页每页显示5条记录: select * from t_student limit 15,5;

3.SQL的优先级

sql语法:
   select distinct *  from 表名 
       where 条件
       group by 分组
       having 分组条件
       order by 排序
       limit 分页。
 
上面为他得语法结构。顺序不能乱。 

mysql执行引擎:执行得顺序。

sql server 查询数据插入到视图 sql导入数据后怎么查看_数据库_05

select name as n,age as a from t_student where a>15;

运行结果

sql server 查询数据插入到视图 sql导入数据后怎么查看_聚合函数_06

 因为再执行where时,还没有执行select 所以电脑不知道名字为a的。