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)找出"开发部"和"测试部"中的所有员工名、薪水、部门名