mysql数据库

1.数据库的基本概念

1.1 DB

数据库(datebase)存储数据的仓库,保存了一系列有组织的数据

1.2 DBMS

数据库管理系统(Datebase Mangement System),数据库是通过DBMS创建和操作的容器。常见的数据库管理系统:MySql,Oracle,DB2,SqlServer等。

1.3 SQL

结构化查询语言(Structure Query Language):专门用来与数据库通信的语言。

特点:

1. 不是某个特定数据库供应商专有的语言,几乎所有的DBMS都支持SQL。

2. 简单易学。

3. 一种强有力的语言,灵活使用语言元素,可以进行非常高级和复杂的数据库操作。

1.4  表结构化

1. 将数据放入表中,表再放到数据库中,对数据进行分类。

2. 一个数据库中有多张表,每张表都有一个名字,用来标识自己。表名具有唯一。

3. 表具有一些特性,这些特性定义了数据在表中如何存储。

4. 表由列组成,我们也称为字段。所有的表都是由一个或者多个列组成的,每一列就代表一个属性。

5. 表的数据按行储存,每一行就是一个对象。

2.5 语法规范

1. 不区分大小写,但建议关键字大写,表名、列名小写。

2. 每条命令使用分号结尾。

3. 每条命令可以根据需要,进行缩进和换行。

4. 注释:

   - 单行注释:#或者--

   - 多行注释:/* 注释的内容 */

3   基础查询

查询也叫DQL(Data Query Language)语法。

3.1 语法

SELECT 查询列表 FROM 表名;

查询列表可以是表中的字段、常量值、表达式、函数。

查询的结果是一个虚拟的表格。

3.2  查询表中的单个字段

SELECT 字段名 FROM 表名;

示例:查询所有员工的姓名。

SELECT emplyee_name FROM emplyees;

3.3  查询表中的多个字段

示例:查询所有员工的姓名和年龄。

SELECT emplyee_name,emplyee_age FROM emplyees;

 3.4  查询常量值

SELECT 100,'张三';

3.5 查询表达式

SELECT 100 * 200;

3.6 查询函数

SELECT VERSION();

3.7 起别名

方式一:使用AS关键字

SELECT 查询字段 AS 别名 FROM 表名;

方式二:直接空格隔开

SELECT 查询字段 别名 FROM 表名;

3.8 去重

使用 DISTINCT 关键字

SELECT DISTINCT 要去重的字段,其他字段... FROM 表名;

示例:

查询员工表中出现的部门ID,排除重复的id。

SELECT DISTINCT department_id FROM emplyees;

3.9 +号

 Mysql中+号只有一个功能:运算符,不能作为连接符。

1. 如果+号两边都是数值型,正常作加法运算。

2. 如果两边有字符型,尝试将字符型数值转化成数值型,如果转换成功,则继续做加法运算,如果转换失败则转为0。比如:'11'会转为11,'1a'会转为1,'11a1'会转为11,'abc'会转为0,'abc11'会转为0。

3. null和任意类型数据作运算,结果都为null。

3.10 CONCAT()连接

CONCAT()函数用于连接字符串。

SELECT CONCAT(str1,str2,...)

3.11 IFNULL

IFNULL()函数,如果值为null,用什么替代。

SELECT IFNULL(字段名,替代值) FROM 表名;

4. 条件查询

4.1  语法

在基础查询的基础之上,后面加上WHERE关键字。

SELECT 查询列表    顺序3

FROM 表名              顺序1

WHERE 筛选条件;   顺序2

4.2 按表达式筛选

条件运算符:>、 <、 >=、 <=、 =、 !=、<> (不等于)。

4.3  按逻辑运算符

 逻辑运算符:&& 、||、!,分别对应and、or、not。

4.4  模糊查询

4.4.1. like

   like关键字通常与通配符一起使用。

   通配符:%代表任意多个字符,包含0个;_代表任意单个字符。

   案例一:查询姓名中包含【杨】字的员工信息。

   SELECT * FROM emplyees WHERE emplyee_name LIKE '%杨%';

   案例二:查询姓名中第二个字是【可】字的员工信息。

   SELECT * FROM emplyees WHERE emplyee_name LIKE '_可%';

4.4.2. bwtween ... and

查询在某段范围值内的数据,包含临界值。

  例一:查询工资在8000到10000之间的员工信息。

   SELECT * FROM emplyees WHERE salary BETWEEN 8000 AND 10000;

例二:查询入职时间在2018-01-01到2022-01-01之间的员工信息。

    日期也可以直接比较,条件表达式也可以直接比较日期。

   SELECT * FROM emplyees

   WHERE hiredate BETWEEN '2018-01-01' AND '2022-01-01';

 4.4.3.  in

判断某字段的值是否属于in列表中的某一项。

例 : 查询在部门2或者部门3的员工信息。

 SELECT * FROM emplyees WHERE department_id in (2,3);

 4.4.4. is null

  查询值为空的数据,条件表达式不能用于判断null。

   错误×写法

   SELECT * FROM emplyees WHERE department_id = null;

   正确✔写法

   SELECT * FROM emplyees WHERE department_id is null;

 4.4.5 is not null

查询数据不为空的数据

例:SELECT * FROM emplyees WHERE department_id IS NOT null

5  排序查询

查询出来的数据默认按照表格的保存顺序查询,我们如果需要修改查询结果展示的顺序,可以使用排序查询。

使用ORDER BY关键字实现,ASC代表升序,DESC代表降序。

 5.1 语法

SELECT 查询列表

FROM 表

[WHERE 筛选列表]

ORDER BY 排序列表 [ASC升序|DESC降序] -- ASC|DESC不写默认是ASC

5.2 使用单个字段排序

ORDER BY 排序字段 [ASC升序|DESC降序]

例如:将员工信息按工资升序排序

SELECT * FROM emplyees ORDER BY salary ASC

5.3 使用表达式排序

ORDER BY 表达式 [ASC升序|DESC降序]

案例:查询员工姓名、年薪,按照年薪高低降序,其中年薪为月薪*12。

SELECT emplyee_name,salary * 12 FROM emplyees WHERE department_id = 5 ORDER BY salary * 12 DESC;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值