今天给大家分享的是一些关于Mysql的基础知识,主要是关于mysql的,先说说所有的数据库的相关知识吧,遵循递进呀!
目录
常用查询分为以下几类:
一.基础查询
二.条件查询
三.排序查询
一.数据库的好处
1.可以持久化数据到本地
2.结构化查询
二.数据库的常见概念
1.DB: 数据库,存储数据的容器
2.DBMS: 数据库管理系统,又称为数据库软件或数据库产品,用于创建或管理DB
3.SQL: 结构化查询语言,用于和数据库通信的语言 ,不是某个数据库软件特有的,而是几乎所有的主流数据库软件通用的语言
对于oracle来讲,数据库放表空间,表空间里放表,表里放数据
orcl是oracle的默认数据库的名字
数据库中数据最终是放在文件中的,文件放在磁盘中
因为传统的数据库中的数据在磁盘存放,磁盘读写速度较慢;所有现在出现了内存数据库
所谓内存数据库,就是数据放在内存中.读写速度比较快.
三.数据库存储数据的特点
1.数据存放到表中,然后表再放到库中
2.一个库中可以有多张表,每张表具有唯一的表名用来标识自己
3.表中有一个或者多个列,列又称为 ''字段'',相当于java中"属性"
4.表中的每一行数据,相当于java中的''对象''
四.常见的数据库管理系统
关系型数据库: mysql, oracle, db2 , sqlserver
下面就要进入正题了,什么是Mysql呢?
一.MySQL的背景
前身属于瑞典的一家公司,MySQL AB
08年被sun公司收购
09年sun被oracel(甲骨文公司)收购
二.MySQL的优点
1.开源,免费,成本低
2.性能高,移植性也好
3.体积小,便于安装
三.MySQL的安装
属于c/s架构的软件,一般来讲安装服务端
企业版
社区版(免费)
版本:5.5 5.6 5.7 8.0
四.MySQL服务的启动和停止
方式一: 通过命令行
net start 服务名
net stop 服务名
方式二: 计算机--右击--管理--服务
五.MySQL服务的登录和退出
登录: mysql [-h 主机名 -p 端口名] -u 用户名 -p密码 如果是本机登录数据库,[-h主机名 -p端口名]可以不写.
退出: exit或 ctrl+C
不对不对,好像又有点跑题了,今天的真正的重点要来了! Mysql的常见查询语句到底有哪些呢?
(一).语法
select 查询列表 from 表名;
(二).特点
1.查询列表可以是字段,常量,表达式,函数,也可以是多个
2.查询结果是一个虚拟表
(三).式例
use 数据库名; (第一步)
DESC +表名 查看表结构的详细信息
1.查询单个字段
select 字段名 from 表名;
2.查询多个字段
select 字段名,字段名 from 表名;
3.查询所有字段
select * from 表名;
4.查询常量
select 常量值;
注意:字符型和日期型的常量值必须用单引号引起来,数值型不需要
5.查询函数
select 函数名(实参列表);
注意:数据库中的函数都有返回值!!! 查询函数体,并查询出对应的返回值.
6.查询表达式
select 100/1234;
7.起别名 (为了更方便的使用该表,起个简单的名字)
1.AS 别名
2.空格 别名
8.去重
select distinct 字段名 from 表名;
注意:不能同时两个或多个字段同时去重(select distinct a,b from 表名; )
9. +号
作用:做加法运算
select 数值+数值; 直接运算
select 字符+数值;先试图将字符转换成数值,如果转换成功,则继续运算;否则转换成0,再做运算
select null+值; 结果都为null
10.(补充)concat函数
功能:拼接字符
select concat(字符1,字符2,字符3.....);
11.(补充)ifnull函数
功能:判断某字段或表达式是否为null,如果为null 返回指定的值,否则返回原本的值
select ifnull (字段名,0) from 表名;
12.(补充)isnull 函数
功能:判断某字段或者表达式是否为null,如果是,则返回1(true),否则返回0(false)
(一).语法
select 查询列表 3 执行步骤(123)
from 表名 1
where 筛选条件 2
(二).筛选条件的分类
1.简单条件运算符
> < = <>(不等于 推荐) !=(不等于) (安全等于)
2.逻辑运算符
java sql
&& and
|| or
! not
3.模糊查询
#案例1: 查询员工名中包含字符a的员工信息
SELECT * FROM `employees` WHERE `last_name` LIKE '%a%';
%代表通配符 任意一个字符 %
#案例2: 查询员工中第三个字符为n,第五个字符为l的员工名和工资
SELECT `last_name`, `salary` FROM `employees` WHERE `last_name` LIKE '__n_l%'
#第三个字符为n,第五个字符为l
#案例3: 查询员工名中第二个字符为_的员工名
SELECT `last_name` FROM `employees` WHERE `last_name` LIKE '_\_%';
#用\隔起来 表示查找第二位置上为_的内容
`last_name` LIKE '_$_%' ESCAPE '$'; /自定义转义一个符号
ESCAPE 自定义 转义 一个符号
like: 一般搭配通配符使用,可以判断字符型或数值型
select * from 表名 where 字段名 like '1__'; 查条件为100多的表名里面的内容
between and
1.使用between and 可以提高语句的简洁度
2.包含临界值
3.两个临界值不能调换顺序
#案例1: 查询员工编号在100到120之间的员工信息
SELECT * FROM `employees` WHERE `employee_id` BETWEEN 100 AND 120;
in
含义:判断某字段的值是否属于in列表中的某一项
特点:
1.跟or效果一样,使用in提高语句简洁度
2.in列表的值类型必须一致或者兼容
3.in不支持使用通配符
#案例: 查询员工的工种编号是 IT_PROT,AD_VP,AD_PRES中的一个员工名和工种编号
第一种写法:
SELECT `last_name`, `job_id` FROM `employees` WHERE `job_id` = 'IT_PROT' OR `job_id` = 'AD_VP' OR `job_id`='AD_PRES';
第二种写法:
SELECT `last_name`, `job_id` FROM `employees` WHERE `job_id` IN ('IT_PROT','AD_VP','AD_PRES');
is null / is not null:用于判断null值
#案例1: 查询没有奖金的员工名和奖金率
SELECT `last_name`, `commission_pct` FROM `employees` WHERE `commission_pct` IS NULL;
#案例2: 查询有奖金的员工名和奖金率
SELECT `last_name`, `commission_pct` FROM `employees` WHERE `commission_pct` IS NOT NULL;
is null pk <=>
is null :仅仅可以判断null值,可读性较高,建议使用
<=>:既可以判断null值,又可以判断普通的数值,可读性较低,一般不建议使用
(一)语法:
select 查询列表 from where 筛选条件 order by 排序列表 asc 或 desc
(二)特点:
1.asc代表的是升序;desc代表的是降序
如果不写,默认是升序
2. order by 子句中可以支持单个字段,多个字段,表达式,函数,别名
3.order by 子句一般是放在查询语句的最后面, limit子句除外
案例1:查询员工信息,要求工资从高到低排序
select * from employees order by salary desc; (降序)
select * from employees order by salary; (升序)