MySQL学习笔记(自用)

MySQL学习笔记

一、为什么要学习数据库

数组:断电即失,无法实现数据持久化存储

集合:同数组

文件:存取复杂,不方便实现

DB:数据库:存储数据的“仓库”

DBMS:数据库管理系统,又称为数据库软件,用于管理DB中的数据

  1. 基于共享文件系统的DBMS
  2. 基于客户机——服务器(c/s架构)的DBMS(MySQL、Oracle、SqlServer)

SQL:结构化查询语言,用于和DBMS通信的语言

二、MySQL的启动与关闭

  1. ”此电脑“右击,点击”管理“,点击”服务和应用程序“,点击”服务“找到MySQL右击可选择”启动、暂停、停止等“操作
  2. 管理员身份运行CMD
  • net stop MySQL停止MySQL(自己定义的MySQL在本机的名称,定义的什么填什么)运行
  • net start MySQL启动MySQL(同上)

三、使用cmd服务端的登录和退出

  1. 以管理员身份进入cmd控制台,输入

    mysql -h(host主机) localhost -P(port端口号) 3306 -u(user)root -p(password)这里输入比较详细,一般连接本机的端口号为3306的只需要输入mysql -u root -p

  2. 将所有内容都填在相应的命令后,密码也可不填回车后继续输入即可;

    mysql -h localhost -P(port端口号) 3306 -u(user)root -p(password)123456

    -h:host主机

    -P:port端口号

    -u:user用户名

    -p:password密码

    注:-p和密码之间不能有空格,-h和localhost,-P和3306,-u和root之间有无空格都可以

  3. 退出mysql:在CMD控制台输入:exit或直接用快捷键ctrl+c;

  4. MySQL自带的客户端(只限于root用户)登录和退出。

四、常见的SQL命令

  1. show database;——查看所有数据库

  2. use test;(进入指定的库)

  3. show tables;//查看test中的所有表

  4. 再查看mysql库中的所有表show tables from mysql

    注:目前还在test库中,我们只是在test库中查看了mysql库中的表

  5. 创建一个表

    select database();//用于查看
    
    create table stuinfo(
    id int,
    name varchar(20));
    
  6. desc stuinfo;查看表结构

  7. select *from stuinfo;查看数据

  8. 查看MySQL版本

    • 在MySQL服务端中输入命令select version();
    • 在控制台中输入mysql -V 、mysql -version

五、语法规范

  1. 不区分大小写,建议,关键字大写,表名,列名小写
  2. 每条命令最好以分号结尾
  3. 每条命令根据需要,可以进行缩进或换行
  4. 注释
    • 单行注释:#注释文字
    • 单行注释:-- 注释文字
    • 多行注释:/注释文字/

六、SQL语言

1、DQL语言(Data Query Language)查询

1.1基础查询:语法
select 查询列表
from 表名;

特点:
1、查询列表可以是:表中的字段、常量值、表达式、函数
2、查询结果是一个虚拟的表格。
1.1.1查询表中的单个字段
select last_name from employees;
1.1.2查询表中的多个字段
select last_name,first_name from employees;
1.1.3查询所有字段
select * from employees;

注:

1、在每次查询之前使用use标注操作的库名

2、着重符号“``”用于区分字段和关键字的情况下会被用到。

3、选中要执行的命令点击执行即可执行

1.1.4查询常量值

注:sql不区分字符和字符串,统一使用单引号

select 100;
select 'john';
1.1.5查询表达式
select 100*98;
1.1.6查询函数
select version();
1.1.7为字段起别名

1、便于理解

2、如果要查询的字段有重名的情况,可以使用别名区分。

1、使用AS
select 100%98 as 结果;
2、使用空格
select last_name 姓,first_name 名 from employees;

​ 案例:查询工资,显示结果为out put

select salary as "out put" from employees;

如果遇到属性值,给别名加上双引号

1.1.8去重:distinct

案例:查询员工表中涉及到的所有的部门编号

select distinct department_id from employees;
1.1.9+号的作用

案例:查询为员工名和姓连接成一个字段,并显示为姓名。

select 
	last_name+frist_name as 姓名 
from 
	employees;

java中的加号

​ 1、运算符

​ 2、拼接符

sql中的加号:只有一个功能:运算符

//两者都为数值型,做加法运算
select 100+60; 
//只要其中一方为字符型,sql尝试将字符型转换为数值型,如果转换成功则继续做加法运算
select '123'+20; 
 //字符型如果转化失败,则将字符型转化为数值0;
select  'john'+90;
//只要一方为null则结果肯定为null
select null+10;
1.1.10拼接:concat('a','b','c'...)

实现上述案例:

select
	concat(last_name,frist_name) as 姓名
from
	employees;
1.1.11练习:

​ 1、显示表departments的结构,并查询其中的全部数据

desc departments;
select * from departments;

​ 2、显示出表中employees中的全部job_id,不能重复

select distinct job_id from employees;

​ 3、显示出表employees的全部列,各列之间用逗号连接,列头显示成OUT_PUT

​ commission_pct 奖金率有可能为null导致拼接出来的字符串全部为null,因此需要使用ifnull()函数

select
	IFNULL(commission_pct,0) as 奖金率,
	commission_pct
from
	employees;
//案例答案	
select
	concat(last_name,','first_name,','job_id,','ifnull(commission_pct,0)) as OUT_PUT
from
	employees;
1.2进阶:条件查询:语法
select 
	查询列表
from
	表名
where
	筛选条件;

分类:

​ 1、按条件表达式筛选

​ 条件运算符:= > < != <> >= <=\

​ 2、按逻辑表达式筛选

​ 逻辑运算符:&& || ! (sql中)and or not

​ 3、模糊查询

​ like

​ between and

​ in

​ is null

1.2.1按条件表达式筛选

查询工资>12000的员工信息

select 
	*
from 
	employees
where 
	salary>12000;

查询部门编号不等于90号的员工名和部门编号

select
	last_name,department_id
from
	employees
where
	department_id<>90;
1.2.2按逻辑表达式筛选

工资在10000-20000之间的员工名、工资以及奖金

select
	last_name,salary,commission_pct
from
	employees
where
	salary>=10000 and salary<=20000;

查询部门编号不是在90到110之间,或者工资高于15000的员工信息

select
	*
from
	employees
where
	salary>15000 or not (department_id>=90 and department_id<=110)
1.2.3模糊查询

​ like:一般和通配符搭配使用

​ between and

​ in

​ is null

​ is not null

1、like

 %:任意多个字符包含0个字符

​ 查询员工名中包含字符a的员工信息

select
	*
from
	employees
where
	last_name like '%a%';//通配符%

_:任意单个字符

​ 查询员工名中第三个字符为e,第五个字符为a的员工名和工资

select
	last_name,salary
from
	employees
where
	last_name like '__e_a%';

​ 查询员工名中第二个字符为下划线的员工名

select
	last_name
from
	employees
where
	last_name like '_\_%';

​ (使用转义字符“\”)

​ 或者

​ 通过使用ESCAPE自己指定转移字符推荐

select
	last_name
from
	employees
where
	last_name like '_$_%' escape '$';

2、between and

	+ 提高代码的简洁性
	+ 属于全闭合区间<=  >=
	+ 临界值不要调换顺序

​ 查询员工编号在100到120之间的员工信息

select 
	*
from
	employees
where
	employee_id between 100 and 120;

3、in

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

特点:

  • 使用in提高语句简洁度
  • in列表的值类型必须一致或兼容
  • 不支持用通配符进行模糊查询

​ 查询员工的工种编号是IT_PROG、AD_VP、AD_PRES中的员工名和工种编号

select
	last_name,job_id
from
	employees
where  job_id in('IT_PROG','AD_VP','AD_PRES');

4、is null

  1. = 和 <>不能用于判断null值
  2. is null 和 is not null可以判断null值

​ 查询没有奖金的员工名和奖金率

select
	last_name,commission_pct
from
	employees
where
	commission_pct is null;

​ 查询有奖金的员工名和奖金率

select
	last_name,commission_pct
from
	employees
where
	commission_pct is not null;

​ 安全等于:<=> 可以判断null值和普通数值

​ is null:仅仅可以判断null值,可读性较高,建议使用

​ <=>:既可以判断null值,又可以判断普通的数值,可读性较低,一般比较少用

​ 查询员工号为176的员工的姓名和部门号和年薪

select
	last_name,department_id,salary*12*(1+ ifnull (commission_pct,0))as 年薪
from
	employees
where
	commission_id = 176;

2、DML语言(Data Manageation Language)增删改

3、DDL语言( Data Define Language)库和表的管理

4、TCL语言

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值