0
点赞
收藏
分享

微信扫一扫

一些mysql自学笔记1

闲嫌咸贤 2022-02-26 阅读 164

##关于一些快捷键

  1. win+R打开cmd
  2. win+shift+S局部截屏
  3. mspaint打开画板
  4. F12对sqlyog自动格式化
  5. F9执行
  6. 代码错误是因为中英文错误,作者在写的时候为了效率并没有仔细管这个,关于格式问题,有时间再改(把markdownpad当写字板来用了,并不知道技巧)

##MySQL启动和退出
net start mysql55

##MySQL服务的登录与退出

  1. Mysql自带客户端
  2. cmd(管理)
    mysql【-h主机名(root)-P端口号(3306)】-u用户名-p密码(123456) (不知道为什么我的电脑用不来)
    原因:环境变量没配好
  3. 退出 ctrl+C 或者 exit

##MySQL的常见命令

  1. 查看当前所有数据库
    show databases;

  2. 打开指定的库;
    use 库名

  3. 查看当前库的所有表
    show tables from 库名;

  4. 查看当前库所有表
    show tables

  5. 创建表
    create table 表名(
    列名 列类型,
    列名 列类型,
    。。。
    );

  6. 查看表结构
    desc表名;

  7. 查看服务器的版本
    1.登录到mysql服务器
    select version();
    2.没有登录到mysql服务器
    mysql–version 或 mysql–V

##语法规范

  1. 单行注释:#注释文字
  2. 单行注释:-- (空格)注释文字
  3. 多行注释:/注释文字/
  4. 快捷键运行:F9
  5. 修改字体大小:ctrl+鼠标滚动轴

##DQL(data query language数据查询)语言学习

  1. 基础查询
    /*
    语法:
    select 查询列表 from 表名;

类似于:system.out.printn(打印东西);(Java中的内容)

特点:

  1. 查询列表可以是:表中的字段、常量值、表达式、函数
  2. 查询的结果是一个虚拟的表格

###1.查询单个
SELECT last_name FROM employees;

###2.查询多个
SELECT last_name,salary,email FROM employees;

###3.查询表中所有字段
方式一:可以双击
方式二:select*(代表所有字段)from employees;

###4.查询常量值
SELECT 100; select 'John';

###5.查询表达式
select 100*98; select 100%98;(答案:2)

###6.查询函数
select version();

###7.别名(提高可读性;如果查询的字段有重名的情况,起别名可以区分开来)
方式一:select 100%98 AS 结果;
select first_name as 名 from employees;

方式二:使用空格
select last_name 姓,first_name 名 from employees;

####特殊情况
查询salary,显示结果为 out put
(加单引号或者双引号)(mysql里面建议加双引号)

select salary as 'out put' from employees;

###8.去重
查询部门编号去重(加上distinct)

select distinct department_id from employees;

###9.+号的作用
案例:查询员工的姓加上名
select last_name + first name as 姓名
from employees;(输不出来)

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

select 100+90;两个操作数都为数值型,则做加法运算

select ‘123’+90; 只要其中一方为字符型,试图将字符型数值转换为数值型(输出213)

select ‘jonn’+90;如果转换失败,则将字符型数值转换为0

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

故用concat
select concat(‘a’,‘b’,‘a’)as

select concat(‘first_name’,‘last_name’) as 姓名 from employees;

###如果没有奖金率
那么用 ifnull
select ifnull(commission_pct,0)as 奖金率 from employees;

###进阶2:条件查询
/*
语法:
select 查询列表
from 表名
where筛选条件

程序执行时的顺序一、from,二、筛选条件,三、select

###条件查询分类
一、按条件表达式筛选
条件运算符:> < = != <>(也当作不等于) >= <=
二、按逻辑表达式筛选
逻辑运算符:
&&(与) ||(或) !(非)
and or not
三、模糊查询
like
between and
in
is null或者(is not null)

####案例1
查询工资>12000的员工信息
select * from employees where salary>12000;

####案例2
查询部门编号不等于90的员工名和部门编号

select last_name, department_id from employees where department_id !=90; (这里的不等于最好用<>,mysql推荐)

####案例3
查询工资z在10000到20000之间的员工名、工资以及奖金
select last_name,salary,commission_pct from employees where salary>=10000 and salary<=20000;

####案例4
查询部门编号不是在90到110之间,或者工资高于15000的员工信息
方法一:select * from employees where department_id <90 or department_id> 110 or salary>15000;

方法二:select * from employees where Not(department_id>=90 and department_id<=110)or salary>15000;

###模糊查询

####案例1
查询员工名中包含字符a的员工信息

select * From employees where last_name like '%a%';
标注:like
一般和通配符搭配使用
%任意多个字符,包含0字符
_任意单个字符

####案例2
查询员工名中第三个字符为e,第五个字符为a的员工名和工资
select last_name, salary from employees where last_name like '___e_a%';

###案例3(特别的)
查询员工名中第二个字符为_的员工名
select last_name from employees where last_name like '_\_%';(用下划线转义一下)
mysql里面是这么推荐的
last_name like '_$(随便一个字符)_%' escape '$';(这里注释一下);

###between and(包含临界值)(两个值不能颠倒顺序)
案例4:查询员工编号在100到120之间的员工信息
select * From employees where employee_id between 100 and 120;

###in
案例5:查询员工的工种编号是 IT_DROT、AD_VP、AD_PRES中的一个员工名和工种编号
方法一:
select last_name, job_id from employees where job_id = 'IT_DROT' or job_id = 'AD_VP' or job_id = 'AD_PRES';
方法二:
select last_name,job_id from employees where job_id in ('IT_DROT','AD_VP','AD_PRES');

####in的注意事项
in列表的值类型必须统一或者兼容123,"123"都是整型

###is null
案例6:查询没有奖金的员工名和奖金率

select last_name, commission_pct From employees where commission_pct = null;(等于号不能判断null的值)
故此时is null派上了用场

where commission_pct is null;

案例7:查询有奖金的员工名和奖金率
select last_name, commission_pct from employees where commission_pct is not null;

###安全等于 <=>
案例一:也可以用来做查询没有奖金的员工名和奖金率
select last_name, commission_pct from employees where commission_pct <=>null;
案例二:查询工资为12000的员工信息
select last_name, commission_pct from employees where salary <=>12000;

###PK:is null、<=>
is null:仅仅可以判断null值,可读性较高,建议使用上面的
<=> :既可以判断null值,又可以判断普通的数值,可读性较低

###查询员工号为176的员工的姓名和部门号和年薪
select last_name, department_id, salary*12*(1+ifnull(commission_pct,0)) as 年薪 from employees;

#复习
##一、数据库的好处
1、可以持久化数据到本地
2、结构化查询

##二、数据库的常见概念
1、DB:数据库,存储数据的容器
2、DBMS:数据库管理系统,又称为数据库软件或数据库产品,用于创建或管理DB
3、SQL:结构化查询语言,用于和数据库通信的语言,不是某个数据库软件特有的,而是几乎所有的主流的数据库软件通用的语言

##三、数据库存储数据的特点
1、数据存放到表中,然后表再放到库中
2、一个库中可以有多张表,每张表具有唯一的表名用来标识自己
3、表中有一个或多个列,列又称为“字段”,相当于Java中的“属性”
4、表中的每一行数据,相当于Java中的“对象”

##四、常见的数据库管理系统
mysql、oracle、db2、sqlserver

#背景知识
##一、mysql的背景
前身属于瑞典的一家公司,mysql ab
08年被sun公司收购
09年sun被oracle收购

##二、mysql的优点
1、开源、免费、成本低
2、性能高、移植性也好
3、体积小、便于安装

##三、mysql的安装
属于c/s架构的软件,一般来讲安装服务端
企业版
社区版
5.5
5.6
5.7
8.0

##四、mysql服务的启动和停止
方式一:通过命令行
net start服务名 net stop服务名
方式二:计算机–右击–管理–服务

##五、登录:
mysql【-h 主机名-P 端口号】-u 用户名-p密码
(前面的可以加空格,p密码不能空格)
(密码那要输的话,可以空格另起一行没那么别人就看不到你的密码)

##退出:
exit或ctrl+C

#复习2
##一、语法
select 查询列表
from表名

##二、特点
1、查询列表可以使字段、常量、表达式、函数、也可以是多个
2、查询结果是一个虚拟表

##三、示例
1、查询单个字段
select 字段名 from 表名

2、查询多个字段
select 字段名,字段名 from表名

3、查询所有字段
select * from 表名

4、查询常量值
select 常量值(加不加from表名都可以,因为没有啥意义)
注意:字符型和日期型的常量值必须用单引号引起了,数值型不要

5、查询函数
select 函数名(实参列表)
(mysql中的函数必须要有select,必须要有返回值)

6、查询表达式
select 100/1234;

7、起别名(方式一:as;方式二:空格)

8、去重
select distinct 字段名 from 表名;

9、+作用(做加法运算)
select 数值+数值:直接运算
select 字符+数值:先试图将字符转换成数值,如果转换成功则继续运算,否则转换成0,在做运算
select null+值;结果都为null

10、【补充】concat函数
功能:拼接字符
select concat(字符1,字符2,字符3,。。。);

11、【补充】ifnull函数
功能:判断字段或表达式是否为null,如果为null返回指定的值,否则返回原本的值
select ifnull(commission_pct,0) from employees

12、【补充】isnull
select isnull(commission_pct),commission_pct from employees;(判断commission_pct的值是否为null,如果为null值为1,如果不为null,值为0)

#条件查询(一、语法)
selceet 查询列表
from 表名
where 筛选条件
#二、筛选条件的分类
1、简单条件运算符

2、逻辑运算符
&&(and) ||(or) !(not)

3、模糊查询
like 一般搭配通配符使用,用于判断字符型
(也可以用来查询数值的)
例子
select *
from employees
where department_id like ‘1__’;

通配符:%任意多个字符,_任意单个字符

between and
in
is null/is not null

is null PK <=>
is null(不能判断普通类型的数值,可判断null值,可读性更好)
<=>(都可)

#进阶3:排序查询
引入
select*from employees;
语法:
select 查询列表
from 表
【where 筛选条件】
order by 排序列表【asc(升序)|desc(降序)】
特点:一、asc代表的是升序,desc代表的是降序,如果不写,默认升序
二、order by 字句中可以支撑单个字段、多个字段、表达式、函数、别名
三、order by 的执行顺序,字句一般是放在查询语句的最后面,但limit字句除外
(一from;二where;三select;四order by)
##案例1:查询员工信息,要求工资从高到低排序
select * from employees order by salary desc;
从低到高
select * from employees order by salary asc;(asc也可以省略)

##案例2:查询部门编号>=90的员工信息,按入职时间的先后进行排序
select * from employees where department_id >=90 order by hiredate asc;

##案例3:【按表达式排序】按年薪的高低显示员工的信息和年薪
select *,salary*12*(1+ifnull(commission_pct,0)) 年薪 from employees order by salary*12*(1+ifnull(commission_pct,0)) desc;

##案例4:按年薪的高低显示员工的信息和年薪【按别名排序】
select *,salary*12*(1+ifnull(commission_pct,0)) 年薪 from employees order by 年薪 desc;

##案例5:按姓名的长度显示员工的姓名和工资【按函数排序】
select length(last_name)字节长度,last_name,salary from employees order by 字节长度 desc;

##案例6:查询员工信息,要求先按工资升序,再按员工编号降序【按多个字段排序】
select * from employees order by salary asc,employee_id desc;

##例子1:查询员工的姓名和部门号和年薪,按年薪降序,按姓名升序
select last_name,department_id,salary*12*(1+ifnull(commission_pct,0)) 年薪 from employees order by 年薪 desc, last_name asc;
##例子2:选择工资不在8000到17000的员工的姓名和工资,按工资降序
select last_name,salary from employees where salary not between 8000 and 17000 order by salary desc;

##例子3:查询邮箱中包含e的员工信息,并先按邮箱的字节数降序,再按部门号升序
select *,length(email){为了看字节数是不是排序可以加上} from employees where email like '%e%' order by length(email) desc,department_id asc;
#进阶4:常见函数
功能:概念:类似于java的方法,将一组逻辑语句封装在方法体中,对外暴露方法名
好处:1、隐藏了实现细节 2、提高代码的重用性
调用:select函数名(实参列表)【from表】;
特点:一、加什么(函数名)
二、干什么(函数功能)

##DML(data manipulation language数据操作)
增删改

##DDL(define)定义语言
库和表的管理

##TCL语言(transaction control)
事务控制语言

举报

相关推荐

【一些笔记】

cpp一些容器用法(笔记1)

xss一些笔记

MySQL自学笔记(一)

一些技术互问1

翻译的一些1

git的一些笔记

一些C#笔记

0 条评论