精华内容
下载资源
问答
  • sql查询语句
    千次阅读
    2020-12-17 09:49:25

    以下的指令适用于MYSQL环境。

     

    1.查询所有记录

    select * from table

     

    2.模糊查询

    select * from 表 where 字段 like '%查询条件%‘

    替代方式,INSTR的效率会更高,例子如下:

    select * from 表 where INSTR(字段,查询条件)>0

    select * from info where INSTR(typefeild,'红色') > 0

     

    3.关联表

    查询格式,主要用到 left join table on 条件

     

    微软不推荐from 后面写多个表名的做法。主要还是可读性、规范性方面的考虑。

     

     

    4.排序

    1:字段名为你要排序的字段。一般排序的字段为id、时间、点击量等等

    2.asc为升序、desc为降序。

     

    select * from 表名 order by 字段名  desc   //降序

    select * from 表名 order by 字段名  asc   //升序

     

    举个栗子

    /**查询员工信息,要求工资按照从高到低进行排序(默认升序)**/

    SELECT * FROM employees ORDER BY salary ASC;

    /**方法2:**/

    SELECT * FROM employees ORDER BY salary;

    /**查询部门标号大于等于90的员工信息,并且按照入职时间进行先后排序**/

    SELECT * FROM employees

    WHERE department_id >= 90

    ORDER BY hiredata ASC;

    /**按照员工的年薪的高低显示员工的信息和年薪**/

    SELECT *, salary*12(1+IFNULL(commission_pct,0) 年薪

    FROM employees

    ORDER BY 年薪 ASC;

    /**按照姓名的长度显示员工的姓名和工资**/

    SELECT LENGTH(last_name) 姓名字节长度 ,last_name,salary

    FROM employees

    ORDER BY 姓名字节长度;

    /**查询员工信息,先按工资升序排序,在按照员工编号降序排序**/

    SELECT * FROM employees ORDER BY salary ASC,employee_id DESC;

     

    进阶练习:

    /**选择工资不在8000-9000的员工的姓名和工资,按照工资的降序排序**/

    SELECT last_name,salarty

    FROM employees

    WHERE salary NOT BETWEEN 8000 AND 9000

    ORDER BY salary DESC;

    /**查询邮箱中包含e的员工信息,先按照邮箱的字节数升序排序,在按照部门的降序排序**/

    SELECT *

    FROM employees

    WHERE email LIKE('%e%')

    ORDER BY LENGTH(email) ASC, department_id DESC

     

     

    5.读取前几条数据

     

    select * from 表名 limit 10

     

     

    6.去重复

    select distinct 字段名 from 表名

     

     

    7.分组

    关键字:grounp by

    例子,按照site_id进行分组并统计count

     

    SELECT site_id, SUM(access_log.count) AS nums

    FROM access_log GROUP BY site_id;

     

    8.取交集

    select * from 表A,表B where A.ID=B.ID

     

     

     

    更多相关内容
  • SQL查询语句大全集锦(超经典)
  • SQL查询语句详解

    千次阅读 2020-10-26 11:48:42
    SQL查询语句详解(一) 一、基本语法 Select select_list From table_name Where condition_expression Group by group_columns having condition_expression Order by sort_columns 二、查询实例 查询所有字段 ...

    SQL查询语句详解(一)

    一、基本语法

    Select  select_list
    From  table_name
    Where  condition_expression
    Group by  group_columns   
    having condition_expression
    Order by sort_columns
    

    二、查询实例

    • 查询所有字段
    • 查询指定字段
    • 用DISTINCT去除结果中的重复行
    • 查询指定数据
    • 带有in关键字的查询
    • 带between and的范围查询
    • 带like的字符匹配查询
      表1:学生
    • 结构
    • 数据

      表2:商品表1
    • 结构:
    • 数据:

      表3:商品表2
    • 结构:
    • 数据

      表4:教师
    • 结构:
    • 数据

    • 数据分析需求

    1)查询所有学生的详细信息

    select * from 学生;
    

    2)查询学生的学生号,姓名与专业

    select 学生号,姓名,专业 from 学生;
    

    3)从商品表1中查询出每一种商品的价值

    select 商品代号,单价,数量,单价*数量 as 总价 from 商品表1;
    

    4)从商品表1中查询每种商品的分类名 去除重复项

    select distinct 分类名 from 商品表1;
    

    5)从商品表1中查询出分类名为"电视机"的所有商品

    select * from 商品表1 where 分类名 ='电视机';
    

    6)从商品表1中查询出单价低于2000元的每一种商品代号,分类名和单价

    select 商品代号,分类名,单价 from `商品表1`  where 单价<2000;
    

    7)从商品表2中查询出产地为北京、山西、无锡的所有商品

    select * from 商品表2 where 产地='北京' or 产地='山西' or 产地='无锡';
    select * from 商品表2 where 产地 in('北京','山西','无锡');
    

    8)从商品表1中查询出商品代号以字符串"dsj"开头的所有商品 (考察模糊查询like以及通配符)

    select * from 商品表1 where 商品代号 like 'DSJ%';
    

    9)从商品表1中查询单价在1000到2000之间的所有商品

    select * from 商品表1 where 单价 between 1000 and 2000;
    

    10)查询所有姓张的学生的详细信息

    select * from 学生 where 姓名 like '张%';
    

    11)从商品表1中查询出单价大于1500,同时数量大于等于10的商品

    select * from 商品表1 where 单价>1500 and 数量>=10;
    

    12)从教师表中查询联系电话为空的教师信息

    select * from 教师 where 联系电话 is null;
    

    13)从选课表中查询按课程号的升序,同一课程按成绩降序排列

    select*from 选课 order by 课程号 asc, 课程号 desc;
    

    14)从学生表中查询各个专业的人数

    select 专业,count(*) as 人数 from 学生 group by 专业
    

    15)从学生表中查询出专业的学生数多于1人的专业名及人数

    select 专业,count(*) as 人数 from 学生 group by 专业 having count(*)>1
    select 专业,count(*) as 人数 from 学生 group by 专业 having 人数>1
    

    16)从选课表中查询成绩最高前三位

    select * from 选课 order by 成绩 desc limit 3
    

    17)查询各个专业男女人数各是多少

    select 专业,性别,count(*) as 人数 from 学生 group by 专业,性别
    

    18)从商品表1中查询出所有商品的最大数量、最小数量、平均数量及数量总和

    select sum(数量) from 商品表1;
    select max(数量) from 商品表1;
    select min(数量) from 商品表1;
    select avg(数量) from 商品表1;
    

    19)从商品表1中查询出分类名为“电视机”的商品的种数、最高价、最低价及平均价

    Select sum(数量) from 商品表1 where 分类名='电视机';
    Select avg(数量) from 商品表1 where 分类名='电视机';
    Select min(数量) from 商品表1 where 分类名='电视机';
    Select max(数量) from 商品表1 where 分类名='电视机';
    

    20)查询出产地为南京或无锡的所有商品的商品代号、分类名、产地和品牌

    20)查询出产地为南京或无锡的所有商品的商品代号、分类名、产地和品牌

    select * from 商品表1 inner join 商品表2 where 产地 in('南京','无锡');
    

    select * from 商品表1 inner join 商品表2 where 产地='南京' or 产地='无锡';
    

    员工表
    员工表中含有佳字的

    select * from 员工 where 姓名 like '%佳%';
    

    员工表中含有佳字的两个子长度的员工信息

    select * from 员工 where 姓名 like '_佳' or 姓名 like '佳_';
    

    查询本公司有多少个部门

    select distinct 部门 from 员工;
    

    请列出家住北京市的生产制造部的家庭名单住址;

    select 姓名,家庭住址 from 员工 where 部门='生产制造部' and 家庭住址 like '%北京市%';
    

    请查询出生成制造部女性未婚员工的基本信息

    select * from 员工 where 部门='生产制造部' and 性别=-1 and 婚姻状况=-1;
    

    显示生产制造部员工姓名年龄 部门和目前薪资

    select 姓名,year(now())-year(出生日期) as 年龄,部门,目前薪资 from 员工 where 部门='生产制造部';
    

    查询出生产制造部中员工年龄大于40岁的员工

    select 姓名,year(now())-year(出生日期) as 年龄,部门,目前薪资 from 员工 where 部门='生产制造部' and
    
    year(now())-year(出生日期)>40;
    

    查询入职日期超过三十年的老家伙

    select 姓名,year(now())-year(雇佣日期) as 工龄,部门,目前薪资 from 员工 where 
    year(now())-year(雇佣日期)>=30;
    显示出订货明细表中每个订单的订单号码 产品编号和时间销售额
    
    

    显示出订货明细表中每个订单的订单号码 产品编号和时间销售额

    select 订单号码,产品编号,(单价*数量*(1-折扣)) as 实际销售额 from 订货明细;
    

    查询已婚员工信息 显示 员工编号姓名性别显示出男或女 以及员工婚姻状况

    
    
    SELECT
    	员工编号,姓名,
    CASE
    		性别 
    		WHEN - 1 THEN
    		'女' 
    		WHEN 0 THEN
    		'男' ELSE '不详' 
    	END 性别,
    CASE 婚姻状况 
    	WHEN - 1 THEN
    	'未婚' 
    	WHEN 0 THEN
    	'已婚' ELSE '不详' 
    END 婚姻状况
    FROM
    	员工;
    	
    
    SELECT
    	员工编号,姓名,
    CASE
    		性别 
    		WHEN - 1 THEN
    		'女' 
    		WHEN 0 THEN
    		'男' ELSE '不详' 
    	END 性别,
    CASE 婚姻状况 
    	WHEN - 1 THEN
    	'未婚' 
    	WHEN 0 THEN
    	'已婚' ELSE '不详' 
    END 婚姻状况
    FROM
    	员工 where CASE 婚姻状况 
    	WHEN - 1 THEN
    	'未婚' 
    	WHEN 0 THEN
    	'已婚' ELSE '不详' 
    END='已婚';
    
    展开全文
  • 1.4 将查询结果插入到表中 2、更新数据 3、删除数据 数据库通过插入、更新和删除等方式来改变表中的记录。插入数据是向表中插入新的记录,通过 INSERT 语句来实现。更新数据是改变表中已经存在的数据,使用UPDATE...

    目录

    1、插入数据

    1.1 为表的所有字段插入数据

    1、insert语句中不指定具体的字段名

    2、insert语句中列出所有字段

    1.2 为表的指定字段插入数据

    1.3 同时插入多条记录

    1.4 将查询结果插入到表中

    2、更新数据

    3、删除数据


    数据库通过插入、更新和删除等方式来改变表中的记录。插入数据是向表中插入新的记录,通过 INSERT 语句来实现。更新数据是改变表中已经存在的数据,使用UPDATE 语句来实现。删除数据是删除表中不再使用的数据,通过DELETE 语句来实现。

    1、插入数据

    插入数据是向表中插入新的记录。通过这种方式可以为表中增加新的数据。在 MySQL中,通过INSERT语句来插入新的数据。使用INSERT 语句可以同时为表的所有字段插入数据,也可以为表的指定字段插入数据。INSERT语句可以同时插入多条记录,还可以将一个表中查询出来的数据插入到另一个表中。

    1.1 为表的所有字段插入数据

    通常情况下,插入的新记录要包含表的所有字段。INSERT 语句有两种方式可以同时为表的所有字段插入数据。第一种方式是不指定具体的字段名;第二种方式是列出表的所有字段。

    1、insert语句中不指定具体的字段名

    在 MySQL中,可以通过不指定字段名的方式为表插入记录。其基本语句形式如下:

    insert into 表名 values(值1,值2,...,值n);

    其中,“表名”参数指定记录插入到哪个表中;“值n”参数表示要插入的数据。“值1”到“值n”分别对应着表中的每个字段。表中定义了几个字段,INSERT语句中就应该对应有几个值。插入的顺序与表中字段的顺序相同。而且,取值的数据类型要与表中对应字段的数据类型一致。

    下面向S表中插入记录。插入记录之前,可以通过DESC语句来查看S表的基本结构。查询结果如下:

    从查询结果可以看出,S表包含4个字段。那么INSERT 语句中的值也应该是4个。INSERT语句的代码如下:

     !!!字符串类型的数据,取值必须加上引号。

    2、insert语句中列出所有字段

    INSERT语句中可以列出表的所有字段,为这些字段来插入数据。其基本语句形式如下:

    insert into 表名(属性1,属性2,...,属性n)
    values (值1,值2,...,值n);

    其中,“属性n”参数表示表中的字段名称,此处必须列出表的所有字段的名称;“值n”参数表示每个字段的值,每个值与相应的字段对应。

    下面向S表中插入一条新记录。INSERT 语句的代码如下:

    查询结果显示,记录已经插入成功。如果表的字段比较多,用第二种方法就比较麻烦。但是,第二种方法比较灵活。可以随意的设置字段的顺序,而不需要按照表定义时的顺序。值的顺序也必须跟着字段顺序的改变而改变。

    下面向S表中插入一条新记录。INSERT语句中字段的顺序与表定义时的顺序不同。INSERT语句的代码如下:

    1.2 为表的指定字段插入数据

    其基本语句形式如下:

    insert into 表名(属性1,属性2,…,属性m)
    values(值1,值2,.…,值m);

    其中,“属性m”参数表示表中的字段名称,此处指定表的部分字段的名称;“值m”参数表示指定字段的值,每个值与相应的字段对应。

    下面向S表的sno和sname这2个字段插入数据。INSERT语句的代码如下:

    这种方式也可以随意的设置字段的顺序,而不需要按照表定义时的顺序。

    !!!没有赋值的字段,数据库系统会为其插入默认值。这个默认值是在创建表的时候定义的。如上面function字段和address字段的默认值为NULL。如果某个字段没有设置默认值,而且是非空,这就必须为其赋值。不然数据库系统会提示“Field'name' doesn't have a default value”这样的错误。

    1.3 同时插入多条记录

    同时插入多条记录,是指一个 INSERT语句插入多条记录。当用户需要插入好几条记录,用户可以使用上面两个小节中的方法逐条插入记录。但是,每次都要写一个新的INSERT 语句。这样比较麻烦。MySQL 中,一个 INSERT语句可以同时插入多条记录。其基本语法形式如下:

    insert into 表名[(属性列表)】
    values (取值列表1),(取值列表2),
    ...,
    (取值列表n);

    其中,“表名”参数指明向哪个表中插入数据;“属性列表”参数是可选参数,指定哪些字段插入数据,没有指定字段时向所有字段插入数据;“取值列表n”参数表示要插入的记录,每条记录之间用逗号隔开。

    向MySQL的某个表中插入多条记录时,可以使用多个INSERT语句逐条插入记录,也可以使用一个 INSERT语句插入多条记录。选择哪种方式通常根据个人喜好来决定。如果插入的记录很多时,一个INSERT 语句插入多条记录的方式的速度会比较快。

    下面向S表中插入3条新记录。INSERT 语句的代码如下:

    不指定字段时,必须为每个字段都插入数据。如果指定字段,就只需要为指定的字段插入数据。

    1.4 将查询结果插入到表中

    INSERT语句可以将一个表中查询出来的数据插入到另一表中。这样,可以方便不同表之间进行数据交换。其基本语法形式如下:

    insert into 表名1(属性列表1)
    select 属性列表2 from 表名2 where 条件表达式;

    其中,“表名1”参数说明记录插入到哪个表中;“表名2”参数表示记录是从哪个表中查询出来的;“属性列表1”参数表示为哪些字段赋值;“属性列表2”表示从表中查询出哪些字段的数据;“条件表达式”参数设置了SELECT 语句的查询条件。

    使用这种方法时,必须保证“字段列表1”和“字段列表2”中的字段个数是一样的。而且,每个对应的字段的数据类型是一样的。如果数据类型不一样,数据库系统会报错。然后,阻止INSERT语句向下执行。

    下面将s_temp表中所有数据查询出来,然后插入到S表中。插入之前,先执行SELECT语句来查看s_temp表中的记录。SELECT语句执行结果如下:

     

    2、更新数据

    更新数据是更新表中已经存在的记录。通过这种方式可以改变表中已经存在的数据。例如,学生表中某个学生的家庭住址改变了,这就需要在学生表中修改该同学的家庭地址。在MySQL中,通过UPDATE语句来更新数据。

    在 MySQL中,UPDATE语句的基本语法形式如下:

    update 表名
    set 属性名1=取值1,属性名2=取值2,
    ...,
    属性名n=取值n
    where 条件表达式;

    其中,“属性名n”参数表示需要更新的字段的名称;“取值 n”参数表示为字段更新的新数据;“条件表达式”参数指定更新满足条件的记录。

    下面更新s表中sno值为s1的记录。将sname字段的值变为‘精益求精‘,city的值变为’北京‘。

    表中满足条件表达式的记录可能不止一条。使用UPDATE语句会更新所有满足条件的记录。

    下面更新S表中 sno值为s100-s102的记录。将status字段的值变为30。将city字段的值变为“天津”。

    !!!使用UPDATE语句更新数据时,可能会有多条记录满足WHERE条件。这个时候一定要特别小心,最好先执行SELECT语句判断满足WHERE条件的记录是否确实是需要更新的。如果其中有些记录不需要更新,应该重新设置WHERE条件.

    3、删除数据

    删除数据是删除表中已经存在的记录。通过这种方式可以删除表中不再使用的记录。例如,学生表中某个学生退学了,这就需要从学生表中删除该同学的信息。MySQL中,通过DELETE 语句来删除数据。

    MySQL中,DELETE语句的基本语法形式如下:

    delete from 表名[where条件表达式】;

    其中,“表名”参数指明从哪个表中删除数据;“WHERE条件表达式”指定删除表中的哪些数据。如果没有该条件表达式,数据库系统就会删除表中的所有数据。

    下面删除s表中sno值为s1的记录。

    DELETE语句可以同时删除多条记录。

    下面删除s表中 city值为‘北京’的记录。

    DELETE语句中如果不加上“WHERE条件表达式”,数据库系统会删除指定表中的所有数据。

    下面删除s表中的所有记录。

    因为执行DELETE语句后,会将记录从表中删除。删除过程中不会有任何提示,因此必须要特别小心。在条件允许的情况下,最好先用SELECT语句查询准备删除的记录。这样可以确认这些记录确实是需要删除的。

    展开全文
  • SQL查询语句(从单表到多表、从简单到复杂)

    千次阅读 多人点赞 2021-06-06 22:41:08
    数据库sql语句及字段名不区分大小写,值必须一一对应 1.创建三张表,学生表、选课表、成绩表 CREATE TABLE student (Sno varchar(20) NOT NULL, Sname varchar(20) NOT NULL, sex varchar(20) NOT NULL, age ...

    数据库sql语句及字段名不区分大小写,值必须一一对应

    1.创建三张表,学生表、选课表、成绩表

    CREATE TABLE student
     (Sno varchar(20) NOT NULL,
     Sname varchar(20) NOT NULL,
      sex varchar(20) NOT NULL, 
      age INT NOT NULL, 
      dept varchar(20) NOT NULL, PRIMARY KEY (Sno) 
      );
    CREATE TABLE course
    (Cno    varchar(20)    NOT NULL,
     Cname  varchar(20)    NOT NULL,
     hours VARCHAR(20)    NOT NULL,
     PRIMARY KEY (Cno)
    );
    CREATE TABLE SC
    (Sno    varchar(20)    NOT NULL,
     Cno    varchar(20)    NOT NULL,
     grade  INT    ,
     PRIMARY KEY (Sno,Cno)
    );
    
    

    2.在三张表中分别添加数据

    INSERT INTO student VALUES ('9512101','李勇','男',19,'计算系');
    INSERT INTO student VALUES ('9512102','刘晨','男',20,'计算系');
    INSERT INTO student VALUES ('9512103','王敏','女',20,'计算系');
    INSERT INTO student VALUES ('9521101','张立','男',22,'信息系');
    INSERT INTO student VALUES ('9521102','吴宾','女',21,'信息系');
    INSERT INTO student VALUES ('9521103','张海','男',20,'信息系');
    INSERT INTO student VALUES ('9531101','钱小力','女',18,'数学系');
    INSERT INTO student VALUES ('9531102','王大力','男',19,'数学系');
    
    INSERT INTO course VALUES ('C01','计算机文化学','70');
    INSERT INTO course VALUES ('C02','VB','90');
    INSERT INTO course VALUES ('C03','计算机网络','80');
    INSERT INTO course VALUES ('C04','数据库基础','108');
    INSERT INTO course VALUES ('C05','高等数学','180');
    INSERT INTO course VALUES ('C06','数据结构','72');
    
    INSERT INTO SC VALUES ('9512101','C01',90);
    INSERT INTO SC VALUES ('9512101','C02',86);
    INSERT INTO SC VALUES ('9512101','C06',NULL);
    INSERT INTO SC VALUES ('9512102','C02',78);
    INSERT INTO SC VALUES ('9512102','C04',66);
    INSERT INTO SC VALUES ('9521102','C01',82);
    INSERT INTO SC VALUES ('9521102','C02',75);
    INSERT INTO SC VALUES ('9521102','C04',92);
    INSERT INTO SC VALUES ('9521102','C05',50);
    INSERT INTO SC VALUES ('9521103','C02',68);
    INSERT INTO SC VALUES ('9521103','C06',NULL);
    INSERT INTO SC VALUES ('9531101','C01',80);
    INSERT INTO SC VALUES ('9531101','C05',95);
    INSERT INTO SC VALUES ('9531102','C05',85);
    commit;
    

    3.通过SQL语句对表中的数据进行查询

    (1)分别查询学生表,学生修课表和选课表中的全部数据

    select * from course
    select * from student
    SELECT * from sc
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    (2)查询成绩在70-80分之间的学生的学号、课程号和成绩

    select * from sc where grade >=70 and grade <=80;
    

    在这里插入图片描述

    (3)查询C01号课程成绩最高的分数(max()求最大值)、(group by 通过与聚合函数共同使用,实现数据分组

    select max(grade) from sc where cno='C01' group by cno;
    

    在这里插入图片描述

    扩展:在某一个班的成绩表(Id,name,course,grade)中查找出班级前十名学生的id、name和总成绩

    select sno, sum(grade) total 
    from sc 
    group by sno order by total desc limit 5
    

    在这里插入图片描述

    select sc.sno, s.sname, sum(sc.grade) total 
    from student s, sc 
    where s.sno = sc.sno 
    group by sc.sno  
    order by total desc 
    limit 5
    

    在这里插入图片描述

    (4)查询学生都选修了哪些课程,要求列出课程号。(group by实现对查询出来的数据进行分组)

    select cno from sc group by cno
    

    在这里插入图片描述

    (5)查询C02号课程的所有学生的平均成绩、最高成绩和最低成绩。

    select max(grade),min(grade),avg(grade) 
    from sc 
    where cno='C02' 
    group by cno;
    

    在这里插入图片描述

    (6)统计每个系的学生人数

    select dept, count(*) as '人数' 
    from student 
    group by dept;
    

    在这里插入图片描述

    (7)统计每门课程的修课人数和考试最高分

    select count(Sno)  '人数',max(grade) 
    from sc 
    group by cno;
    

    在这里插入图片描述

    (8)统计每个学生的选课门数,并按选课门数的递增顺序显示结果

    SELECT COUNT(Cno) score 
    from sc 
    GROUP BY Sno 
    ORDER BY  score  desc 
    LIMIT 3
    

    在这里插入图片描述

    (9)统计选修课的学生总数和考试的平均成绩

    select count(sno),avg(grade) 
    from sc 
    group by cno 
    ORDER BY avg(grade) DESC;
    

    在这里插入图片描述

    (10)查询选课门数超过2门的学生的平均成绩和选课门数(having只用于group by语句;having可以用于聚合函数,但是where不能;where只用于初始表中帅选查询,having用于在where和group by结果中查询)。

    SELECT AVG(grade) avg, COUNT(cno) cnt 
    from sc 
    group by sno 
    having cnt > 2
    

    在这里插入图片描述

    (11)列出总成绩超过200分的学生,要求列出学号、总成绩

    select sno , sum(grade) cnt 
    from sc 
    GROUP BY sno 
    having cnt >= 200
    

    在这里插入图片描述

    (12)查询选修了C02号课程的学生的姓名和所在系

    SELECT s.sname, s.dept 
    from student s,  sc 
    where sc.cno='C02' 
      and s.sno = sc.sno
    
    

    在这里插入图片描述

    (13)查询成绩80分以上的学生的姓名、课程号和成绩,并按成绩的降序排列结果。(排序使用order by,DESC代表逆序,不使用为默认顺序排序)

    select s.sname, sc.cno, sc.grade 
    from student s, sc 
    where sc.grade > 80 
       and s.sno = sc.sno 
    ORDER BY sc.grade desc
    
    

    在这里插入图片描述

    (14)查询计算机系男生修了‘数据库基础’的学生姓名、性别、成绩

    SELECT s.sname, s.sex, sc.grade 
    from student s, sc, course c 
    WHERE s.dept = '计算系' and s.sex = '男' 
     and c.cname = '数据库基础' 
      and sc.Sno = s.sno 
      and sc.Cno = c.cno
    

    在这里插入图片描述

    • (15)查询哪些学生的年龄相同,要求列出年龄相同的学生的姓名和年
    select sname, age 
    from student 
    where age in  -- 子查询 in
    (select age from student group by age having count(age) > 1)
    

    在这里插入图片描述

    • (16)查询哪些课程没有人选,要求列出课程号和课程名
    select cno, cname 
    from course 
    where cno not in (select cno from sc group by cno)  -- not in
    

    在这里插入图片描述

    • (17)查询有考试成绩的所有学生的姓名、修课名称及考试成绩。
      要求将查询结果放在一张新的永久表(假设新表名为new-sc)中
    create table new_sc as    -- 将查询结果放在新表中的方法。as可省略
    select s.sname, c.cname, sc.grade 
    from student s, course c, sc
    where s.sno = sc.sno
      and c.cno = sc.cno
      and sc.grade is not null   -- is not null 是不空的
    

    在这里插入图片描述

    • (18)分别查询信息系和计算机系的学生姓名、性别、修课名称、修课成绩(联合查询使用union)
    select s.sname, s.sex, c.cname, sc.grade 
    from student s, course c, sc
    where s.dept = '信息系'
      and s.sno = sc.sno 
      and c.cno = sc.cno 
    UNION  -- 联合查询
    select s.sname, s.sex, c.cname, sc.grade 
    from student s, course c, sc
    where s.dept = '计算系'
      and s.sno = sc.sno
      and c.cno = sc.cno
    

    在这里插入图片描述

    select s.sname, s.sex, c.cname, sc.grade 
    from student s, course c, sc
    where s.dept in ('信息系', '计算系')  -- 并列
      and s.sno = sc.sno 
      and c.cno = sc.cno 
    

    在这里插入图片描述
    参考:
    数据库查询语句(从简单到复杂)

    展开全文
  • SQL 查询语句先执行 SELECT?兄弟你认真的么?

    万次阅读 多人点赞 2020-05-02 19:57:21
    SQL 查询的执行顺序是怎样的? 好像这个问题应该很好回答,毕竟自己已经写了无数个 SQL 查询了,有一些还很复杂的。还装不了这个逼了?! 但事实是,我仍然很难确切地说出它的顺序是怎样的。 言归正传,...
  • --查询学生平均分数 --round保留小数2位,avg求平均分,把xuehao 列名显示为学号、把score列名显示为平均分 select xuehao 学号,round(avg(score),2) 平均分 from SC group by xuehao --通过xuehao分组 --...
  • SQL查询语句大全(大佬总结,必看)

    万次阅读 多人点赞 2021-08-07 16:05:34
    在一级项目组时,监控服务器的同时,总结了一下SQL关于查询语句,希望能给大家带来一些帮助 推荐两个博客,下面借鉴了这两个菜鸟教程网上大佬的 之前的总结 这次在之前的基础上扩展一些内容,分别在字句的...
  • 简单的sql查询语句 select * from table where 条件; String name1 = "李明”;/String name1 = request.getparam().name; name是前端的name属性 String sql = " select * from user where name =' " +name1 + " '...
  • SQL server 查询语句

    万次阅读 热门讨论 2021-07-01 21:44:52
    select * from test.dbo.users -- 普通条件查询 where id=1; 模糊查询 select * from test.dbo.users where username like '%li%'; 范围查询 select * from test.dbo.users -- id在1~3之间的数据 where id...
  • sql查询语句去除重复列(行)

    万次阅读 多人点赞 2018-04-14 13:26:07
    有重复数据主要有一下几种情况:1.存在两条完全相同的纪录这是最简单的一种情况,用关键字distinct就可以去掉example: select distinct * from table(表名) where (条件)2.存在部分字段相同的纪录(有主键id即唯一...
  • Java 获取SQL查询语句结果

    千次阅读 2021-02-12 14:30:25
    step1:构造连接Class.forName(...Connection con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/db","root","123");step2:构造语句String sql = "select username,password from t_use...
  • 求三表联合查询SQL查询语句

    千次阅读 2021-01-18 19:07:03
    展开全部车讯语句:select username,psw from (a1 left join a2 on a1.a1_id=a2.a1_id) left join a3 on a1.a1_id=a3.a1_id这样写:SELECTS.SName AS 姓名, CS.CourseName AS 课程, C.Score AS 成绩FROM Students AS...
  • select XXX as XXX from XX where id=%d
  • SQL语句:  SELECT * FROM product_channel WHERE CASE WHEN 1 = 1 THEN distribute_status = 'Y' ELSE (distribute_status = 'N' OR distribute_status IS NULL) END ; 注:1 = 1 只是代表某个...
  • 它首先会判断请求的账号和密码是否正确,如果不正确则返回 ”Access denied for user”的错误,当账户验证成功后,连接器会去权限表中查询该用户的权限,该连接随后所有操作的权限都与此次查询的权限有关(即使修改...
  • 第一个sql语句 select companyname gsmc,zb zhibiao from t_gsndzb left join t_companycode on t_gsndzb.gsbh=t_companycode.companyid 查询结果: 第二个sql语句 SELECT min(companyname) gsmc,cast...
  • 三表只查询左表有数据的值,右表没有的数据会显示出NULL值 语法 left---join---on 示例: select s.*,c.*,d.* from 表名 s left join 表名 c on c.id = s.sid left join 表名 d on d.id = s.sid select s.*,c....
  • Oracle Sql语句转换成Mysql Sql语句

    热门讨论 2013-02-17 12:06:40
    Oracle Sql语句转换成Mysql Sql语句java 源码,非常简单,只要给定源oracle sql语句地址,和生成目标文件地址运行即可。
  • sql查询语句没有结果时赋值为0

    万次阅读 2017-10-18 20:57:00
    if exists(select id from tablename where id = value) begin select id from hrmresource where id = value end else select 0 as id
  • SQL语句- 条件查询

    千次阅读 2021-06-24 21:52:12
    SELECT 语句 SELECT查询的 WHERE 子句 =, !=, < <=, >, >= :Standard numerical operators 基础的 大于,等于等比较 between…and…: 在…和…之间 not between…and…: 不在…和…之间 IN (…): 在...
  • SQL查询语句倒序和正序

    千次阅读 2019-11-21 08:28:37
    asc 按升序排列 (不用写,默认使用这个) desc 按降序排列 select * from nametable where 查询条件 order by id desc
  • sql语句分组查询

    千次阅读 2021-06-07 19:56:22
    引入:查询每个部门的平均工资 语法: select 分组函数,列(要求出现在group by 后面) from 表 【where 筛选条件】 group by 分组的列表 【order by 子句】 注意: 查询列表必须特殊,要求是分组函数和group by 后...
  • 以mysql为例,汇总sql查询最高分、最低分、平均分等sql语句,oracle语法类似,可自行修改以下sql语句 创建两个数据库表,一个学生表、一个考试成绩表 DROP TABLE IF EXISTS `score`; CREATE TABLE `score` ( `u_id`...
  • 使用VBA动态创建SQL查询语句

    千次阅读 2018-02-28 07:19:00
    在VBA使用ADO可以高效的查询数据,但是写SQL查询语句是个有些令人头痛的事情,其实在ADO中用到的SQL语句的语法并不是很复杂,很多时候是由于即要思考SQL的语法,又要用VBA的字符串连接命令,最终搞得一团糟。...
  • SQL语句实现模糊查询

    千次阅读 2022-03-10 16:10:15
    SQL模糊搜索的4种匹配模式: 1. % :用来替代任意长度和任意类型的字符串(%中文%); eg: select * from table where keyname like %白%:检索字符串中含有‘白’的; %白% and %痴%:检索含‘白’和‘痴’的,...
  • sql语句之多表查询

    千次阅读 2022-03-16 09:56:06
    文章目录一、笛卡尔积(交叉连接) ---->cross join1、概念2. 语法3.示例二、内连接---->inner join1、概念2....返回结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的
  • 代码如下:子查询内部也使用了左连接select a.id, a.thumbNail,a.name,a.marketPrice,a.memberPrice ,a.personName,a.status,a.recieveOrderDate,a.trackNumber,a.contact,a.reportSendDate,b.trackNumber,a....
  • MySQL中sql查询语句-------外键查询

    万次阅读 2018-08-03 10:27:31
    5.子查询 最符合我们思维逻辑的查询,类似与java中的嵌套 1).查询张三所在的部门名称 select dname from dept where deptno= (select deptno from emp where ename = '张三'); 2).查询工资高于3000的员工...
  • SQL常用语句(普通查询+条件查询)

    千次阅读 2020-04-29 21:11:22
    1.普通查询 select * from 表名 select 需要返回的字段名 from 表名 建议不要使用*号作为返回值,因为*号在进行查询的时候会转为字段名效率比较低 2为返回值起别名 当给所查询的字段起别名的时候可以用AS...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,895,747
精华内容 758,298
关键字:

sql查询语句