1、下载:https://www.mysql.com/
DOWNLOADS
MySQL Community (GPL) Downloads »--
MySQL Community Server
Looking for previous GA versions?
No thanks, just start my download.
数据:描述事物的一种符号
数据就是数值,是指对客观事件(客观事物)进行观察的结果
是对客观事物的性质、状态以及相互关系等进行记载的符号或这些符号的组合
它是可以进行记录并可以鉴别的符号,是对客观事物的逻辑归纳
表现形式多样:文本、图形、音视频(都是二进制)
数据有很多种,最简单的就是数字
数据也可以是文字、图像、声音等
数据库(DataBase,简称DB):存放数据的仓库(文件夹)
数据按照一定的格式存放在计算机中,可为用户共享
方便存储、快速查找
数据库管理系统(DataBase Management System 简称DBMS)
科学的组织和存储数据
是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库
它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性
用户通过DBMS访问数据库中的数据,数据库管理员也通过DBMS进行数据库的维护工作。
有oracle、MySQL、SQL Server等等
mysql主要用于大型门户,例如搜狗、新浪等,它主要的优势就是开放源代码,因为开放源代码这个数据库是免费的,
他现在是甲骨文公司的产品。(官网下载,有些大公司会做二次封装用自己的)
oracle主要用于银行、铁路、飞机场等。该数据库功能强大(规避很多风险),软件费用高。也是甲骨文公司的产品。
sql server是微软公司的产品,主要应用于大中型企业,如联想、方正等(使用较少)
数据库应用程序(DBAS)
在数据库管理系统的基础上,使用数据库管理系统的语法,直接面对最终用户的应用程序
图书管理系统、人事管理系统等等
数据库管理员(DBA)
数据库管理系统的操作者
最终用户
数据库应用程序的使用者
数据库系统(DBS)
数据库 + 数据库管理系统 + 数据库应用程序 + 数据库管理员 + 最终用户
数据库的好处:
1.程序稳定性 :这样任意一台服务所在的机器崩溃了都不会影响数据和另外的服务(备份)
2.数据一致性 :所有的数据都存储在一起,所有的程序操作的数据都是统一的,就不会出现数据不一致的现象
3.并发 :数据库可以良好的支持并发,所有的程序操作数据库都是通过网络,而数据库本身支持并发的网络操作,不需要我们自己写socket
4.效率 :使用数据库对数据进行增删改查的效率要高出我们自己处理文件很多
数据库服务器:一台计算机(对内存要求比较高)运行数据库管理软件
数据库管理软件:管理-数据库
数据库:即文件夹,用来组织文件/表
表:即文件,用来存放多行内容/多条记录
MySQL:是一个应用广泛、免费、开源的关系型数据库管理系统
关系型数据库需要有表结构
关系型数据库最典型的数据结构是表,由二维表及其之间的联系所组成的一个数据组织
优点:
1、易于维护:都是使用表结构,格式一致
2、使用方便:SQL语言通用,可用于复杂查询
3、复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询
缺点:
1、读写性能比较差,尤其是海量数据的高效率读写
2、固定的表结构,灵活度稍欠
3、高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈
非关系型数据库是key-value存储的,没有表结构
非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等
优点:
1、格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等
2、速度快,成本低:nosql数据库部署简单,基本都是开源软件
缺点:
1、不提供sql支持,学习和使用成本较高
2、无事务处理
3、数据结构相对复杂,复杂查询方面稍欠
安装:
1,解压,找到 my-default.ini 文件
2,将该文件粘贴到项目文件中,并更名为 my.ini
3,修改文件内容(参考my.ini文件),注意一定保证格式(不能有多余空格之类)
4,修改安装目录为当前解压后文件的目录(不能有 等转义,不能有中文,不能有空格)
5,保存修改
6,将文件粘贴回解压的文件目录(不用管修改前的原文件)
7,配置环境变量: 我的电脑-属性-高级系统设置-环境变量-系统变量-Path-新建-粘贴bin目录的地址
以管理员身份运行命令提示符(找到cmd,右键管理员身份运行):
输入mysqld install
出现Service successfully installed.代表安装成功
继续输入:net start mysql 启动MySQL服务
登陆管理员用户:mysql -uroot -p 登陆MySQL服务器
远程登陆MySQL服务器 mysql -uroot -p123 -h192.168.19.200
察看当前用户:select user();
退出:exit;
给当前账户设置密码(必须以管理员登陆):set password = password('123')
创建一个其他用户:
mysql> create user 'shang'@'192.168.10.%' IDENTIFIED BY '123'; #指定网段密码
mysql> create user 'shang'@'192.168.10.5' # 指示某机器可以连接
mysql> create user 'shang'@'%' #指示所有机器都可以连接
指定某个机器连我的MySQL:
create user 'zd'@' 192.168.19.138' IDENTIFIED BY '123';# 指示网段
继续授权:
grant all on *.* to 'zd'@'%';
一步到位的:
grant all on *.* to 'zd'@'192.168.19.138' identified by '123'
5.6及以下版本创建用户:
create user "alex5"@"localhost" identified by "234";
登录:
给一个用户授权:
grant 权限类型 on 数据库名称 . * (或表名) to 'shang'@'%';
all 所有权限:
grant all on day30.* to "alex5"@"%";
select 查
select,insert 查和写
mysql> flush privileges; # 刷新使授权立即生效(万一没有立即生效)
创建账号并授权
grant all on 数据库名称 .* to 'alex'@'%' identified by '123'
grant all on day30 .* to "alex6"@"%" identified by "123";
SQL:结构化查询语言,是一种特殊的编程语言(4代)
是用于访问和处理数据库的标准的计算机语言
用于存取数据以及查询、更新、管理关系数据库系统
1986年10月,美国国家标准协会(AESC)对SQL进行规范后,以此作为关系式数据库管理系统的标准语言
不过各种通行的数据库系统在其实践过程中都对SQL规范作了某些编改和扩充。所以,实际上不同数据库系统之间的SQL不能完全相互通用
针对不同的数据库,如hivesql、mysql、sqlserver、oracle等,sql语法会有所不同,但是总体上大同小异
SQL的作用:使我们有能力访问数据库,需要在数据库上执行的大部分工作都由 SQL 语句完成
SQL 面向数据库执行查询
SQL 可从数据库取回数据
SQL 可在数据库中插入新的记录
SQL 可更新数据库中的数据
SQL 可从数据库删除记录
SQL 可创建新数据库
SQL 可在数据库中创建新表
SQL 可在数据库中创建存储过程
SQL 可在数据库中创建视图
SQL 可以设置表、存储过程和视图的权限
SQL语言的5个部分(重要性从高到低):
数据查询语言(DQL:Data Query Language):select
其语句,也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出
数据操作语言(DML:Data Manipulation Language):inster,updata,delete
其语句包括动词INSERT,UPDATE和DELETE。它们分别用于添加,修改和删除表中的行。也称为动作查询语言
数据定义语言(DDL):create,alter,drop
在数据库中创建新表或删除表;为表加入索引等
数据控制语言(DCL):grant,revoke
它的语句确定单个用户和用户组对数据库对象的访问
事务处理语言(TPL):
它的语句能确保被DML语句影响的表的所有行及时得以更新
前三个部分必须掌握,后两个部分可以现用现查
同时注意:SQL 对大小写不敏感
数据库操作(DDL):
创建数据库:
删除数据库:
切换数据库:
查看当前选择的数据库:
数据库操作(DDL):
创建数据库:
CREATE DATABASE 数据库名称;
CREATE DATABASE test101 CHARSET=utf8;
-------------------------------------------------------------------------------------------------------------------增
mysqld INSTALL;-- 安装mysql数据库
net START mysql;-- 启动MySQL服务
mysql -uroot -p;-- 登录mysql数据库
CREATE DATABASE dianshang;-- 创建数据库
CREATE TABLE t_2(
sex ENUM("n","v","Alex"),
hobby SET("tsl","xt","am","tn","spa","ok")
);-- 创建表
CREATE TABLE t_3(
id INT PRIMARY KEY, -- 主键相当做了唯一性和非空约束
NAME VARCHAR(32),
age INT,
sex CHAR
);
CREATE TABLE sanguo(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(32),
age INT,
arms VARCHAR(32),
country VARCHAR(32),
skill VARCHAR(32)
);-- 创建表
CREATE TABLE t_5(
dt DATETIME NOT NULL,
DEFAULT CURRENT_TIMESTAMP,
ON UPDATE CURRENT_TIMESTAMP
);-- 创建表
CREATE TABLE music(
NAME VARCHAR(20),
mpath VARCHAR(32)
);-- 创建表
ALTER TABLE t_6 ADD PRIMARY KEY(id);-- 设置ID为主键
CREATE TABLE t_7(
id INT PRIMARY KEY,
NAME CHAR(20)
);-- 创建时就带有主键
CREATE TABLE t_8(
id INT PRIMARY KEY AUTO_INCREMENT,
uname VARCHAR(32)
);-- 自动更新主键
CREATE TABLE t_9(
uname VARCHAR(32),
age INT,
country VARCHAR(32)
);--
CREATE TABLE t_stu (
id INT PRIMARY KEY,
NAME VARCHAR (32),
sex VARCHAR(32),
class VARCHAR(32)
) ;-- 创建学生表
CREATE TABLE course(
id INT PRIMARY KEY,
cname VARCHAR(32),
credit VARCHAR(32)
);-- 创建课程表
CREATE TABLE result(
id INT PRIMARY KEY,
courseid VARCHAR(32) PRIMARY KEY,
re VARCHAR(32),
class VARCHAR(32)
);-- 创建成绩表
CREATE TABLE t_user3(
id INT
) ENGINE = MYISAM;-- 创建表并指定引擎
ALTER TABLE t_user3 ENGINE = INNODB;-- 修改数据库引擎
SHOW ENGINES;-- 查询当前数据库支持的搜索引擎
CREATE TABLE t_user(
id INT NOT NULL,
PRIMARY KEY(id)
);--
CREATE TABLE t_user2(
first_name VARCHAR(32) NOT NULL,
last_name VARCHAR(32) NOT NULL,
PRIMARY KEY(first_name,last_name)
);--
CREATE TABLE t_student(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
sname VARCHAR(25),
sex VARCHAR(10)
);-- 创建学生表外键约束
INSERT INTO t_student VALUES(1,"小明","男"),(2,"小红","女");-- 往学生表里面增加数据
CREATE TABLE t_class(
cname VARCHAR(25),
cid INT,
FOREIGN KEY(cid) REFERENCES t_student(id)
);-- 创建班级表
CREATE INDEX index_1 ON sanguo(NAME);-- 创建索引
CREATE TABLE mytable(
id INT NOT NULL,
username VARCHAR(16) NOT NULL,
INDEX index_1(username)
);-- 创建表时直接指定索引
CREATE VIEW v_user AS
SELECT NAME,arms,skill FROM sanguo;-- 查询某些列
SELECT * FROM v_user;-- 创建视图并查询
CREATE TABLE t_person1(
id INT PRIMARY KEY AUTO_INCREMENT,
sname VARCHAR(10),
money INT
);--
INSERT INTO t_person1 VALUES(1,"小明",1000),(2,"丽丽",2000);-- 增加数据
INSERT INTO t_stu VALUE(1,"alex",84),(2,"bigb",38),(3,"wusir",40);--
INSERT INTO t_9 VALUES("ww",21,"tg");--
ALTER TABLE sanguo ADD yuexin VARCHAR(10);-- 给表增加列名
INSERT INTO t_8(uname) VALUES("ls");-- 增加数据
INSERT INTO t_3 VALUES(1,"baoyuan",67,"不详");-- 增加数据
INSERT INTO sanguo VALUES(1,"吕布",32,"方天画戟","群雄","魔神降世"),
(2,"赵云",46,"龙胆","蜀国","天翔之龙"),
(3,"曹操",50,"百辟刀","魏国","霸道之刃"),
(4,"夏侯惇",15,"也是刀","魏国","无极之刃"),
(5,"小乔",18,"扇子","吴国","星华缭乱"),
(6,"大乔",19,"灯笼","吴国","魔神降世"),
(7,"孙尚香",28,"方天画戟","群雄","魔神降世");--
-- 创建用户并授权方式一:
GRANT ALL ON day30.* TO "alex6"@"%" IDENTIFIED BY "123";-- 创建用户并授权一步到位单数据库
GRANT ALL ON *.* TO 'alex6'@'%' IDENTIFIED BY '123';-- 创建用户并授权一步到位所有数据库
-- 创建用户并授权方式二:
CREATE USER "alex9"@"localhost" IDENTIFIED BY "123";--
CREATE USER alex9@'%';-- 指示所有机器都可以连接
GRANT ALL ON day30.* TO alex9@"%";-- 授权
CREATE TABLE stu_1(
stuId INT,
NAME VARCHAR(10) NOT NULL,
PRIMARY KEY(stuId)
);-- 创建学生表
CREATE TABLE score_1(
stuId INT,
score VARCHAR(32),
FOREIGN KEY(stuId) REFERENCES stu_1(stuId)
);-- 创建成绩表并关联一个学生有多门课程
CREATE TABLE teacher(
teacherId INT,
NAME VARCHAR(10) NOT NULL,
PRIMARY KEY(teacherId)
);-- 创建老师表
CREATE TABLE stu_2(
stuId INT,
NAME VARCHAR(10) NOT NULL,
PRIMARY KEY(stuId)
);-- 创建学生表
CREATE TABLE score_2(
scoresname VARCHAR(32),
stuId INT,
teacherId INT,
FOREIGN KEY(stuId) REFERENCES stu_2(stuId),
FOREIGN KEY(teacherId) REFERENCES teacher(teacherId)
);-- 创建课程表关联老师表和学生表
CREATE TABLE stu_3(
stuId INT,
name VARCHAR(10) NOT NULL,
PRIMARY KEY(stuId)
);-- 学生表
INSERT INTO stu_3 VALUES (1,'xiaoming');
CREATE TABLE score_3( -- 成绩表
stuId INT,
score INT,
FOREIGN KEY (stuId) REFERENCES stu_3(stuId)
);
INSERT INTO score_3 VALUES(1,100);
SELECT stu.name,score.score FROM stu,score WHERE stu.stuID=score.stuID;-- 查询所有学生姓名和对应的成绩
CREATE TABLE stu_3(
stuID INT,
sname VARCHAR(32),
score INT,
PRIMARY KEY(stuID)
);
INSERT INTO stu_3 VALUES (1,"xiaoming",60), (2,"xiaoli",70);--
SELECT * FROM stu_3;--
SELECT sname,score FROM stu_3 WHERE score > (SELECT score FROM stu_3 WHERE sname = "xiaoming");-- 查询所有比小明成绩高的学生名字,先执行括号中的查询
SELECT sname,score FROM stu_3 WHERE score > (SELECT AVG(score) FROM stu_3);-- 查询成绩高于平均成绩的学生姓名和成绩
CREATE TABLE t_emp(
id INT PRIMARY KEY,
NAME VARCHAR(32),
sex VARCHAR(32) NOT NULL,
age INT,
dep VARCHAR(32),
sal INT,
dep_id INT
);-- 创建员工表
CREATE TABLE t_dep(
id INT PRIMARY KEY,
dname VARCHAR(32)
);-- 创建部门表
INSERT INTO t_emp VALUE(1,"alex","男",83,"保洁部",1,5),
(2,"bigb","男",28,"教学部",1000,1),
(3,"shang","男",32,"教学部",999999,1),
(4,"blex","女",39,"财务部",100,2),
(5,"clex","女",26,"人事部",250,3),
(6,"evaj","女",19,"研发部",8888,4),
(7,"wusir","男",40,"财务部",1590,5),
(8,"wuchao","男",42,"人事部",2345,3),
(9,"jiangyi","女",68,"小卖部",8989,8);-- 部门里面增加信息
INSERT INTO t_dep VALUE(5,"保洁部"),(1,"教学部"),(2,"财务部"),(3,"人事部"),(4,"研发部"),(6,"保安部"),(7,"鼓励部");-- 增加部门信息
CREATE TABLE t_emp(
id INT PRIMARY KEY,
NAME VARCHAR(32),
sex VARCHAR(32) NOT NULL,
age INT,
sal INT,
dep_id INT
);-- 创建员工表
CREATE TABLE t_dep(
id INT PRIMARY KEY,
dname VARCHAR(32)
);-- 创建部门表
INSERT INTO t_emp VALUE(1,"alex","男",83,1,5),
(2,"bigb","男",28,1000,1),
(3,"shang","男",32,999999,1),
(4,"blex","女",39,100,2),
(5,"clex","女",26,250,3),
(6,"evaj","女",19,8888,4),
(7,"wusir","男",40,1590,5),
(8,"wuchao","男",42,2345,3),
(9,"jiangyi","女",68,8989,8);-- 部门里面增加信息
INSERT INTO t_dep VALUE(5,"保洁部"),(1,"教学部"),(2,"财务部"),(3,"人事部"),(4,"研发部"),(6,"保安部"),(7,"鼓励部");-- 增加部门信息
CREATE TABLE t_music1(
id INT PRIMARY KEY,
NAME VARCHAR(32),
path VARCHAR(100)
);-- 创建音乐表
INSERT INTO t_music1 VALUES(2,"洛天依投食歌","F:\无损音乐\洛天依 - 洛天依投食歌.mp3");-- 增加音乐
CREATE TABLE student(
id INT PRIMARY KEY,
NAME VARCHAR(32),
SUBJECT VARCHAR(32),
result VARCHAR(32)
);-- 创建学生表
INSERT INTO student VALUES(1,"张三","数学",10),(2,"张三","语文",20),(3,"张三","地理",30);-- 增加数据
INSERT INTO student VALUES(4,"李四","数学",11),(5,"李四","语文",21),(6,"李四","地理",31);-- 增加数据
INSERT INTO student VALUES(7,"王五","数学",12),(8,"王五","语文",22),(9,"王五","地理",32);-- 增加数据
INSERT INTO student VALUES(10,"赵六","数学",13),(11,"赵六","语文",23),(12,"赵六","地理",33);-- 增加数据
CREATE TABLE book(
NAME VARCHAR(32),
price INT
);-- 创建图书表
INSERT INTO book VALUES("三国演义",1),("红楼梦",2),("西游记",3),("水浒传",4);-- 增加数据
CREATE TABLE dept(
id INT PRIMARY KEY,
NAME VARCHAR(32)
);-- 创建部门表
INSERT INTO dept VALUES(1,"总经办"),(2,"销售部"),(3,"财务部"),(4,"人事部"),(5,"行政部");-- 部门表里面增加数据
CREATE TABLE emp(
id INT,
emp_num INT,
NAME VARCHAR(32),
job VARCHAR(32),
zhijieshangji VARCHAR(32),
yuexin INT,
FOREIGN KEY(id) REFERENCES dept(id)
);-- 创建雇员信息表
INSERT INTO emp VALUES(1,1,"张三","销售","小明",1100),(1,2,"李四","销售","小明",1200),(2,3,"王五","实施","小明",1300),(2,4,"赵六","ui","小明",1400);-- 雇员信息表里面增加数据
CREATE TABLE student1(
id INT AUTO_INCREMENT PRIMARY KEY,
NAME VARCHAR(10) NOT NULL,
kemu VARCHAR(4) NOT NULL,
chengji INT NOT NULL
)ENGINE = INNODB CHARSET = utf8;-- 创建学生表1
CREATE TABLE USER(
USER VARCHAR(32) PRIMARY KEY,
pwd INT
);-- 创建用户表
CREATE TABLE goos(
id INT PRIMARY KEY,
NAME VARCHAR(32),
price INT
);-- 创建商品信息表
INSERT INTO goos VALUES(1,"手机",500),(2,"电脑",5000),(3,"桌子",20),(4,"衣服",800),(5,"电器",300);-- 增加数据
--------------------------------------------------------------------------------------------------------------------删
DROP DATABASE day31;-- 删除数据库
ALTER TABLE t_boy DROP id;-- 删除列
DROP TABLE t_4;-- 删除表
DELETE FROM t_boy1 WHERE NAME = "ww";-- 删除数据
sc DELETE mysql;-- 删除mysql服务
DROP USER alex1@"%";-- 删除用户及对应的权限
DROP INDEX index_1 ON mytable;-- 删除索引
DROP VIEW v_user;-- 删除视图
DELETE FROM USER;-- 删除用户表里面的所有信息
--------------------------------------------------------------------------------------------------------------------查
SELECT * FROM t_emp;-- 查询员工表
SELECT * FROM t_dep;-- 查询部门表
SELECT * FROM t_music1;-- 查询音乐表
SELECT * FROM t_emp,t_dep;-- 笛卡尔乘积
SELECT * FROM student;-- 查学生表
SELECT NAME,AVG(result) AS 平均成绩是 FROM student GROUP BY NAME;-- 查询每名同学的平均成绩
SELECT * FROM book;-- 查图书表
SELECT NAME FROM book ORDER BY price DESC LIMIT 3; -- 取出里面价格最高的三本书的书名
SELECT * FROM dept;-- 查部门表
SELECT * FROM emp;-- 查雇员信息表
SELECT id,MAX(yuexin),MIN(yuexin) FROM emp GROUP BY id;-- 列出emp表中各部门的部门号,最高工资,最低工资(可分开写)
SELECT MIN(yuexin),MAX(yuexin) FROM emp GROUP BY job = "销售" AND yuexin;-- 列出emp表中各部门job为’销售’的员工的最低工资,最高工资
SELECT id FROM emp GROUP BY job = "销售" AND yuexin < 2000;-- 对于emp中最低工资小于2000的部门,列出job为’销售’的员工的部门号,最低工资,最高工资
;-- 根据部门号由高而低,工资由低而高列出每个员工的姓名,部门号,工资(由高到低和由低到高分开写)
;-- 对于工资高于本部门平均水平的员工,列出部门号,姓名,工资,按部门号排序
SELECT * FROM student1;-- 查学生表1
SELECT t1.id,t1.name,t2.id,t2.dname FROM t_emp AS t1,t_dep AS t2 WHERE t1.id = t2.id;-- 关联查询1
SELECT t1.name,t2.dname FROM t_emp AS t1,t_dep AS t2 WHERE t1.id = t2.id;-- 关联查询2
SELECT t1.id,t1.name,t2.id,t2.dname FROM t_emp AS t1 LEFT JOIN t_dep AS t2 ON t1.id = t2.id;-- 这是左关联
SELECT * FROM t_emp AS t1 RIGHT JOIN t_dep AS t2 ON t1.id = t2.id;-- 这是右关联
SELECT * FROM t_emp AS t1 INNER JOIN t_dep AS t2 ON t1.id = t2.id;-- 这是内关联1
SELECT * FROM t_emp INNER JOIN t_dep ON t_emp.id = t_dep.id;-- 这是内关联2
SELECT * FROM t_emp INNER JOIN t_dep ON t_emp.id = t_dep.id WHERE age > 25;-- 以内连接的方式查询部门表和员工表,并且找出年龄大于25的员工
SELECT * FROM t_emp INNER JOIN t_dep ON t_emp.id = t_dep.id ORDER BY age;-- 以内连接的方式查询部门表和员工表,并且以年龄字段升序的方式显示
SELECT * FROM t_emp;-- 查询员工表
SELECT * FROM t_emp WHERE ID = 1 OR ID = 10;--
SELECT * FROM t_emp AS t1 INNER JOIN t_dep AS t2 ON t1.id = t2.id WHERE t1.age > 20 AND t2.dname = "教学部" AND t1.sal < 40000 ORDER BY t1.sal;-- 查询出教学部年龄大于20岁,并且工资小于40000的员工,按工资倒序排列(要求:分别使用多表联合查询和内连接查询)
SELECT * FROM t_emp AS t1,t_dep AS t2 WHERE t1.id = t2.id AND t2.dname = "教学部" AND age > 20 AND sal < 40000 ORDER BY sal DESC;-- 多表联合查询
SELECT * FROM t_emp AS t1 INNER JOIN t_dep AS t2 ON t1.id = t2.id AND t2.dname = "教学部" AND age > 20 AND sal < 40000 ORDER BY sal DESC;-- 内关联查询
SELECT * FROM t_emp,t_dep WHERE t_emp.dep_id = t_dep.id;-- 查询员工表和部门表的共同部分
SELECT MAX(sal),MIN(sal),t2.dname FROM t_emp AS t1 LEFT JOIN t_dep AS t2 ON t1.id = t2.id GROUP BY t1.id;-- 查询每个部门中最高工资和最低工资是多少,显示部门
SELECT t1.id,t1.name,t2.id,t2.dname FROM t_emp AS t1 LEFT JOIN t_dep AS t2 ON t1.id = t2.id
UNION ALL
SELECT t1.id,t1.name,t2.id,t2.dname FROM t_emp AS t1 RIGHT JOIN t_dep AS t2 ON t1.id = t2.id;-- 这是全关联2 UNION ALL 则直接显示结果
SELECT t1.id,t1.name,t2.id,t2.dname FROM t_emp AS t1 LEFT JOIN t_dep AS t2 ON t1.id = t2.id
UNION
SELECT t1.id,t1.name,t2.id,t2.dname FROM t_emp AS t1 RIGHT JOIN t_dep AS t2 ON t1.id = t2.id;-- 这是全关联3UNION 会去掉重复的数据
SELECT NAME,arms,skill FROM sanguo;-- 查询某些列
SHOW DATABASES; -- 显示所有数据库
USE day31;-- 切换数据库
SHOW TABLES;-- 显示所有的表
DESC t_8;-- 查看表结构
SELECT uname,country,age + 50 AS 年龄 FROM t_9;-- 使用算数表达式
SELECT NAME,arms,age FROM t_4 WHERE age > 30 OR age < 50;-- 大于30或小于50
SELECT NAME,arms,age FROM t_4 WHERE age > 30 AND age < 50;-- 大于30并且小于50
SELECT NAME,arms,age FROM t_4 WHERE NAME LIKE "%乔";-- 模糊匹配乔结尾
SELECT NAME,arms,age FROM t_4 WHERE NAME LIKE "乔%";-- 模糊匹配乔开头
SELECT NAME,arms,age FROM t_4 WHERE NAME LIKE "%乔%";-- 模糊匹配所有乔
SELECT NAME FROM t_4 LIMIT 1,6;-- 区间查2到6
SELECT NAME FROM t_4 LIMIT 0,3;-- 区间查前三行
SELECT COUNT(*) FROM t_4;-- 统计数所有列
SELECT COUNT(id) FROM t_4;-- 统计数只查询一列
SELECT COUNT(id),SUM(age),MAX(age),MIN(age),AVG(age) FROM t_4;-- 聚合函数最大值、最小值、求和、平均值
SELECT CONCAT(age,"岁") FROM t_4;-- 拼接字符串
SELECT COUNT(id),country FROM t_4 GROUP BY country;-- 分组查询国家
SELECT COUNT(id),SUM(age),MAX(age),MIN(age) country FROM t_4 WHERE country != "吴国" GROUP BY country;-- 分组查询不包含吴国
SHOW CREATE TABLE t_boy1;-- 查看表的创建语句
SHOW USE();--
SELECT USER, HOST, PASSWORD FROM mysql.user;-- 查询所有用户
SELECT DISTINCT USER FROM mysql.user; -- 去重查所有用户
SELECT DISTINCT uname FROM t_9;-- 去重所有名字
SELECT DISTINCT uname,age FROM t_9;-- 去重多个字段
SELECT DISTINCT uname,age FROM t_9 ORDER BY uname;-- 去重多个字段按名字排序
SELECT DISTINCT uname,age FROM t_9 ORDER BY uname,age;-- 去重多个字段按名字和年龄排序
SELECT DISTINCT uname,age FROM t_9 ORDER BY uname,age ASC;-- 去重多个字段按名字和年龄从低到高排序
SELECT DISTINCT uname,age FROM t_9 ORDER BY age DESC;-- 去重多个字段按年龄从高到低排序
SELECT uname,age FROM t_9 WHERE age > 20;-- 查询所有年龄超过20岁的
SELECT uname,age FROM t_9 WHERE age > 20 AND country = "tg";-- 查出某个国家年龄超过20的
SELECT uname FROM t_9 WHERE age = 21 OR age = 67;-- 查询年龄为21或67的人
FLUSH PRIVILEGES;-- 刷新权限表
SHOW GRANTS FOR alex7;-- 查看用户权限
SELECT ASCII("a");-- 查字符串的ASCII码值
SELECT CHAR(97);-- 查看ASCII码值对应的字符
SELECT LENGTH("abc");-- 查字符串中包含的字符个数
SELECT LEFT("qwerty",3);-- 截取左端字符串
SELECT RIGHT("qwerty",3);-- 截取右端字符串
SELECT SUBSTRING("qwerty",2,3);-- 指定位置截取
SELECT SUBSTRING(uname,1,1) FROM t_9;-- 截取所有人的姓
SELECT DISTINCT SUBSTRING(uname,1,1) FROM t_9; -- 去重截取姓
SELECT LTRIM(" abc ");-- 去除左边空格
SELECT RTRIM(" abc ");-- 去除右边空格
SELECT TRIM(" abc ");-- 去除两边空格
SELECT TRIM(BOTH "x" FROM "xxxabcxxx"); -- 删除两边特定字符
SELECT TRIM(LEADING 'x' FROM 'xxxabcxxx'); -- 删除左侧特定字符
SELECT TRIM(TRAILING 'x' FROM 'xxxabcxxx'); -- 删除右侧特定字符
SELECT REPLACE('123abc123','123','def'); -- 替换字符串
SELECT LOWER('aBcD'); -- 全部变小写
SELECT UPPER('aBcD'); -- 全部变大写
SELECT ABS(-30); -- 绝对值
SELECT MOD(3,2); -- 求3除以2的余数
SELECT FLOOR(5.6); -- 求5.6向下取整
SELECT CEILING(5.6); -- 求5.6向上取整
SELECT ROUND(5.6); -- 四舍五入为整数无小数位
SELECT ROUND(345.6789,2); -- 四舍五入并保留小数位
SELECT POW(2,3); -- 求2的3次幂
SELECT PI( ); -- 获取圆周率
SELECT RAND( ); -- 获取0到1之间的随机小数
SELECT CURRENT_DATE(); -- 获取当前日期
SELECT CURRENT_TIME(); -- 获取当前时间
SELECT NOW(); -- 获取当前日期和时间
SELECT DATE_FORMAT("2018-8-8","%Y年%m月%d日"); -- 日期格式化
SELECT DATE_FORMAT(CURRENT_DATE(),'%y年%m月%d日'); -- 年月日格式化
SELECT * FROM t_9 WHERE age >= 2 GROUP BY uname; -- 过滤年龄大于2的人
SELECT * FROM t_9 GROUP BY age HAVING age >= 2; -- having过滤
SELECT * FROM t_9 WHERE age BETWEEN 2 AND 21; -- BETWEEN AND范围过滤
SELECT * FROM t_9 WHERE age IS NOT NULL; -- 查询不为空的
SELECT * FROM t_9 WHERE age IN (2,21); -- 年龄在什么什么里面查询
SELECT * FROM t_9 WHERE age NOT IN (2,21); -- 年龄在什么什么里面不存在查询
SELECT * FROM sanguo;--
SELECT country,COUNT(id),NAME FROM sanguo GROUP BY country HAVING COUNT(id) < 2;-- 查询人数少于2人的国家名,该国家的人数,人名
SELECT NAME FROM sanguo WHERE age > 20; -- 查询各国家大于20岁的人名
SELECT country FROM sanguo GROUP BY country HAVING AVG(age) > 20;-- 查询平均年龄大于20岁的国家
SELECT NAME,MIN(age) FROM sanguo GROUP BY country HAVING MIN(age); -- 查询每个国家年龄最小的人是谁
SELECT NAME AS "<名字:>",age AS "<年龄:>" FROM sanguo;-- 查询所有人的名字和年龄,格式为<名字:> <年龄:>
SELECT CONCAT('<名字:',NAME,'> ','<年龄:',age,'>') FROM sanguo;-- 查询所有人的名字和年龄,格式为<名字:> <年龄:>
SELECT DISTINCT country FROM sanguo;-- 查询所有国家,去掉重复
SELECT NAME,age + 10 AS age_num FROM sanguo;-- 查询所有人的名字和他们10年后的年龄,年龄的字段名为age_num
SELECT NAME,yuexin * 12 AS 年薪 FROM sanguo;-- 如果有一个月薪的字段,怎么查出每个人的年薪
SHOW VARIABLES LIKE 'log_bin';-- 查看日志是否启用
SHOW MASTER STATUS;-- 查看日志信息
SELECT * FROM USER;-- 查询用户表
SELECT * FROM goos;-- 查询商品信息表
-------------------------------------------------------------------------------------------------------------------改
ALTER TABLE t_girl CHANGE id id_num INT;-- 修改列名和数据类型
ALTER TABLE sanguo MODIFY yuexin INT;-- 修改列的数据类型
RENAME TABLE person TO xs_person;-- 修改表名称
UPDATE t_boy1 SET NAME = "zs1" WHERE NAME = "zs";-- 修改数据
UPDATE sanguo SET yuexin = 1;-- 修改月薪数据
UPDATE t_person1 SET money = money + 1 WHERE id = 1 OR id = 2;-- 修改金额加1
BEGIN;-- 开始事物
UPDATE t_person1 SET money = money - 500 WHERE id = 1;-- 小明减500
UPDATE t_person1 SET money = money + 500 WHERE id = 2;-- 小丽加500
SELECT * FROM t_person1;-- 查询结果
ROLLBACK;-- 回滚事物操作
COMMIT;-- 提交事物操作