目錄
一、windows中選擇一種方式安裝Mysql8.0
二、新建產品庫mydb6_product
?1. 新建3張表如下:
? 1)employees表
? 2)orders表
? 3)invoices表
三、新建員工庫mydb8_worker,添加自定義表內容并插入數據
?1.?新建庫表
?2. 插入數據
?3. 完成以下查詢
? 1)顯示所有職工的基本信息。
? 2)查詢所有職工所屬部門的部門號,不顯示重復的部門號。
? 3)求出所有職工的人數。
? 4)列出最高工和最低工資。
? 5)列出職工的平均工資和總工資。
? 6)創建一個只有職工號、姓名和參加工作時間的新表,名為工作日期表。
? 7)顯示所有黨員的年齡。
? 8)列出工資在4000-8000之間的所有職工姓名。
? 9)列出所有孫姓和李姓的職工姓名。
? 10)列出所有部門號為102和103且不是黨員的職工號、姓名。
? 11)將職工表t_worker中的職工按出生的先后順序排序。
? 12)顯示工資最高的前3名職工的職工號和姓名。
? 13)求出各部門黨員的人數。
? 14)統計各部門的工資和平均工資并保留2位小數。
? 15)列出總人數大于等于3的部門號和總人數。
一、windows中選擇一種方式安裝Mysql8.0
- 具體步驟見Mysql欄上文
二、新建產品庫mydb6_product
mysql> create database mydb6_product;
Query OK, 1 row affected (0.04 sec)mysql> show databases;
?1. 新建3張表如下:
? 1)employees表
-
列1:id,整型,主鍵
-
列2:name,字符串,最大長度50,不能為空
-
列3: age,整型
-
列4:gender,字符串,最大長度10,不能為空,默認值“unknown”
-
列5: salary,浮點型
mysql> use mydb6_product; # 使用庫
Database changed# 建表
mysql> create table employees(-> id int primary key,-> name varchar(50) not null,-> age int,-> gender varchar(10) not null default 'unknown',-> salary float-> );
Query OK, 0 rows affected (0.03 sec)mysql> desc employees; # 查看
? 2)orders表
-
列1:id,整型,主鍵
-
列2:name,字符串,最大長度100,不能為空
-
列3: price,浮點型
-
列4: quantity,整型
-
列S:category,字符串,最大長度50
mysql> create table orders(-> id int primary key,-> name varchar(100) not null,-> price float,-> quantity int,-> category varchar(50)-> );
Query OK, 0 rows affected (0.03 sec)mysql> desc orders; # 查看
? 3)invoices表
-
列1:number,整型,主鍵自增長
-
列2:order_id,整型,外鍵關聯到orders表的id列
-
列3:in_date:日期型
-
列4:total_amount:浮點型,要求數據大于0
mysql> create table invoices( -> number int auto_increment primary key, -> order_id int,-> in_date date, -> total_amount float check(total_amount>0), -> foreign key(order_id) refereences orders(id) on delete restrict on update cascade -> );
Query OK, 0 rows affected (0.03 sec)mysql> desc invoices; # 查看
三、新建員工庫mydb8_worker,添加自定義表內容并插入數據
?1.?新建庫表
# 創建數據庫
mysql> create database mydb8_worker;
Query OK, 1 row affected (0.01 sec)
# 使用庫
mysql> use mydb8_worker;
Database changed
# 創建數據表
mysql> create table 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 '姓名',-> borth_date date not null comment '出生日期'-> );
Query OK, 0 rows affected, 3 warnings (0.02 sec)# 查看表結構
mysql> desc t_worker;
?2. 插入數據
mysql> insert into t_worker values(101,1001,'2015-5-4',7500.00,'群眾','張三','1990-7-1');
mysql> insert into t_worker values(101,1002,'2019-3-5',5200.00,'團員','李四','1995-3-7');
mysql> insert into t_worker values(102,1003,'2008-1-4',10500.00,'黨員','王五','1983--5-8');
mysql> insert into t_worker values(102,1004,'2016-10-10',5500.00,'群眾','趙六','1994-9-5');
mysql> insert into t_worker values(102,1005,'2014-4-1',8800.00,'黨員','錢七','1992-12-30');
mysql> insert into t_worker values(103,1006,'2019-5-5',5500.00,'黨員','孫八','1996-9-2');# 查看
mysql> select * from t_worker;
?3. 完成以下查詢
? 1)顯示所有職工的基本信息。
mysql> select * from t_worker;
? 2)查詢所有職工所屬部門的部門號,不顯示重復的部門號。
mysql> select distinct department_id from t_worker;
? 3)求出所有職工的人數。
mysql> select count(*) as '職工總人數' from t_worker;
? 4)列出最高工和最低工資。
mysql> select -> max(wages) as '最高工資',-> min(wages) as '最低工資'-> from t_worker;
? 5)列出職工的平均工資和總工資。
mysql> select-> avg(wages) as '平均工資',-> sum(wages) as '總工資'-> from t_worker;
? 6)創建一個只有職工號、姓名和參加工作時間的新表,名為工作日期表。
mysql> create table work_date_table as -> select worker_id, name,worker_date -> from t_worker;
Query OK, 6 rows affected (0.01 sec)
Records: 6 Duplicates: 0 Warnings: 0
? 7)顯示所有黨員的年齡。
mysql> select name,timestampdiff(year,borth_date,curdate()) as '年齡' from t_worker where politics='黨員';
? 8)列出工資在4000-8000之間的所有職工姓名。
mysql> select name from t_worker where wages between 4000 and 8000;
? 9)列出所有孫姓和李姓的職工姓名。
mysql> select name from t_worker where name like '孫%' or name like '李%';
? 10)列出所有部門號為102和103且不是黨員的職工號、姓名。
mysql> select worker_id,name from t_worker where department_id in(102,103) and polittics!='黨員';
? 11)將職工表t_worker中的職工按出生的先后順序排序。
mysql> select * from t_worker order by borth_date;
? 12)顯示工資最高的前3名職工的職工號和姓名。
mysql> select worker_id,name from t_worker order by wages desc limit 3;
? 13)求出各部門黨員的人數。
mysql> select department_id,count(*) as '部門人數' from t_worker where politics='.' group by department_id;
? 14)統計各部門的工資和平均工資并保留2位小數。
mysql> select department_id,sum(wages) as '各部門總資',round(avg(wages),2) as '各部門平均工資' from t_worker group by department_id;
? 15)列出總人數大于等于3的部門號和總人數。
mysql> select department_id,count(*) as '總人數' from t_worker group by department_iid having count(*) >=3;