MySQL学习笔记1

MySQL学习笔记1

Mysql应用多
数组,集合都可以保存数据,但是都是宝尊在内存,断电数据丢失,文件可以大量存储,查询不易。

数据库优点
实现数据持久化
使用完整的管理系统统一管理,易于查询

DB:数据库,保存一些了有组织的数据

DBMS:数据库管理系统,数据库是通过DBMS 创建和操作的容器

SQL:结构化查询语言,专门用来和数据库通信。

数据库特点
1.现将数据放到表中,表再放到库中
2.一个数据看可以有多个表,唯一性
3.表具有一些特性,类似于类
4.表由列组成,我们也成为字段,每个表都是由一个或朵儿列组成,每一列类似于java中的属性
5.表数据类似于对象

DBMS分为两类:
1.基于共享文件系统
2.基于客户机-服务器(c/S)

myini这个文件可以修改端口号,字符集

mysql启动,停止命令
net start mysql0725
net stop mysql0725

登录
mysql -h localhost -P3306 -u root -p密码
连接本机 mysql -u root-p密码
退出
exit ctrl +c

mysql常见命令

show databases;展示全部数据库名
进某个库
use 库名
show tables;
或者 show tables from 数据库名
确定自己所在库
select database()
创建表
mysql> create table stuinfo(
-> id int,
-> name varchar(20));

查看表结构
desc 表名

查看是否有数据
mysql> select* from stuinfo ;
插入
insert into stuinfo(id,name) values(2,‘rose’);
数据更新
update stuinfo set ‘lilei’ where id=1;
删除
delete from stuinfo where name=‘lilei’;

Mysql语法规范
1.不区分大小写,但建议关键字大写,表名,列名小写
2.每条命令分号结尾
3.每条命令很长根据需要进行缩进,或换行
4.注释
单行注释 #注释文字
单行注释:-- 注释文字
多行注释:/注释文字*/
SQL语言
DQL,DML,DDL,TCL语言

着重号 `用来区分关键字和字段

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

类似于 SYSTEM.OUT.PRINTLN(打印东西);
1.查询列表可以是:表中的字段、常量值、表达式、函数
2.插叙结果可以是一个虚拟的表格
*/
USE employees;

#1.查询`first_name`表中的单个字段

#select last_name from employees;

#2.查询表中多个字段
#select last_name ,salary,email from employees;

#3.查询表中所有字段
SELECT 
  `first_name``last_name``email` 
FROM
  employees 
  
SELECT * FROM employees;


#4查询常量值
SELECT 100;
SELECT 'john';

#5.查询常量值
SELECT 100%98;

#6.查询函数

SELECT VERSION();


#7起别名
/*便于理解
如果查询字段有陈明的情况,使用别名可以区分开来
*/

#方式1
SELECT 100%98 AS 结果 ;
SELECT last_name AS 姓, first_name ASFROM employees;

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

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

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


#9.加号作用
/*java中的+号
1.运算符:两个操作数为数值型
2.连接符:只要一个操作数为字符串

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

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

select null+10 只要其中一方为null ,则结果肯定为null
*/
#案例:查询员工名和姓连接成一个字段,并显示为姓名
SELECT CONCAT('a','b','c');
SELECT 
  CONCAT(last_name,' ', first_name) AS 姓名 
FROM
  employees; 
#进阶2 :条件查询
/*

语法:
	select
		查询列表
	from
		表名
	where
		筛选条件;
		
分类:
	一、按条件表达式筛选
	条件运算符:> < = <>(不等) >= <=
	二、按逻辑运算表达式筛选
	逻辑运算符
	and or not
	三、模糊查询
		like
		between and
		in
		is null
*/

#一、按条件表达式筛选
SELECT * FROM employees WHERE salary >12000;
#二、查询部门编号不等于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 department_id < 90 
  OR department_id > 110 
  OR salary > 15000 #模糊查询
  /*like
特点:一般和通配符搭配使用 
	通配符:
	%任意多个字符,包含0个字符
	_任意单个字符
  
 between and
 in
 is null is not null
 */
  #1.like
  #案例1:查询员工名中包含字符a的员工信息
  SELECT 
    * 
  FROM
    employees 
  WHERE last_name LIKE '%a%' ;
  
  
#案例2:查询员工名中第三个字符为e,第五个字符为a的员工名和工作
SELECT 
  last_name,
  salary 
FROM
  employees 
WHERE last_name LIKE '__n_l%' ;


#案例3:查询员工名中第二个字符为_的员工名
SELECT 
  last_name 
FROM
  employees 
WHERE last_name LIKE '_$_%' ESCAPE '$' ; #加入escape 转义字符,
该字符可为任意符号
#进阶2 :条件查询
/*

语法:
	select
		查询列表
	from
		表名
	where
		筛选条件;
		
分类:
	一、按条件表达式筛选
	条件运算符:> < = <>(不等) >= <=
	二、按逻辑运算表达式筛选
	逻辑运算符
	and or not
	三、模糊查询
		like
		between and
		in
		is null
*/
#一、按条件表达式筛选
SELECT 
  * 
FROM
  employees 
WHERE salary > 12000 ;

#二、查询部门编号不等于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 department_id < 90 
  OR department_id > 110 
  OR salary > 15000 #模糊查询
  /*like
特点:一般和通配符搭配使用 
	通配符:
	%任意多个字符,包含0个字符
	_任意单个字符
  
 between and
 in
 is null is not null
 */
  #1.like
  #案例1:查询员工名中包含字符a的员工信息
  SELECT 
    * 
  FROM
    employees 
  WHERE last_name LIKE '%a%' ;

#案例2:查询员工名中第三个字符为e,第五个字符为a的员工名和工作
SELECT 
  last_name,
  salary 
FROM
  employees 
WHERE last_name LIKE '__n_l%' ;

#案例3:查询员工名中第二个字符为_的员工名
SELECT 
  last_name 
FROM
  employees 
WHERE last_name LIKE '_$_%' ESCAPE '$' ;

#加入escape 转义字符,该字符可为任意符号
#2.between and
/*
1.使用between and可以提高语句的简介度
2.包含临界值
3.两个临界值不能调换顺序
*/
#案例1:查询员工编号在100到120之间的信息
SELECT 
  * 
FROM
  employees 
WHERE employee_id BETWEEN 100 
  AND 120 ;

#3.in
/*
含义:判断某字段的值是否属于in列表中的某一项
特点:
	1.使用in提高语句简介度
	2.in列表的值类型必须一致或兼容
	3.不支持通配符
*/
#案例1:查询员工的工种编号是IT_PROG AD_VP AD_PRE中的一个员工名和工种编号
SELECT 
  last_name,
  job_id 
FROM
  employees 
WHERE job_id IN ('IT_PROT', 'AD_VP', 'AD_PRE') ;

#4、is null
/*
=<>不能判断空值
is null

*/
#案例1:查询没有奖金的员工名和奖金率
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 ;
  
  
  
#安全等于<=>
SELECT 
  last_name,
  commission_pct 
FROM
  employees 
WHERE commission_pct <=> NULL ;


#案例2:查询工资为12000
SELECT 
  last_name,
  salary 
FROM
  employees 
WHERE salary <=> 12000 ;


#is null pk <=>
IS NULL:仅仅可以判断NULL值,可读性较高
#进阶3 :排序查询
/*
selelct * from employees;

语法:
	select 查询列表
	from表
	where 筛选条件
	order by 排序列表【asc升序】【desc降序】
特点:
	1.asc升序 desc降序,不写默认升序
	2.order by 子句中可以支持单个字段、多个字段、表达式、函数、别名
	3.order by语句一般是放在查询语句的最后面,limit子句除外
*/
#案例:查询员工信息,要求工资从高到低
SELECT * FROM employees ORDER BY salary DESC;
SELECT * FROM employees ORDER BY salary ASC;

#案例2:查询部门编号>=90,按照入职时间的先后,进行排序

SELECT * FROM employees
WHERE department_id >=90
ORDER BY hiredate ASC;

#案例3:按年薪的高低显示员工的信息和年薪【按表达式排序】
SELECT * FROM employees
ORDER BY salary*12*(1+IFNULL(commission_pct,0)) DESC;

#案例4:按年薪的高低显示员工的信息和年薪【别名排序】
SELECT *, salary*12*(1+IFNULL(commission_pct,0)) AS 年薪
FROM employees
ORDER BY 年薪 DESC;


#案例5:按姓名的长度显示员工的姓名和工资【按函数排序】
SELECT*, LENGTH(last_name) AS 长度
FROM employees
ORDER BY 长度 DESC;



#案例6:查询员工信息,要求先按工资排序升序,再按员工编号排序降序【按多个字段排序】
SELECT 
  * 
FROM
  employees 
ORDER BY salary ASC,
  employee_id DESC ;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值