1.创建数据库表
CREATE TABLE teacherInfo(
id int(4) not null unique primary key auto_increment,
num int(10) not null unique ,
Name varchar(20) not null ,
Sex varchar(4) not null ,
Birthday DATETIME ,
Address varchar(50)
)
解析
表名:teacherInfo 主键:id int类型,不为空,自增
2.表的相关操作
将 teacherInfo 表的 name 字段的数据类型改为VARCHAR(30)
alter table teacherInfo modify Name varchar(30) not null ;
将 num 字段改名为 t_id。
alter table teacherInfo change num t_id int(10) not null ;
将 teacherInfo 表的 address 字段删除。
alter table teacherInfo drop Address;
在 teacherInfo 表中增加名为 wages 的工资字段,数据类型为 FLOAT。
alter table teacherInfo add wages float comment '工资';
将 teacherInfo 表改名为 teacher_Info。
alter table teacherInfo rename teacher_Info;
查询数据
先创建两个表
bumen表
| 字段名 | 字段描述 | 数据类型 | 主键 | 非空 | 唯一 | 自增 |
|---|---|---|---|---|---|---|
| d_id | 部门号 | INT(4) | 是 | 是 | 是 | 是 |
| d_name | 部门名称 | VARCHAR(20) | 否 | 是 | 是 | 否 |
| func | 部门职能 | VARCHAR(20) | 否 | 否 | 否 | 否 |
| address | 工作地点 | VARCHAR(30) | 否 | 否 | 否 | 否 |
bumen 表添加数据后
| d_id | d_name | func | address |
|---|---|---|---|
| 1001 | 人事部 | 人事管理 | 北京 |
| 1002 | 科研部 | 研发产品 | 北京 |
| 1003 | 生产部 | 产品生产 | 天津 |
| 1004 | 销售部 | 产品销售 | 上海 |
yuangong表
| 字段名 | 字段描述 | 数据类型 | 主键 | 非空 | 唯一 | 自增 |
|---|---|---|---|---|---|---|
| id | 员工号 | INT(4) | 是 | 是 | 是 | 是 |
| name | 姓名 | VARCHAR(20) | 否 | 是 | 否 | 否 |
| sex | 性别 | VARCHAR(4) | 否 | 是 | 否 | 否 |
| age | 年龄 | INT(4) | 否 | 否 | 否 | 否 |
| d_id | 部门号 | INT(4) | 否 | 是 | 否 | 否 |
| salary | 工资 | Float | 否 | 否 | 否 | 否 |
| address | 家庭地址 | VARCHAR(50) | 否 | 否 | 否 | 否 |
yuangong 表添加数据后
| id | name | sex | age | d_id | salary | address |
|---|---|---|---|---|---|---|
| 8001 | 韩鹏 | 男 | 25 | 1002 | 4000 | 北京市海淀区 |
| 8002 | 张峰 | 男 | 26 | 1001 | 2500 | 北京市昌平区 |
| 8003 | 欧阳 | 男 | 20 | 1003 | 1500 | 湖南省永州市 |
| 8004 | 王武 | 男 | 30 | 1001 | 3500 | 北京市顺义区 |
| 8005 | 欧阳宝贝 | 女 | 21 | 1002 | 3000 | 北京市昌平区 |
| 8006 | 呼延 | 男 | 28 | 1003 | 1800 | 天津市南开区 |
单表查询
1.查询yuangong表的所有记录。
#方式一
SELECT * FROM yuangong;
#方式二
SELECT id,name,sex,age,d_id,salary,address FROM yuangong;
2.查询yuangong表的第四条到第五条记录。
SELECT * FROM yuangong LIMIT 3,2;
3.从bumen表查询部门号(d_id)、部门名称(d_name)和部门职能(func)。
SELECT d_id,d_name,func FROM bumen;
4.从yuangong表中查询年龄在25到30之间的员工的信息。可以通过两种方式来查询。
#方式一
SELECT * FROM yuangong WHERE age BETWEEN 25 AND 30;
#方式二
SELECT * FROM yuangong WHERE age>=25 AND age<=30;
5.查询家是北京市员工的姓名、年龄、家庭住址。这里使用 LIKE 关键字。(迷糊查询)
# %代替其他字符
SELECT name,age,address FROM yuangong WHERE address LIKE '北京%';
6.查询每个部门有多少员工。先按部门号进行分组,然后用COUNT()函数来计算每组的人数。
#也可以给COUNT(id)去一个别名,用as
SELECT d_id,COUNT(id) FROM yuangong GROUP BY d_id;
7.查询每个部门的最高工资。先按部门号进行分组,然后用MAX()函数来计算最大值。
SELECT d_id,MAX(salary) FROM yuangong GROUP BY d_id;
8.计算每个部门的总工资。先按部门号进行分组,然后用SUM()函数来求和。
SELECT d_id,SUM(salary) FROM yuangong GROUP BY d_id;
9.查询yuangong表,按照工资从高到低的顺序排列。
SELECT * FROM yuangong ORDER BY salary DESC;
#DESC -> 降序
#ASC -> 升序
多表查询
1.用左连接的方式查询bumen表和yuangong表。
SELECT bumen.d_id,d_name,func,bumen.address,id,name,age,sex,salary,yuangong.address FROM bumen LEFT JOIN yuangong ON yuangong.d_id=bumen.d_id;
2.从yuangong表中查询人事部和科研部的员工的信息。先从bumen表查询出人事部和科研部的部门号。然后到yuangong表中去查询员工的信息。
#方式一
SELECT * FROM yuangong WHERE d_id = ANY(
SELECT d_id FROM bumen WHERE d_name IN('人事部','科研部')
);
#方式二
SELECT * FROM yuangong WHERE d_id IN(
SELECT d_id FROM bumen WHERE d_name='人事部' OR d_name='科研部'
);
3.从bumen表和yuangong表中查询出部门号,然后使用UNION合并查询结果。
SELECT d_id FROM yuangong UNION SELECT d_id FROM bumen;