第一次作業
要求
1.首先打開Windows PowerShell
2.連接到MYSQL服務器
3.執行以下SQL語句:
-- 創建數據庫
CREATE DATABASE mydb6_product;
-- 使用數據庫
USE mydb6_product;
-- 創建employees表
CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
age INT,
gender VARCHAR(10) NOT NULL DEFAULT 'unknown',
salary FLOAT
);
-- 創建orders表
CREATE TABLE orders (
id INT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
price FLOAT,
quantity INT,
category VARCHAR(50)
);
-- 創建invoices表
CREATE TABLE invoices (
number INT PRIMARY KEY AUTO_INCREMENT,
order_id INT,
in_date DATE,
total_amount FLOAT CHECK (total_amount > 0),
FOREIGN KEY (order_id) REFERENCES orders(id)
);
?4.運行結果圖
總結
-創建數據庫和表:使用 `CREATE DATABASE` 和 `CREATE TABLE`。
- 驗證數據庫:`SHOW DATABASES LIKE 'mydb6_product'`。
- 驗證表:`SHOW TABLES` 查看所有表,`SHOW CREATE TABLE 表名` 查看表結構。?
第二次作業
要求
1.建庫建表
?-- 創建數據庫
CREATE DATABASE IF NOT EXISTS mydb8_worker;?
-- 使用數據庫
USE mydb8_worker;?
-- 創建表
CREATE TABLE IF NOT EXISTS t_worker (
department_id INT(11) NOT NULL COMMENT '部門號',
worker_id INT(11) PRIMARY KEY NOT NULL COMMENT '職工號',
worker_date DATE NOT NULL COMMENT '工作時間',
wages FLOAT(8,2) NOT NULL COMMENT '工資',
politics VARCHAR(10) NOT NULL DEFAULT '群眾' COMMENT '政治面貌',
name VARCHAR(20) NOT NULL COMMENT '姓名',
birth_date DATE NOT NULL COMMENT '出生日期'?
);
2.插入數據
INSERT INTO t_worker VALUES (101,1001,'2015-5-4',7500.00,'群眾','張春燕','1990-7-1');
INSERT INTO t_worker VALUES (101,1002,'2019-2-6',5200.00,'團員','李名博','1997-2-8');
INSERT INTO t_worker VALUES (102,1003,'2008-1-4',10500.00,'黨員','王博涵','1983-6-8');
INSERT INTO t_worker VALUES (102,1004,'2016-10-10',5500.00,'群眾','趙小軍','1994-9-5');
INSERT INTO t_worker VALUES (102,1005,'2014-4-1',8800.00,'黨員','錢有財','1992-12-30');
INSERT INTO t_worker VALUES (103,1006,'2019-5-5',5500.00,'黨員','孫菲菲','1996-9-2');
3.完成查詢
-- (1) 顯示所有職工的基本信息
SELECT * FROM t_worker;
-- (2) 查詢所有職工所屬部門的部門號,不顯示重復的部門號
SELECT DISTINCT department_id FROM t_worker;
?
-- (3) 求出所有職工的人數
SELECT COUNT(*) AS 職工總數 FROM t_worker;
?
-- (4) 列出最高工資和最低工資
SELECT MAX(wages) AS 最高工資, MIN(wages) AS 最低工資 FROM t_worker;?
?
-- (5) 列出職工的平均工資和總工資
SELECT AVG(wages) AS 平均工資, SUM(wages) AS 總工資 FROM t_worker;
?
-- (6) 創建一個只有職工號、姓名和參加工作的新表,名為工作日期表
CREATE TABLE IF NOT EXISTS 工作日期表 AS
SELECT worker_id AS 職工號, name AS 姓名, worker_date AS 參加工作時間
FROM t_worker;
?
?
-- (8) 列出工資在4000—8000之間的所有職工姓名
SELECT name AS 姓名 FROM t_worker WHERE wages BETWEEN 4000 AND 8000;
?
-- (9) 列出所有姓張和孫的職工姓名
SELECT name AS 姓名 FROM t_worker WHERE name LIKE '張%' OR name LIKE '孫%';?
?
?-- (10) 列出所有部門號為102和103且不是黨員的職工號、姓名
SELECT worker_id AS 職工號, name AS 姓名?
FROM t_worker?
WHERE department_id IN (102, 103) AND politics != '黨員';
-- (13) 求出各部門黨員的人數
SELECT department_id, COUNT(*) AS party_member_count?
FROM t_worker?
WHERE politics = '黨員'?
GROUP BY department_id;
?
-- (15) 列出人數大于等于3的部門號和總人數?
SELECT department_id, COUNT(*) AS dept_total?
FROM t_worker?
GROUP BY department_id?
HAVING dept_total >= 3;
?
?