1. 程式人生 > >2018/11/7資料庫測試

2018/11/7資料庫測試

目錄

一、簡答題

1.MySQL預設的儲存引擎?

InnoDB和MylSAM

2.常見的資料庫產品有哪些?

Oracle MySQL(Oracle)SQLServer(微軟)DB2(IBM)

3.寫出MySQL常用命令:進入某個庫,查詢某個庫中的所有表,建立資料庫。

  1. 進入某個庫 use d_name
  2. 查詢某個庫中的所有表 show tables
  3. 建立資料庫 create database d_name

4.請寫出MySQL常見的資料型別。

  1. 整型 int

  2. 浮點型 decimal

  3. 符型 varchar
    7. 文字型 text

  4. 日期 data

  5. 時間 datetime

5.寫出MySQL建立表的語法

create table t_name(
欄位1名 資料型別[約束型別]
欄位1名 資料型別[約束型別]
);

6. MySQL中完整性約束有什麼作用?

保證資料合法性及相對完整性

7.MySQL中LIMIT關鍵字是做什麼的,其引數代表什麼意思?

限制查詢條件
第一個引數表示從第幾條開始
第二個引數表示一共幾條

8.如何避免重複資料查詢,請舉例說明?

使用關鍵字 distinct
SELECT DISTINCT clazz FROM stu_info

9.如何使用字串拼接函式,請舉例說明?

select name,concat(price,’$’) from menu

10.多表連線操作有哪些,區別是什麼?

  1. 並:具有相同欄位數目和欄位型別的表合併
  2. 笛卡爾積:無關係的組合
  3. 內連線:有關係的笛卡爾積,保留匹配資料記錄,捨棄不匹配的資料記錄
  4. 外連線:有關係的笛卡爾積,保留匹配資料記錄,保留主表不匹配的資料記錄

二、程式設計題

在這裡插入圖片描述
向student表插入記錄的INSERT語句如下:
INSERT INTO student VALUES( 901,‘張老大’, ‘男’,1985,‘計算機系’, ‘北京市海淀區’);
INSERT INTO student VALUES( 902,‘張老二’, ‘男’,1986,‘中文系’, ‘北京市昌平區’);
INSERT INTO student VALUES( 903,‘張三’, ‘女’,1990,‘中文系’, ‘湖南省永州市’);
INSERT INTO student VALUES( 904,‘李四’, ‘男’,1990,‘英語系’, ‘遼寧省阜新市’);
INSERT INTO student VALUES( 905,‘王五’, ‘女’,1991,‘英語系’, ‘福建省廈門市’);
INSERT INTO student VALUES( 906,‘王六’, ‘男’,1988,‘計算機系’, ‘湖南省衡陽市’);

向score表插入記錄的INSERT語句如下:
INSERT INTO score VALUES(NULL,901, ‘計算機’,98);
INSERT INTO score VALUES(NULL,901, ‘英語’, 80);
INSERT INTO score VALUES(NULL,902, ‘計算機’,65);
INSERT INTO score VALUES(NULL,902, ‘中文’,88);
INSERT INTO score VALUES(NULL,903, ‘中文’,95);
INSERT INTO score VALUES(NULL,904, ‘計算機’,70);
INSERT INTO score VALUES(NULL,904, ‘英語’,92);
INSERT INTO score VALUES(NULL,905, ‘英語’,94);
INSERT INTO score VALUES(NULL,906, ‘計算機’,90);
INSERT INTO score VALUES(NULL,906, ‘英語’,85);

問題

1.建立student和score表語句

-- 建立student表
create table student(
  id int(10) primary key auto_increment comment '學號',
  name varchar(20) not null comment '姓名',
  sex varchar(4) comment '性別',
  birth year comment '出生年月',
  department varchar(20) not null comment '院系',
  address varchar(50) comment '家庭住址'
)
-- 建立score表
create table score(
  id int(10) primary key auto_increment comment '編號',
  stu_id int(10) not null comment '學號',
  c_name varchar(20) comment '課程名',
  grade int(10) comment '分數'
)

2、查詢student表的所有記錄

select * from student

3、查詢student表的第2條到4條記錄

select * from student where limit 1,3

4、從student表查詢所有學生的學號(id)、姓名(name)和院系(department)的資訊

select id as 學號 ,name as 姓名 ,department as 院系 from student

5、從student表中查詢計算機系和英語系的學生的資訊(用 IN 關鍵字)

select * from student where department in("計算機系","英語系")

6、從student表中查詢年齡18~22歲的學生資訊(用 BETWEEN AND)

select * from student where (year(now())-birth) between 18 and 22

7、從student表中查詢每個院系有多少人

select deparment as 院系,count(*) from student group by department

8、從score表中查詢每個科目的最高分

select c_name as 科目,max(grade) as 最高分 from score group by c_name

9、查詢李四的考試科目(c_name)和考試成績(grade)

select * from
(select s.name,c.c_name,c.grade from student as s left join score as c on c.stu_id = s.id) as t_new
where name = "李四"

10、用連線的方式查詢所有學生的資訊和考試資訊

select * from score as c left join student as s on c.stu_id = s.id

11、計算每個學生的總成績

select s.name as 姓名,SUM(grade) as 總成績 from student as s left join score as c on s.id = c.stu_id group by s.name

12、計算每個考試科目的平均成績

select c_name as 科目,avg(grade) as 平均成績 from score groub by c_name

13、查詢計算機成績低於95的學生資訊

select * from join score as c  left join student as s c.stu_id = s.id where c.c_name = "計算機" and c.grade < 95 

14、查詢同時參加計算機和英語考試的學生的資訊

select * from student where id in (
select stu_id from score where c_name = "計算機系" or c_name = "英語系" group by stu_id having count(*) = 2)

15、將計算機考試成績按從高到低進行排序

select grade as "計算機考試成績"  from score where c_name ="計算機" order by grade desc

16、從student表和score表中查詢出學生的學號,然後合併查詢結果

select s.id from student as s untion
selecr distinct c.stu_id from score as c

17、查詢姓張或者姓王的同學的姓名、院系和考試科目及成績

select s.name as "姓名" ,department as "院系",c.c_name as "科目",c.grade as "成績"from score left join student on s.id = c.stu_id where name like 張% or name like 王%

18、查詢都是湖南的學生的姓名、年齡、院系和考試科目及成績

    select s.name as "姓名" ,s.age as "年齡",s.department as "院系",c.c_name as "科目",c.grade as "成績"from score left join student on s.id = c.stu_id where address = "湖南%"

三、表名student_score,如圖

在這裡插入圖片描述

1、用一條 SQL 語句,查詢出每門課都大於 80 分的學生姓名。

select name from student_score group by name having min(score) > 80 ;

2、查詢出「張」姓學生中平均成績大於 75 分的學生資訊。

select * from student_score
where name in(
select name from student_score where name like '張%'
group by  name having avg(score) > 75);