Mysql_创建数据库表,表的相关操作,查询表

159 阅读3分钟

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_idd_namefuncaddress
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 表添加数据后

idnamesexaged_idsalaryaddress
8001韩鹏2510024000北京市海淀区
8002张峰2610012500北京市昌平区
8003欧阳2010031500湖南省永州市
8004王武3010013500北京市顺义区
8005欧阳宝贝2110023000北京市昌平区
8006呼延2810031800天津市南开区

单表查询

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;