6天掌握MySQL基础--day1

数据库和SQL概述

数据库的好处

1.持久化数据到本地
2.可以实现结构化查询,方便管理

数据库的概念

  • DB
    数据库(database):存储数据的“仓库”。它保存了一系列有组织的数据。
  • DBMS
    数据库管理系统(Database Management System)。数据库是通过DBMS创建和操作的容器
  • SQL
    结构化查询语言(Structure Query Language):专门用来与数据库通信的语言

SQL原因概述

SQL的优点:

  1. 不是某个特定数据库供应商专有的语言,几乎所有DBMS都支持SQL
  2. 简单易学
  3. 虽然简单,但实际上是一种强有力的语言,灵活使用其语言元素,可以进行非常复杂和高级的数据库操作

数据库的特点

  1. 将数据放到表中,表再放到库中
  2. 一个数据库中可以有多个表,每个表都有一个的名字,用来标识自己。表名具有唯一性
  3. 表具有一些特性,这些特性定义了数据在表中如何存储,类似java中 “类”的设计
  4. 表由列组成,我们也称为字段。所有表都是由一个或多个列组成的,每一列类似java 中的”属性”
  5. 表中的数据是按行存储的,每一行类似于java中的“对象”

安装与使用

在这里插入图片描述

MySQL产品的特点

  • 优点:
    – 成本低:开放源代码,一般可以免费试用
    – 性能高:执行很快
    – 简单:很容易安装和使用

MySql数据库的安装

  • DBMS分为两类:
    – 基于共享文件系统的DBMS (Access )
    – 基于客户机——服务器的DBMS(MySQL、Oracle、SqlServer)

Windows平台下下载,版本的话没必要安装太新的(以5.5为例),目录最好别改,后面的配置程序按需要点,下面截几张关键的选项,特别注意到最后一步要尽量关闭其他的所有应用,否则会卡着不动
在这里插入图片描述
在这里插入图片描述我配置过了所以是灰的,初次配置可以更改名字
在这里插入图片描述配置文件为安装目录下的my.ini文件,有需要可以进行修改

启动和停止MySQL服务

  • 方式一:通过计算机管理方式
    右击计算机—管理—服务—启动或停止MySQL服务
  • 方式二:通过命令行方式
    启动:net start mysql服务名
    停止:net stop mysql服务名

MySQL服务端的登录和退出

  • 登录
    mysql [–h 主机名 -P 端口号] –u用户名 –p密码(p和密码间不能有空格,也可以不写密码,前面的配对间可有可无)
  • 退出
    exit

MySql数据库的使用

MySQL的常见命令

1. 查看当前所有的数据库
show databases;
2. 打开指定的库
use 库名
3. 查看当前库的所有表
show tables;
4. 查看其它库的所有表
show tables from 库名;
5. 创建表
create table 表名(
列名 列类型,
列名 列类型,
……
);
6. 查看表结构
desc 表名;
7. 查看服务器的版本
方式一:登录到mysql服务端select version();
方式二:没有登录到mysql服务端mysql --version或mysql -V

MySQL语法规范

  1. 不区分大小写,但建议关键字大写,表名、列名小写
  2. 每句话用;或\g结尾
  3. 每条命令根据需要,可以进行缩进 或换行
  4. 关键字不能缩写也不能分行
  5. 注释
    单行注释:#注释文字
    单行注释:-- 注释文字(有空格)
    多行注释:/* 注释文字 */

SQL的语言分类

DQL(Data Query Language):数据查询语言
	select 
DML(Data Manipulate Language):数据操作语言
	insert 、update、delete
DDL(Data Define Languge):数据定义语言
	create、drop、alter
TCL(Transaction Control Language):事务控制语言
	commit、rollback

可视化软件

sqlyog或者navicat都可以,自行下载就行

DQL语言学习

进阶1:基础查询

语法:
SELECT 要查询的东西
[FROM 表名];

类似于Java中 :System.out.println(要打印的东西);
特点:
①通过select查询完的结果 ,是一个虚拟的表格,不是真实存在
②要查询的东西可以是常量值、可以是表达式、可以是字段、可以是函数

基础查询详解

USE myemployees;

#1.查询表中的单个字段
SELECT last_name FROM employees;

#2.查询表中的多个字段
SELECT last_name,salary,email FROM employees;

#3.查询表中的所有字段
#方式一:
SELECT 
    `employee_id`,
    `first_name`,
    `last_name`,
    `phone_number`,
    `last_name`,
    `job_id`,
    `phone_number`,
    `job_id`,
    `salary`,
    `commission_pct`,
    `manager_id`,
    `department_id`,
    `hiredate` 
FROM
    employees ;
#方式二:  
SELECT * FROM employees;
 
#4.查询常量值
SELECT 100;
SELECT 'john';
 
#5.查询表达式
SELECT 100%98;
 
#6.查询函数
SELECT VERSION();
 
#7.起别名
/*
①便于理解
②如果要查询的字段有重名的情况,使用别名可以区分开来
*/
#方式一:使用as
SELECT 100%98 AS 结果;
SELECT last_name AS,first_name ASFROM employees;

#方式二:使用空格
SELECT last_name 姓,first_name 名 FROM employees;

#案例:查询salary,显示结果为 out put
SELECT salary AS "out put" FROM employees;

#8.去重
#使用DISTINCT关键字
#案例:查询员工表中涉及到的所有的部门编号
SELECT DISTINCT department_id FROM employees;

#9.+号的作用
/*
java中的+号:
①运算符,两个操作数都为数值型
②连接符,只要有一个操作数为字符串

mysql中的+号:
仅仅只有一个功能:运算符

select 100+90; #190 两个操作数都为数值型,则做加法运算
select '123'+90; #213 只要其中一方为字符型,试图将字符型数值转换成数值型
					  如果转换成功,则继续做加法运算
select 'john'+90;#90  如果转换失败,则将字符型数值转换成0

select null+10; 只要其中一方为null,则结果肯定为null
*/

#案例:查询员工名和姓连接成一个字段,并显示为 姓名
#连接字符串使用函数concat(str1,str2……)

SELECT CONCAT('a','b','c') AS 结果;  #abc

SELECT 
	CONCAT(last_name,first_name) AS 姓名
FROM
	employees;

进阶2:条件查询

条件查询:根据条件过滤原始表的数据,查询到想要的数据
语法:
select 
	要查询的字段|表达式|常量值|函数
from 
	表
where 
	条件;

分类:
一、条件表达式
	示例:salary>10000
	条件运算符:
	> < >= <= = != <>

二、逻辑表达式
示例:salary>10000 && salary<20000

逻辑运算符:
	and(&&):两个条件如果同时成立,结果为true,否则为false
	or(||):两个条件只要有一个成立,结果为true,否则为false
	not(!):如果条件成立,则not后为false,否则为true

三、模糊查询
	like
	between and
	in
	is null

条件查询详解

#一、按条件表达式筛选

#案例1:查询工资>12000的员工信息
SELECT 
	*
FROM
	employees
WHERE
	salary>12000;
	
#案例2:查询部门编号不等于90号的员工名和部门编号
SELECT 
	last_name,
	department_id
FROM
	employees
WHERE
	department_id<>90; #!=也行

#二、按逻辑表达式筛选

#案例1:查询工资在10000到20000之间的员工名、工资以及奖金率
SELECT
	last_name,
	salary,
	commission_pct
FROM
	employees
WHERE
	salary>=10000 AND salary<=20000;
	
#案例2:查询部门编号不是在90到110之间,或者工资高于15000的员工信息
SELECT
	*
FROM
	employees
WHERE
	NOT(department_id>=90 AND department_id<=110) OR salary>15000;
	
#三、模糊查询

#1.like
/*
特点:
①一般和通配符搭配使用
	通配符:
	% 任意多个字符,包含0个字符
	_ 任意单个字符
*/

#案例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%';

#案例3:查询员工名中第二个字符为_的员工名
SELECT
	last_name
FROM
	employees
WHERE
	last_name LIKE '_$_%' ESCAPE '$';
	
#2.between and
/*
①使用between and可以提高语句的简洁度
②包含临界值
③两个临界值不要调换顺序(小的在前,大的在后)
*/

#案例1:查询员工编号在100到120之间的员工信息

SELECT
	*
FROM
	employees
WHERE
	employee_id >= 100 AND employee_id<=120;
#----------------------
SELECT
	*
FROM
	employees
WHERE
	employee_id BETWEEN 100 AND 120;

#3.in
/*
含义:判断某字段的值是否属于in列表中的某一项
特点:
	①使用in提高语句简洁度
	②in列表的值类型必须一致或兼容
	③in列表中不支持通配符
*/
#案例:查询员工的工种编号是IT_PROG、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');

#4、is null
/*
=或<>不能用于判断null值
is null或is not null可以判断null值(没有not is null)
*/

#案例1:查询没有奖金的员工名和奖金率
SELECT
	last_name,
	commission_pct
FROM
	employees
WHERE
	commission_pct IS NULL;

#案例1:查询有奖金的员工名和奖金率
SELECT
	last_name,
	commission_pct
FROM
	employees
WHERE
	commission_pct IS NOT NULL;

#错误案例,不能把is当=用
SELECT
	last_name,
	commission_pct
FROM
	employees
WHERE 
	salary IS 12000;
	
#安全等于 <=>

#案例1:查询没有奖金的员工名和奖金率
SELECT
	last_name,
	commission_pct
FROM
	employees
WHERE
	commission_pct <=> NULL;
	
#案例2:查询工资为12000的员工信息
SELECT
	last_name,
	salary
FROM
	employees
WHERE 
	salary <=> 12000;

#is null 和 <=> 比较
IS NULL:仅仅可以判断NULL值,可读性较高,建议使用
<=>    :既可以判断NULL值,又可以判断普通的数值,可读性较低

重点关键字、函数总结

关键字、函数 功能
show databases、tables 查看当前所有的数据库、库中的所有表
use 库名 打开指定的库
create table 表名 创建表
desc 表名 查看表结构
from 指定表
where 指定条件
distinct 去重
concat(str1, str2……) 连接字符串
ifnull(expr1, expr2) 如果expr1为null则返回expr2
as 改名
like 一般配合通配符进行筛选
between and 相当于>= and <=
in 判断值是否在指定列表中
is null 判断null值
is not null 判断null值
<=> 可判断数值和null值
发布了16 篇原创文章 · 获赞 27 · 访问量 2691

猜你喜欢

转载自blog.csdn.net/weixin_42224119/article/details/105164178