MySQL数据库操作

1

1、创建数据表

1 CREATE TABLE guest(
2     Accounts  VARCHAR(20)  NOT  NULL,
3     Details  VARCHAR(20)  NOT  NULL,
4     Date  VARCHAR(20)  NOT  NULL,
5     Money  DECIMAL(8,2),
6     Class  SMALLINT  UNSIGNED
7     );
创建数据表

2、向数据表中插入数据

 1 INSERT  guest  VALUES("S001","房费","2010-01-01",280,001);
 2 INSERT  guest  VALUES("S001","酒水","2010-01-02",120,001);
 3 
 4 INSERT  guest  VALUES("S001","酒水","2010-01-08",300,003);
 5 
 6 INSERT  guest(Accounts,Details,Date,Money)  VALUES("S002","酒水","2010-01-29",50);
 7 
 8 INSERT  guest  VALUES("S004","房费","2010-02-01",230,001);
 9 
10 INSERT  guest(Accounts,Details,Date,Money)  VALUES("S005","酒水","2010-02-01",100);
11 
12 INSERT  guest  VALUES("S005","房费","2010-02-02",128,001);
向数据表中插入数据

那么问题来了,

①查出房费大于200的账号?

②将消费不是房费的班次都改为001

③查询出房费都大于100的账号(查询结果不能重复)

④查出1月份每个账号酒水和房费总金额

3、答案在这

 1 查出房费大于200的账号?
 2 
 3 SELECT Accounts,Details,Money FROM guest WHERE Details="房费" and Money>200;
 4 
 5 将消费不是房费的班次都改为001
 6 
 7 UPDATE guest SET Class=001 WHERE Details!="房费";
 8 
 9 查询出房费都大于100的账号(查询结果不能重复)
10 
11 SELECT Accounts,Details,Money FROM guest WHERE Details="房费" GROUP BY 1 HAVING Money>100;
12 
13 查出一月份每个账号酒水和房费总金额
14 
15 SELECT Accounts,SUM(Money) FROM guest WHERE Date<'2010-02-01' and Accounts='S001' GROUP BY 1;
答案

 2

①创建两张表

②为两张表插入数据记录

③查询sutdent表的所有记录

④查询sutdent表的第2条到第4条记录

⑤从sutdent表查询所有学生的学号(id)、姓名(name)、和院系(department)的信息

⑥从sutdent表中查询计算机系和英语系的学生的信息

⑦从sutdent表中查询年龄在18-22岁的学生信息

⑧从sutdent表中查询每个院系有多少人

⑨从score表中查询每个科目的最高分

⑩查询李四的考试科目(c_name)和考试成绩(grade)

-------------------------参考答案---------------------

  1 1.创建student和score表
  2 CREATE  TABLE  student (
  3 id  INT(10)  NOT NULL  UNIQUE  PRIMARY KEY  ,
  4 name  VARCHAR(20)  NOT NULL ,
  5 sex  VARCHAR(4)  ,
  6 birth  YEAR,
  7 department  VARCHAR(20) ,
  8 address  VARCHAR(50) 
  9 );
 10 创建score表。SQL代码如下:
 11 CREATE  TABLE  score (
 12 id  INT(10)  NOT NULL  UNIQUE  PRIMARY KEY  AUTO_INCREMENT ,
 13 stu_id  INT(10)  NOT NULL ,
 14 c_name  VARCHAR(20) ,
 15 grade  INT(10)
 16 );
 17 2.为student表和score表增加记录
 18 向student表插入记录的INSERT语句如下:
 19 INSERT INTO student VALUES( 901,'张老大', '',1985,'计算机系', '北京市海淀区');
 20 INSERT INTO student VALUES( 902,'张老二', '',1986,'中文系', '北京市昌平区');
 21 INSERT INTO student VALUES( 903,'张三', '',1990,'中文系', '湖南省永州市');
 22 INSERT INTO student VALUES( 904,'李四', '',1990,'英语系', '辽宁省阜新市');
 23 INSERT INTO student VALUES( 905,'王五', '',1991,'英语系', '福建省厦门市');
 24 INSERT INTO student VALUES( 906,'王六', '',1988,'计算机系', '湖南省衡阳市');
 25 向score表插入记录的INSERT语句如下:
 26 INSERT INTO score VALUES(NULL,901, '计算机',98);
 27 INSERT INTO score VALUES(NULL,901, '英语', 80);
 28 INSERT INTO score VALUES(NULL,902, '计算机',65);
 29 INSERT INTO score VALUES(NULL,902, '中文',88);
 30 INSERT INTO score VALUES(NULL,903, '中文',95);
 31 INSERT INTO score VALUES(NULL,904, '计算机',70);
 32 INSERT INTO score VALUES(NULL,904, '英语',92);
 33 INSERT INTO score VALUES(NULL,905, '英语',94);
 34 INSERT INTO score VALUES(NULL,906, '计算机',90);
 35 INSERT INTO score VALUES(NULL,906, '英语',85);
 36  
 37 3.查询student表的所有记录
 38 mysql> SELECT * FROM student;
 39 +-----+--------+------+-------+------------+--------------+
 40 | id  | name   | sex  | birth | department | address      |
 41 +-----+--------+------+-------+------------+--------------+
 42 | 901 | 张老大 ||  1985 | 计算机系   | 北京市海淀区 |
 43 | 902 | 张老二 ||  1986 | 中文系     | 北京市昌平区 |
 44 | 903 | 张三   ||  1990 | 中文系     | 湖南省永州市 |
 45 | 904 | 李四   ||  1990 | 英语系     | 辽宁省阜新市 |
 46 | 905 | 王五   ||  1991 | 英语系     | 福建省厦门市 |
 47 | 906 | 王六   ||  1988 | 计算机系   | 湖南省衡阳市 |
 48 +-----+--------+------+-------+------------+--------------+
 49  
 50 4.查询student表的第2条到4条记录
 51 mysql> SELECT * FROM student LIMIT 1,3;
 52 +-----+--------+------+-------+------------+--------------+
 53 | id  | name   | sex  | birth | department | address      |
 54 +-----+--------+------+-------+------------+--------------+
 55 | 902 | 张老二 ||  1986 | 中文系     | 北京市昌平区 |
 56 | 903 | 张三   ||  1990 | 中文系     | 湖南省永州市 |
 57 | 904 | 李四   ||  1990 | 英语系     | 辽宁省阜新市 |
 58 +-----+--------+------+-------+------------+--------------+
 59  
 60 5.从student表查询所有学生的学号(id)、姓名(name)和院系(department)的信息
 61 mysql> SELECT id,name,department FROM student;
 62 +-----+--------+------------+
 63 | id  | name   | department |
 64 +-----+--------+------------+
 65 | 901 | 张老大 | 计算机系   |
 66 | 902 | 张老二 | 中文系     |
 67 | 903 | 张三   | 中文系     |
 68 | 904 | 李四   | 英语系     |
 69 | 905 | 王五   | 英语系     |
 70 | 906 | 王六   | 计算机系   |
 71 +-----+--------+------------+
 72  
 73 6.从student表中查询计算机系和英语系的学生的信息
 74 mysql> SELECT * FROM student WHERE department IN ('计算机系','英语系');
 75 +-----+--------+------+-------+------------+--------------+
 76 | id  | name   | sex  | birth | department | address      |
 77 +-----+--------+------+-------+------------+--------------+
 78 | 901 | 张老大 ||  1985 | 计算机系   | 北京市海淀区 |
 79 | 904 | 李四   ||  1990 | 英语系     | 辽宁省阜新市 |
 80 | 905 | 王五   ||  1991 | 英语系     | 福建省厦门市 |
 81 | 906 | 王六   ||  1988 | 计算机系   | 湖南省衡阳市 |
 82 +-----+--------+------+-------+------------+--------------+
 83  
 84 7.从student表中查询年龄18~22岁的学生信息
 85 mysql> SELECT id,name,sex,2013-birth AS age,department,address
 86     -> FROM student
 87     -> WHERE 2013-birth BETWEEN  18 AND 22;
 88 +-----+------+------+------+------------+--------------+
 89 | id  | name | sex  | age  | department | address      |
 90 +-----+------+------+------+------------+--------------+
 91 | 905 | 王五 ||   22 | 英语系     | 福建省厦门市 |
 92 +-----+------+------+------+------------+--------------+
 93 mysql> SELECT id,name,sex,2013-birth AS age,department,address
 94     -> FROM student
 95     -> WHERE 2013-birth>=18 AND 2013-birth<=22;
 96 +-----+------+------+------+------------+--------------+
 97 | id  | name | sex  | age  | department | address      |
 98 +-----+------+------+------+------------+--------------+
 99 | 905 | 王五 ||   22 | 英语系     | 福建省厦门市 |
100 +-----+------+------+------+------------+--------------+
101  
102 8.从student表中查询每个院系有多少人 
103 mysql> SELECT department, COUNT(id) FROM student GROUP BY department;
104 +------------+-----------+
105 | department | COUNT(id) |
106 +------------+-----------+
107 | 计算机系   |         2 |
108 | 英语系     |         2 |
109 | 中文系     |         2 |
110 +------------+-----------+
111 9.从score表中查询每个科目的最高分
112 mysql> SELECT c_name,MAX(grade) FROM score GROUP BY c_name;
113 +--------+------------+
114 | c_name | MAX(grade) |
115 +--------+------------+
116 | 计算机 |         98 |
117 | 英语   |         94 |
118 | 中文   |         95 |
119 +--------+------------+
120  
121 10.查询李四的考试科目(c_name)和考试成绩(grade)
122 mysql> SELECT c_name, grade
123     ->      FROM score WHERE stu_id=
124     ->  (SELECT id FROM student
125     ->    WHERE name= '李四' );
126 +--------+-------+
127 | c_name | grade |
128 +--------+-------+
129 | 计算机 |    70 |
130 | 英语   |    92 |
131 +--------+-------+
答案

 

posted on 2016-08-18 23:07  张江华1997  阅读(974)  评论(0编辑  收藏  举报