Java:35-Mysql的概念

Mysql的概念

MySQL基础和SQL入门--------------------------------
数据库的基本概念:
数据库(DataBase) 就是存储和管理数据的仓库
其本质是一个文件系统, 还是以文件的方式,将数据保存在电脑上
数据存储方式的比较--------------------------------

在这里插入图片描述

通过上面的比较,我们可以看出,使用数据库存储数据
用户可以非常方便对数据库中的数据进行增加,删除, 修改及查询操作
常见的数据库软件排行榜--------------------------------
2020年数据库排行--------------------------------

在这里插入图片描述

开发中常见的数据库--------------------------------

在这里插入图片描述

选择MySQL是因为功能强大,足以应付web应用开发,并且开源,免费
MySQL的安装及配置--------------------------------
链接:https://pan.baidu.com/s/19reQ2CdTlV7ydY4K5MutQ
提取码:alsk
里面有关于数据库的安装卸载,非常简单,也有一个图形化界面sqlyog
MySQL的启动与关闭--------------------------------
我们电脑上都有一些程序是启动的,否则你连进入电脑都不可以,对于这样,那么我们的Mysql有是启动的,当然你可以不启动
这样的系统程序我们一般也叫做服务
计算机中的服务是指执行指定系统功能的程序、例程或进程,以便支持其他程序,尤其是低层接近硬件程序
而要找到这个服务,很简单,右键此电脑,有些叫计算机,会出现管理选项,点击
就可以找到服务了,在服务里面,找到你安装的Mysql的名字,右键后可以进行启动或者停止
当然,你可以在DOS窗口里,也就是cmd后的窗口,但是要注意,需要管理员模式打开,所以cmd就不行了
因为管理员模式相当于root用户,而启动和关闭Mysql需要这样的权限

在这里插入图片描述

//启动MySql 
net start mysql57
//关闭Mysql
net stop mysql57
//mysql57是你安装Mysql时设置的服务名称 

在这里插入图片描述

命令行登录数据库-------------------------------------
MySQL是一个需要账户名密码登录的数据库,登陆后使用,它提供了一个默认的root账号,使用安装时设置的密码即可登录
命令说明
mysql -u 用户名 -p 密码使用指定用户名和密码登录当前计算机中的MySQL数据库
mysql -h 主机IP -u 用户名 -p 密码-h 指定IP方式进行登录
命令演示-------------------------------
//mysql -uroot -p123456
//mysql -h127.0.0.1 -uroot -p123456
//在连接时,实际上也会从自己端口出发,即协议等
退出命令
//exit或者quit
//当然ctrl+z也可
SqlYog的使用-------------------------------------
我们每次在命令行里进行操作,非常的繁琐,所以就出现了图形化的Mysql,可以更好的操作了
在这之前,若需要卸载Mysql的,你可以首先找到卸载程序的Mysql,在我这里是这样的

在这里插入图片描述

在这里插入图片描述

在卸载之前,若你没有改变路径的话,基本上这个路径默认存放的,卸载后,就没有了,但是你还是没有删除干净

在这里插入图片描述

这个路径就是数据库存放数据的路径,也需要删除这个,才算基本上全部删除,之所以是基本上,是因为路径可能会被你改变
到那时,就要删除你改变路径的Mysql内容了
合理运用电脑自带的卸载,也是可以删除软件的
当然若你需要在任何地方,都可以用到Mysql的操作(命令),就需要配置环境变量了,就如Java一样,可以在任意地方使用命令
如果不配置的话,就找不到命令,并会给出提示,除非你到有命令的路径里面去
但这样很明显非常麻烦,太限制了,所以就要配置环境变量
SQLyog是业界著名的Webyog公司出品的一款简洁高效、功能强大的图形化MySQL数据库管理工具
使用 SQLyog 可以快速直观地让您从世界的任何角落通过网络来维护远端的 MySQL 数据库
MySql的目录结构------------------------------------
在这里,我的MySql的默认安装目录在 C:\Program Files\MySQL\MySQL Server 5.7,bin就是环境变量配置的目录

在这里插入图片描述

在这里插入图片描述

MySQL配置文件 与 数据库及 数据表所在目录---------------------------------

在这里插入图片描述

my.ini 文件 是 mysql 的配置文件,一般不建议去修改
data<目录> Mysql管理的数据库文件所在的目录

在这里插入图片描述

数据库管理系统-------------------------------
数据库管理系统(DataBase Management System,DBMS):指一种操作和管理维护数据库的大型软件
MySQL就是一个 数据库管理系统软件,安装了Mysql的电脑,我们叫它数据库服务器
数据库管理系统的作用-------------------------------
用于建立、使用和维护数据库,对数据库进行统一的管理
数据库管理系统、数据库 和表之间的关系-------------------------------
MySQL中管理着很多数据库,在实际开发环境中 一个数据库一般对应了一个的应用
数据库当中保存着多张表,每一张表对应着不同的业务,表中保存着对应业务的数据

在这里插入图片描述

对于服务器,就是安装了对应服务(软件)的计算机,如你的计算机安装了Mysql,那么也可以将你的计算机叫做Mysql服务器
数据库表------------------------------------------
数据库中以表为组织单位存储数据
表类似我们Java中的类,每个字段都有对应的数据类型
那么我们使用熟悉的Java程序来与关系型数据对比,就会发现以下关系:
类 -----> 表
类中属性 ----> 表中字段
对象 ---> 数据记录
SQL的概念---------------------------------
结构化查询语言(Structured Query Language)简称SQL
是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统
SQL 的作用-------------------------------------
是所有关系型数据库的统一查询规范
不同的关系型数据库都支持SQL所有的关系型数据库都可以使用SQL
不同数据库之间的SQL 有一些区别 方言
SQL通用语法-------------------------------------
SQL语句可以单行 或者 多行书写,以分号 结尾 ;
Sqlyog中可以不用写分号,即将你选择的执行,或者运行光标位置前后结束符(如分号,也可以设置结束符)之间的内容
即分号可以叫做结束标识,结束标识可以更改,如delimiter //,将结束符改为//,通常用于存储过程
因为存储过程的代码里需要分号,所以要设置结束符(不能提前结束吧,所以修改结束符来保证不冲突是整体结束还是这一行结束),修改的代码记得要占一行
即delimiter //,要占一行,否则后面的代码执行不了,这时不能用";"结尾了,因为结束符改了,否则报错
注意:只要是不影响代码连接的,可以随便写,如select * from 表 sdsdsaada,后面的sdsdsaada可以随便写,因为没起作用
不影响代码连接
可以使用空格和缩进来增加语句的可读性,但是注意关键字(或者其他单词,如数据库,表,字段,值等等单词)之间空格必须有
若没有空格的话,就是一个整体了,只不过可以多加空格
而对于不可以当作一个整体的,可以不写空格
如as关键字省略后,字段和自己所写的显示之间可以不加空格(实际上还是需要的),当然了,不可以是能当作整体的
如a as 1,不可以a1,因为a1会当作一个整体,所以必须要不能当作一个整体的,才可完全去空格,如*FROM,他们之间就没有空格
加空格可以美观我们的代码,更好的观察
而在有些地方在操作多个数据(如字段)时,需要加逗号",",如查询多个字段,或者创建表时,多个字段的初始化之间
MySql中使用SQL不区分大小写,一般关键字大写,数据库名 表名列名 小写
注释方式

在这里插入图片描述

"–"注释要加空格,否则会执行(识别)不了
"/**/"可以不加空格
"#"可以不加空格
上面的加空格是为了更好的观察,为了美观
对于我们来说都有CRUD
说的就是增查改删
Create,Retrieve,Update,Delete
-- 对于sql里
show  databases;
-- 是查询所有数据库,与当前所操作的数据库无关,任何时候都可以查询
-- 而
use 数据库名;
-- use 英文意思:使用
-- 是切换到该数据库
-- 无论是可视化界面(软件)还是dos窗口,分号都可以去掉的
-- Sqlyog中可以不用写分号,在用Sqlyog时
-- 会执行光标结束符之间的代码,或选中,将选中的都执行
-- 因为分号是结束符,对于一些工具会帮你结束,而有些不会
SQL的分类---------------------------------
分类说明
数据定义语言简称DDL(Data Definition Language),用来定义数据库对象:数据库,表,列等
数据操作语言简称DML(Data Manipulation Language),用来对数据库中表的记录进行更新
数据查询语言简称DQL(Data Query Language),用来查询数据库中表的记录
数据控制语言简称DCL(Date Control Language),用来定义数据库的访问权限和安全级别,及创建用户
注: 我们重点学习 DML 与 DQL

在这里插入图片描述

DDL操作 数据库----------------------------
创建数据库:
命令说明
create database 数据库名创建指定名称的数据库
create database 数据库名 character set 字符集创建指定名称的数据库,并且指定字符集(一般都指定utf8,不是utf-8哦,这一般是mysql的规范,可能以后随着版本的改变会改变)
查看/选择数据库-------------------------------
命令说明
use 数据库切换数据库
select database()查看当前正在使用的数据库
show databases查看Mysql中 都有哪些数据库
show create database 数据库名查看一个数据库的定义信息
修改数据库------------------------------
修改数据库字符集
命令说明
alter database 数据库名 character set 字符集数据库的字符集修改操作
删除数据库------------------------
命令说明
drop database 数据库名从MySql中永久的删除某个数据库
-- 查询所有的数据库列表
-- 先记着这个
-- sql 执行顺序优先级由高到低依次是:
-- from 关键字后面的语句、 where 关键字后面的语句(所以通常操作不到别名,因为是select后操作的)、 group by 后面的语句、 select 后面的语句
-- order by 后面的语句
-- 当然还有其他语句或者他的顺序,这里就不多说了,具体可以百度,这里只给出主要的语句和顺序
SHOW DATABASES;

/*
	对数据库操作的分类包含:
		CRUD
		C create 创建 代码里insert
		R retrieve 查询  代码里select
		U update 修改 代码里update
		D delete 删除 代码里delete
		使用数据库
*/

/*
	创建数据库 方式1: 指定名称的数据库
	latin1 编码
*/
CREATE DATABASE db1;

/*
	指定字符集的方式创建数据库
	utf8
*/
CREATE DATABASE db1_1 CHARACTER SET utf8;

/*
	查看数据库
*/
-- 切换数据库
USE db1_1;

-- 查询当前正在使用的数据库
SELECT DATABASE();
-- SELECT 英文意思:选取

-- 查询MySql中有哪些数据库
SHOW DATABASES;

-- 修改数据库的字符集
-- 语法格式 alter database 数据库名 character set utf8;
ALTER DATABASE db1 CHARACTER SET utf8;

-- 查询当前数据库的基本信息
SHOW CREATE DATABASE db1; -- 可以理解为展示创建该数据库的sql语句,sql规定这样写
-- 之所以没有单个展示,是因为有了全部展示了,所以不需要,然后可以直接use 数据库名,然后切换了

-- alter 英文意思:更改
-- show 英文意思:展示


-- 删除数据库
-- 语法格式 drop database 数据库名称 将数据库从MySql中永久删除
DROP DATABASE db1_1;   -- 慎用 
-- drop 英文意思:减少


对于不同的可视化Mysql界面(软件),所要的语言结构可能不同,即可能有某些限制
所以你的可视化界面(软件)的sql代码,在其他的可视化界面(软件)里可能会出错
对于我们Mysql自带的数据库都是有一定作用

在这里插入图片描述

DDL 操作 数据表----------------------------
MySQL常见的数据类型:
类型描述
int整型
double浮点型
varchar字符串型
date日期类型,给是为 yyyy-MM-dd ,只有年月日,没有时分秒
详细的数据类型-----------------------------

在这里插入图片描述

注意:MySQL中的 char类型与 varchar类型,都对应了 Java中的字符串类型,区别在于:
char类型是固定长度的: 根据定义的字符串长度分配足够的空间
varchar类型是可变长度的: 只使用字符串长度所需的空间
比如:保存字符串 “abc”
x char(10) 占用10个字节
y varchar(10) 占用3个字节
适用场景--------------------------------
char类型适合存储 固定长度的字符串,比如 密码 ,性别一类
varchar类型适合存储 在一定范围内,有长度变化的字符串

在这里插入图片描述

查看表---------------------------------
命令说明
show tables查看当前数据库中的所有表名
desc 表名查看数据表的结构
删除表----------------------------
命令说明
drop table 表名删除表(从数据库中永久删除某一张表)
drop table if exists 表名判断表是否存在, 存在的话就删除,不存在就不执行删除,这样就不会因为不存在而出现错误
/*
	创建表的语法格式
	create table 表名(
	   字段名称1 字段类型(长度),
	   字段名称2 字段类型,
	   字段名称3 字段类型 最后一行不要添加逗号
	);
	
	MySql中常见的数据类型
		int 整型
		double 浮点型
		varchar 字符串
		date 日期类型 年月日 没有时分秒 yyyy-MM-dd
		datetime 日期时间类型 yyyy-MM-dd HH:mm:ss
		
*/

-- 创建商品分类表
/*
	表名 category
		cid int 分类id
		cname varchar 分类的名称
*/

-- 选择要使用的数据库
USE db1;

-- 创建分类表
CREATE TABLE category(
	cid INT,
	cname VARCHAR(20)
);
-- varchar后面必须指定长度,代表最大数长度,而int代表显示最大(有默认,可以不用写上指定),即这个格子显示多少,但其实后面还有,需要自己去移动

-- 创建测试表
/*
	表名 test1
		tid int 
		tdate date
*/
CREATE TABLE test1(
	tid INT,  -- 不加长度默认为11,char默认为1
	tdate DATE
);

-- 快速创建一个表结构相同的表(复制表结构)
-- 语法结构 create table 新表名称 like 旧表名称

-- 创建一个与test1表结构相同的 test2表
CREATE TABLE test2 LIKE test1;
-- like 英文意思:相似

-- 查看表结构
DESC test1;
-- DESC 英文意思:降序,但在这里是查看表结构,与英文意思不符合
-- 即更加证明了,不是所有英文的意思都适用与编程语言的

-- 查看表
-- 查看当期那数据库中所有的数据表名
SHOW TABLES;

-- 查看创建表的 sql
SHOW CREATE TABLE category;
-- 这两个展示表的格式与展示数据库的格式类似

-- 查看表结构
DESC category;


-- 表的删除

-- 方式1: 将数据库中的某一张表永久删除
-- 语法格式: drop table 表名
DROP TABLE test1;

-- 方式2: 判断表是否存在,如果存在就删除 如果不存在就不执行删除
DROP TABLE IF EXISTS test2; -- 如果存在该表,就删除,用这个方法是防止方式1删除不存在的表所出现的错误
-- 而使用这个方法删除不存在的表,就会出现警告,但是没报错,就警告一下
-- exists 英文意思:存在

/*
	修改表的名称
	修改表的字符集
	修改表中的某一列 (数据类型 名称 长度)
	向表中添加一列
	删除表中的某一列
*/

-- 修改表名称 语法格式: rename table 旧表名 to 新表名
RENAME TABLE category TO category1;
-- rename 英文意思:重新命名
-- to 英文意思:到

-- 修改表的字符集为 gbk 
-- 语法格式: alter table 表名 character set 字符集
ALTER TABLE category1 CHARACTER SET gbk; 

-- 向表中添加一个字段 关键字: add
-- 语法格式: alter table 表名 add 字段名称 字段类型(长度)
-- 添加分类描述字段
ALTER TABLE category1 ADD cdesc VARCHAR(20);


-- 修改表中列的类型或者长度 关键字 modify,也可以加上一些修饰,如主键,但是加上的主键修饰后
-- 再修改时,就不可以增加主键了,因为主键只有一个,就算是你在修改主键的字段上增加主键,也不可修改
-- 因为加的主键不是在字段后面,而是自占一行,即不可再增加主键,若你只修改主键名
-- 那么自占一行的哪个主键名也会修改
-- 语法格式: alter table 表名 modify 字段名称 字段类型
-- 修改cdesc 字段的长度为 50
ALTER TABLE category1 MODIFY cdesc VARCHAR(50); -- 修改字段长度
ALTER TABLE category1 MODIFY cdesc CHAR(20); -- 修改字段类型
-- alter 英文意思:更改,改变大的
-- modify 英文意思:修改,改变小的

-- 修改列的名称 关键字: change,也可以加上一些修饰,如主键,但是加上的主键修饰后
-- 再修改时,就不可以增加主键了,因为主键只有一个,就算是你在修改主键的字段上增加主键,也不可修改
-- 因为加的主键不是在字段后面,而是自占一行,即不可再增加主键,若你只修改主键名
-- 那么自占一行的哪个主键名也会修改
-- 语法格式: alter table 表名 change 旧列名 新列名 类型(长度)
-- 修改cdesc字段 名称改为 description varchar(30)
ALTER TABLE category1 CHANGE cdesc description VARCHAR(30);
-- change 英文意思:改变,改变中等的

-- 删除列 关键 drop
-- 语法格式: alter table 表名 drop 列名
ALTER TABLE category1 DROP description;
操作表的语句和操作数据库的语句有些类似,有些只要将table变为database就可以了,如删除语句
之所以有些类似,是因为需要指定类型,其中table表示他是表,database表示他是数据库
本质上就是一步一步进入,然后操作的,如数据库 -> 表 -> 列
DML 操作表中数据------------------------------
SQL中的DML 用于对表中的数据进行增删改操作
注意:
值与字段必须要对应,个数相同与数据类型相同
值的数据大小,必须在字段指定的长度范围内
varchar,char,date类型的值必须使用单引号,或者双引号 包裹
如果要插入空值,可以忽略不写(不写对应字段和值),或者插入null
如果插入指定字段的值,必须要写上列名,以上只要没有做到其中一点,就会报错

在这里插入图片描述

/*
	DML 对表中的数据进行 增删改
	增加
		语法格式: insert into 表名 (字段名1,字段名2...) values(字段值1,字段值2...)
*/
-- 创建学生表
CREATE TABLE student(
	sid INT,
	sname VARCHAR(20),
	age INT,
	sex CHAR(1),
	address VARCHAR(40)
);

-- 向学生表中插入数据
-- 字段 -> 值,或者,字段名 -> 字段,都可以,因为这只是说明对应关系而已
-- 但是单独情况下我们通常都会用字段 -> 值
-- 具体怎么表示,看你选择哪一个,或者不选择,用自己的方式来表示
-- 方式1 插入全部字段 将所有字段名都写出来
INSERT INTO student (sid,sname,age,sex,address) VALUES(1,'孙悟空',18,'男','花果山');

-- 方式2 插入全部字段 不写字段名
INSERT INTO student VALUES(2,'孙悟饭',5,'男','地球');

-- 方式3 插入指定字段
INSERT INTO student (sid,sname) VALUES(3,'蜘蛛精');


-- 注意事项
	-- 1.值与字段必须对应 个数&数据类型&长度 都必须一致
	INSERT INTO student (sid,sname,age,sex,address) VALUES(4,'孙悟空',18,'男','花果山');

	-- 2.在插入 varchar char date 类型的时候,必须要使用 单引号 或者双引号进行包裹
	INSERT INTO student (sid,sname,age,sex,address) VALUES(4,'孙悟空',18,'男','花果山');

	-- 3.如果插入空值 可以忽略不写 或者写 null
	INSERT INTO student (sid,sname) VALUES(5,'唐僧');
	INSERT INTO student (sid,sname,age,sex,address) VALUES(6,'八戒',NULL,NULL,NULL);
	-- 其中values(value)后面添加值时,可以添加多个,用逗号隔开
	-- 如values(1,1),(2,2)这样的写法,当然以此类推,可以写多个
	

/*
	修改操作
		语法格式1: update 表名 set 列名 = 值
		语法格式2: update 表名 set 列名 = 值 [where 条件表达式: 字段名 = 值]
*/

-- 修改表中的所有的学生性别为女
UPDATE student SET sex = '女';  -- (慎用!!)

-- 带条件的修改 将sid为 1的数据,性别改为男
UPDATE student SET sex = '男' WHERE sid = 1;

-- 一次性修改多个列
-- 修改sid 为 5的这条数据, 年龄改为20, 地址改为 大唐
UPDATE student SET age = 20 , address = '大唐' WHERE sid = 5;


/*
	删除
		语法格式1: delete from 表名;
		语法格式2: delete from 表名 [where 条件];
*/

-- 删除 sid为 6的数据
DELETE FROM student WHERE sid = 6;

-- 删除所有数据
DELETE FROM student;


-- 删除所有数据的方式 两种
	-- 1. delete from 表; 不推荐,对表中的数据逐条删除,效率低,因为要回收很多次,即判断多次
	-- 2. truncate table 表; 推荐,删除整张表,然后再创建一个一模一样的新表
	-- 位置不变,是因为在操作前,就已经确认了
	-- 类似于drop table 表名删除表后,再用create创建表,其中创建的表与删除的表一模一样的,只不过没有值

INSERT INTO student VALUES(1,'孙悟空',20,'男','花果山');
TRUNCATE TABLE studen
-- insert 英文意思:插入
-- delete 英文意思:删除
-- update 英文意思:更新
-- select 英文意思:选取
-- into 英文意思:进入
-- from 英文意思:来自
-- where 英文意思:在该情况下
-- set 英文意思:设置,写在表名后面,where前面
-- charactor 英文意思:字符
-- truncate 英文意思:截断
-- values(value) 英文意思:值,这两个都可以插入数据,values插入单行快,value插入多行快
-- 多行,代表多条数据,单行,代表一条数据
-- 比如insert into 表 value(),(),就是多行,而insert into 表 values(),就是单行
注意:在插入时,若你不写字段名,那么必须要插入全部字段(也就是值),不可以少,否则报错
因为若少了,则不知道对应字段的字段名是什么
DQL 查询表中数据-------------------------------
准备数据:
#创建员工表
表名 emp
表中字段:
eid 员工id,int 
ename 姓名,varchar 
sex 性别,char 
salary 薪资,double 
hire_date 入职时间,date 
dept_name 部门名称,varchar 
#创建员工表
CREATE TABLE emp( 
    eid INT, 
    ename VARCHAR(20), 
    sex CHAR(1),
    salary DOUBLE, 
    hire_date DATE,
    dept_name VARCHAR(20)
);
#添加数据
INSERT INTO emp VALUES(1,'孙悟空','男',7200,'2013-02-04','教学部');
INSERT INTO emp VALUES(2,'猪八戒','男',3600,'2010-12-02','教学部');
INSERT INTO emp VALUES(3,'唐僧','男',9000,'2008-08-08','教学部');
INSERT INTO emp VALUES(4,'白骨精','女',5000,'2015-10-07','市场部');
INSERT INTO emp VALUES(5,'蜘蛛精','女',5000,'2011-03-14','市场部');
INSERT INTO emp VALUES(6,'玉兔精','女',200,'2000-03-14','市场部');
INSERT INTO emp VALUES(7,'林黛玉','女',10000,'2019-10-07','财务部');
INSERT INTO emp VALUES(8,'黄蓉','女',3500,'2011-09-14','财务部');
INSERT INTO emp VALUES(9,'吴承恩','男',20000,'2000-03-14',NULL);
INSERT INTO emp VALUES(10,'孙悟饭','男', 10,'2020-03-14','财务部');
INSERT INTO emp VALUES(11,'兔八哥','女', 300,'2010-03-14','财务部');
简单查询---------------------------------
查询不会对数据库中的数据进行修改,只是一种显示数据的方式 SELECT
条件查询-------------------------------
如果查询语句中没有设置条件,就会查询所有的行信息,在实际应用中,一定要指定查询条件,对记录进行过滤
运算符--------------------
比较运算符:
运算符说明
> < <= >= = <> !=大于、小于、大于(小于)等于、不等于
BETWEEN …AND…显示在某一区间的值,例如: 2000-10000之间: Between 2000 and 10000
IN(集合)集合表示多个值,使用逗号分隔,例如: name in (悟空,八戒) in中的每个数据都会作为一次条件 只要满足条件就会显示
LIKE ‘%张%’模糊查询,含有"张"字
IS NULL查询某一列为NULL的值,注: 不能写 = NULL
逻辑运算符-------------------------
运算符说明
And &&多个条件同时成立
Or | |多个条件任一成立
Not不成立,取反
模糊查询 通配符------------------------------
通配符说明
%表示匹配任意多个字符串
_表示匹配 一个字符
/*
	DQL 
		简单查询
			select 列名 from 表名;
*/

-- 查询emp 表中的所有数据
SELECT * FROM emp; -- * 表示所有的列

-- 查询所有数据 只显示 id 和 name
SELECT eid, ename FROM emp;

-- 查询所有的数据,然后给列名 改为中文
SELECT * FROM emp;

-- 别名查询 使用关键字 as

SELECT 
	eid AS '编号',
	ename AS '姓名',
	sex AS '性别',
	salary AS '薪资',
	hire_date AS '入职时间',
	dept_name '部门名称'  -- as 可以省略

FROM emp;

-- 查询一共有几个部门
SELECT dept_name FROM emp;

-- 去重操作 关键字 distinct,放前面,即前面不可有字段,否则报错
-- 且如果后面有多个字段,比如DISTINCT a ,b,那么必须是a和b字段都相同,才会去重,单个相同不会去重(去掉)
SELECT DISTINCT dept_name FROM emp;

-- 将我们的员工薪资数据 +1000 进行展示(一般也可以操作字段之间的操作,在其他数据库可能有所不同)
SELECT ename, salary+1000 AS salary FROM emp;
-- 当操作上面的数据时,会显示salary+1000的字段给你看,而不是salary,可以用as来表示回去

-- 注意: 查询操作 不会对数据表中的数据进行修改,只是一种显示的方式


/*
	条件查询
	语法格式: select 列名 from 表名 where 条件表达式
	
	比较运算符
		>  <  <=   >=   =  <> !=
		BETWEEN ... AND ... 在两者之间,且包括两者,如BETWENN 1000 AND 2000
	    在1000和2000之间,包括1000和2000
	    通常用于条件查询,放在字段后面,进行判断,然后查询对应结果
	    但这里需要注意:对应的''或者""包括的,一般有特殊的不能写,比如"100",'100'等等, 无论中间是否加上信息(比如-),否则会导致查询失败(一般日期的数字范围不会出现这样的情况)
	    即不会返回数据,所以由于特殊的情况有很多,所以最好不加''或者""
		IN(集合) 包含集合的东西,如IN(1000,2000),包含1000和2000(不是或,而是与)
		通常用于条件查询,放在字段后面,进行判断,然后查询对应结果
		LIKE,模糊查询,如LIKE '%和%',含有"和"字,LIKE '%和',"和"字结尾,LIKE '和%',"和"字开头
		如LIKE '-和-',"和"字前面和后面必须只能由一个字
		LIKE '_和',"和"字结尾,但前面必须只能有一个字
		LIKE '和_',"和"字开头,但后面必须只能有一个字
		%表示匹配任意多个字符串,即可以是零个,_表示匹配 一个字符
		通常用于条件查询,放在字段后面(不一定放在字段后面,如show variables like 'autocommit')
		进行判断,然后查询对应结果,即可以理解为对数据进行选择(必须有操作对象)
		当然也可以直接查对应的,如LINK '和',直接查"和"字
		IS NULL
		
	逻辑运算符
		And
		Or
		Not
*/
# 查询员工姓名为黄蓉的员工信息
-- 1.查哪张表	2.查哪些字段	3.查询条件
SELECT * FROM emp WHERE ename = '黄蓉'


# 查询薪水价格为5000的员工信息
SELECT * FROM emp WHERE salary = 5000;


# 查询薪水价格不是5000的所有员工信息
SELECT * FROM emp WHERE salary != 5000;
SELECT * FROM emp WHERE salary <> 5000;

# 查询薪水价格大于6000元的所有员工信息
SELECT * FROM emp WHERE salary > 6000;

# 查询薪水价格在5000到10000之间所有员工信息
SELECT * FROM emp WHERE salary BETWEEN 5000 AND 10000;
SELECT * FROM emp WHERE salary >= 5000 AND salary  <= 10000;

# 查询薪水价格是3600或7200或者20000的所有员工信息
SELECT * FROM emp WHERE salary = 3600 OR salary = 7200 OR salary = 20000;
-- 方式2 使用 in() 匹配括号中的参数
SELECT * FROM emp WHERE salary IN(3600,7200,20000);

/*
	like '_精'
		% 通配符 ,表示匹配任意多个字符串
		_ 通配符 ,表示匹配一个字符
*/

# 查询含有'精'字的所有员工信息
SELECT * FROM emp WHERE ename LIKE '%精%';

# 查询以'孙'开头的所有员工信息
SELECT * FROM emp WHERE ename LIKE '孙%';

# 查询第二个字为'兔'的所有员工信息
SELECT * FROM emp WHERE ename LIKE '_兔%';

# 查询没有部门的员工信息
-- select * from emp where dept_name = null; 错误方式
-- 不可以与null进行判断
SELECT * FROM emp WHERE dept_name IS NULL;

# 查询有部门的员工信息
SELECT * FROM emp WHERE dept_name IS NOT NULL;
-- not不可以写is前面,否则报错,sql规定这样写

-- 条件查询 先取出表中的每条数据,满足条件的就返回,不满足的就过滤
-- select 英文意思:选取
-- as 英文意思:如同
-- distinct 英文意思:不同的

-- 最后注意:默认情况下,where或者其他的条件的,默认为true,即会显示数据,如果你通过条件使得结果是false,那么不会显示,这也是条件的底层原因,也就是说,如果是where a>6 && false,那么就没有a>6的数据了

在mysql中null不能使用任何运算符
最后要注意:当多个请求访问mysql时,可能发生死机(宕机),或者停机,因为请求的处理基本是操作线程了(一般不是线程池),所以线程越来越多,内存不够,容易卡死,或者导致某些东西操作不了使得停机(某些判断),一般服务器(如电脑,或者说操作系统造成的)都有这样的处理
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值