mysqlはメモを取る

学び続け、更新し続ける

1.学生の記録を追加します

このトピックでは、Insertステートメントを記述し、stuテーブルに学生レコードを追加する必要があります。学生ID:S012、名前:、周強、性別:1、およびその他の属性はNULLです。

テーブル構造:

CREATE TABLE `stu` (
  `sno` char(4) NOT NULL,
  `sname` char(8) NOT NULL,
  `sex` tinyint(1) DEFAULT NULL,
  `mno` char(2) DEFAULT NULL,
  `birdate` datetime DEFAULT NULL,
  `memo` text,
  PRIMARY KEY (`sno`)
);

テーブルサンプル(stuテーブル):
ここに画像の説明を挿入出力サンプル(stuテーブル):
ここに画像の説明を挿入
問題の解決策:

 INSERT INTO stu (sno,sname,sex) VALUES ('S012','周强',1);

2.コースの成績が最も高い上位2人の学生にクエリを実行します

このトピックでは、C002コースで最高の成績を収めた2人の学生の数、名前、成績を取得するためのSQLステートメントを作成する必要があります。

テーブル構造:

CREATE TABLE `stu` (
  `sno` char(4) NOT NULL,
  `sname` char(8) NOT NULL,
  `sex` tinyint(1) DEFAULT NULL,
  `mno` char(2) DEFAULT NULL,
  `birdate` datetime DEFAULT NULL,
  `memo` text,
  PRIMARY KEY (`sno`),
);

CREATE TABLE `sc` (
  `sno` char(4) NOT NULL,
  `cno` char(4) NOT NULL,
  `grade` decimal(6,1) DEFAULT NULL,
  PRIMARY KEY (`sno`,`cno`),
  CONSTRAINT `fk_sc_sno` FOREIGN KEY (`sno`) REFERENCES `stu` (`sno`)
);

テーブルサンプル(stuテーブルとscテーブル):
ここに画像の説明を挿入ここに画像の説明を挿入
出力サンプル:
ここに画像の説明を挿入
問題の解決策:

SELECT stu.sno,stu.sname,sc.grade
FROM stu LEFT JOIN sc 
ON stu.sno=sc.sno
WHERE sc.cno='C002'
ORDER BY sc.grade 
DESC LIMIT 2;

3.すべての学生情報を削除します

このトピックでは、「周強」という名前の学生のすべてのデータ情報を削除するために、DELETEステートメントを作成する必要があります。

テーブル構造:

CREATE TABLE `stu` (
  `sno` char(4) NOT NULL,
  `sname` char(8) NOT NULL,
  `sex` tinyint(1) DEFAULT NULL,
  `mno` char(2) DEFAULT NULL,
  `birdate` datetime DEFAULT NULL,
  `memo` text,
  PRIMARY KEY (`sno`)
);
CREATE TABLE `sc` (
  `sno` char(4) NOT NULL,
  `cno` char(4) NOT NULL,
  `grade` decimal(6,1) DEFAULT NULL,
  PRIMARY KEY (`sno`,`cno`),
  CONSTRAINT `fk_sc_sno` FOREIGN KEY (`sno`) REFERENCES `stu` (`sno`)
);

テーブルの例(stuテーブルとscテーブル):
ここに画像の説明を挿入ここに画像の説明を挿入

サンプル出力:
ここに画像の説明を挿入ここに画像の説明を挿入
問題の解決策:

DELETE t1,t2
FROM stu AS t1 LEFT JOIN sc AS t2
ON t1.sno = t2.sno
WHERE t1.sname = '周强';

4.昇順で並べ替えます

従業員テーブル内のすべての男性従業員の番号、名前、および入力日を照会すると、結果は従業員番号の昇順で並べ替えられます

テーブル構造:

create table 员工(员工编号 char(3) primary key,姓名 char(5),性别 char(1),出生日期 date,入职日期 date,电话 char(11))

表样例:
ここに画像の説明を挿入

サンプル出力:
ここに画像の説明を挿入
問題の解決策:

SELECT 员工编号,姓名,入职日期
FROM 员工
WHERE 性别='男'
ORDER BY 员工编号 ASC;

5.条件付きクエリ

このトピックでは、SQLステートメントを記述して、学生テーブル内の25歳以下のすべての女の子の学生番号と名前のレコードを取得する必要があります。

テーブル構造:

CREATE TABLE students (
 sno char(7) ,
  sname char(8) NOT NULL,
  class char(10),
  ssex char(2),
  bday date ,
  bplace char(10) ,
  IDNum char(18) ,
  sdept char(16),
  phone char(11),
  PRIMARY KEY (sno)
) ;

テーブルサンプル:
ここに画像の説明を挿入出力サンプル:
ここに画像の説明を挿入
問題の解決策:

select sno as "学号",sname as "姓名",ssex as "性别"
from students 
where ROUND(DATEDIFF(CURDATE(), bday)/365.2422) <=25 
and 
ssex="女";

お問い合わせ

このトピックでは、コーステーブルの「0000010」コースのコース名、前提条件のコース番号、およびクレジットレコードを取得するためのSQLステートメントを作成する必要があります。
ヒント:SELECTステートメントを使用して回答してください。

テーブル構造:

CREATE TABLE course (
 cno char(7) ,
 cname varchar(20) NOT NULL,
  cpno char(7),
  ccredit int NOT NULL,
  PRIMARY KEY (cno)
) ;

テーブルサンプル:
ここに画像の説明を挿入
出力サンプル:
ここに画像の説明を挿入
問題の解決策:

select cname,cpno,ccredit from course where cno = '0000010';

おすすめ

転載: blog.csdn.net/qq_50216270/article/details/117170615