MySQL基础2


CREATE TABLE publisher(
    P_ID BIGINT(20) NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT '出版社编号',
    P_NAME VARCHAR(20) NOT NULL UNIQUE COMMENT '出版社名称',
    p_LINKMAN VARCHAR(20) NOT NULL COMMENT '出版社联系人',
    P_TEL VARCHAR(20) COMMENT '电话',
    P_ADDRESS VARCHAR(50)
)
#往指定表中添加一个字段
ALTER TABLE `publisher` ADD price FLOAT;
#修改字段名
ALTER TABLE `publisher` CHANGE P_ID id BIGINT(20);
ALTER TABLE `publisher` CHANGE P_NAME `name` VARCHAR(20) COMMENT '出版社名称';
#同时添加5条数据记录
INSERT INTO `publisher` SET NAME='北京大学出版社',p_LINKMAN='王二麻子',price=99
INSERT INTO `publisher` SET NAME='清华大学出版社',p_LINKMAN='李四',price=20
INSERT INTO `publisher` SET NAME='武汉大学出版社',p_LINKMAN='战三',price=40
#找出最高价
SELECT MAX(price) AS 最高价 FROM `publisher`;
SELECT MIN(price) AS 最低价 FROM `publisher`;

SELECT * FROM `publisher` ORDER BY price DESC LIMIT 2,2


#------------------------------------------------------------------------------
#赋值某一张指定的表以及表数据
CREATE TABLE aaa(
   SELECT * FROM `publisher`
);
#插入数据
INSERT INTO aaa
SELECT * FROM aaa;

#---------------------------------时间格式函数--------------------------------------
CREATE TABLE persons(
    id BIGINT(20) NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT '主键',
    personName VARCHAR(40) COMMENT '人名',
    birthday DATETIME
)
SELECT personName,DATE_FORMAT(birthday,'%Y/%m/%d/ %H:%i:%s') AS birthday
FROM `persons`;#2017年12月25号

 

#-----------------------#多表查询(****)-----------------------------
SELECT * FROM users WHERE id IN(1,3,4);
SELECT * FROM users WHERE id=1 OR id=3 OR id=4
#聚合函数:max()、min()、avg()、sum()、count
#最高分
SELECT MIN(javaScore) AS minScore FROM users;

SELECT username FROM users WHERE javaScore=60;

#同时查询多张表
SELECT * FROM 表1,表2...表n WHERE 条件

SELECT u.username,temp.minScore
FROM users u,(SELECT MIN(javaScore) AS minScore FROM users) temp
WHERE u.javaScore=temp.minScore

#部门表(dept)
CREATE TABLE dept(
    id BIGINT(20) NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT '部门编号',
    deptName VARCHAR(20) COMMENT '部门名称'
)

#员工表(emp)
CREATE TABLE emp(
    id BIGINT(20) NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT '员工编号',
    empName VARCHAR(40) COMMENT '员工名',
    salary FLOAT COMMENT '薪水',
    deptId BIGINT(20) COMMENT '部门编号'
)

#(1)查询部门编号=1的部门下的所有员工
SELECT * FROM emp WHERE deptId=1

#(2)查询所有部门中的所有员工
SELECT 字段名1...字段n FROM 表1,表2...表n  WHERE 条件
SELECT d.deptName,p.empName FROM dept d,emp p WHERE d.id=p.deptId

#(3)找出"开发部"中的所有员工名、薪水、部门名
SELECT d.deptName,e.empName,e.salary
FROM dept d,emp e
WHERE d.id=e.deptId AND d.deptName='开发部'

#(4)找出"开发部"和"测试部"中的所有员工名、薪水、部门名
#第一种方式
SELECT d.deptName,e.empName,e.salary
FROM dept d,emp e
WHERE d.id=e.deptId AND d.deptName IN ('开发部','测试部')

#第二种方式
SELECT d.deptName,e.empName,e.salary
FROM dept d,emp e
WHERE d.id=e.deptId AND (d.deptName='开发部' OR d.deptName='测试部')

#第三种方式(*)
#union、union all:可以将两个查询语句的结果进行合并,合并的前提是两个查询语句的数据结构是一样的
#union:可以自动去重
#union all:不能够去重
SELECT d.deptName,e.empName,e.salary
FROM dept d,emp e
WHERE d.id=e.deptId AND d.deptName='开发部'
UNION ALL
SELECT d.deptName,e.empName,e.salary
FROM dept d,emp e
WHERE d.id=e.deptId AND d.deptName='测试部'


#---------------------------------内连接与外连接----------------------------------------
#多表查询语法1:select * from 表1,表2...表n  where 条件
#多表查询方式2:通过连接关键字
    #内连接
    #外连接
        #左外连接
        #右外连接
#内连接: 表1 inner join 表2 on 条件(多个表之间有关联的条件)
#(1)查询所有部门中的所有员工
SELECT * FROM dept d,emp e WHERE d.id=e.deptId

SELECT d.deptName,e.empName,e.salary
FROM
dept d INNER JOIN emp e
ON d.id=e.deptId

#(2)找出"开发部"中的所有员工名、薪水、部门名
SELECT d.deptName,e.empName,e.salary
FROM
dept d INNER JOIN emp e
ON d.id=e.deptId WHERE d.deptName='开发部'

#(3)找出"开发部"和"测试部"中的所有员工名、薪水、部门名

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值