欢迎来到cool的博客
7

Music box

Click to Start

点击头像播放音乐
新博客链接

mysql 练习题

1、用一条SQL语句 查询出每门课都大于80分的学生姓名

创建数据表:

  1. CREATE TABLE score(  
  2.     name VARCHAR(20) NOT NULL,  
  3.     kecheng VARCHAR(20) NOT NULL,  
  4.     fenshu int(4) NOT NULL 

插入数据:

INSERT INTO score VALUES ('张三','语文',81),('张三','数学',75),('李四','语文',76),('李四','数学',90), ('王五','语文',81),('王五','数学',100),('王五','英语',90);

查询语句:

  1. SELECT DISTINCT name   
  2. FROM score    
  3. WHERE name not in (SELECT DISTINCT name FROM score WHERE fenshu <= 80) 

结果如下:

2、删除除了自动编号不同,其他都相同的学生冗余信息

  1. CREATE TABLE student(  
  2.     id INT(4) NOT NULL auto_increment,  
  3.     num INT(7) NOT NULL,  
  4.     name VARCHAR(20) NOT NULL,  
  5.     course_num VARCHAR(4) NOT NULL,  
  6.     course_name VARCHAR(20) NOT NULL,  
  7.     score INT(4) NOT NULL,  
  8.     PRIMARY KEY (id)  
  9. );  
  10. INSERT INTO student(num,name,course_num,course_name,score) VALUES  
  11.     (2005001,'张三','0001','数学',69),(2005002,'李四','0001','数学',89),  
  12.     (2005001,'张三','0001','数学',69);  

错误sql语句:

[Err] 1093 - You can't specify target table 'student' for update in FROM clause

mysql不允许先查出表再进行更新!!!

正确sql语句:

  1. CREATE TABLE tmp AS   
  2. SELECT MIN(id) AS col   
  3. FROM student GROUP BY num, name, course_num, course_name, score;  
  4. DELETE FROM student WHERE id NOT IN (SELECT col FROM tmp);    
  5. DROP TABLE tmp;  

返回列表