数据库(mysql)学习-day01(不定期更新)

数据库认识

MySQL

DB

数据库,存储数据的容器

DEMS

数据库管理系统,又称为数据库软件或数据库产品,用于创建或管理DB

SQL

结构化查询语言,用于和数据库通信的语言,不是某个数据库软件特有的,而是几乎所有的主流数据库软件通用的语言

MySQL的优点

1、开源、免费、成本低
2、性能高、移植性也好
3、体积小,便于安装

MySQL安装后的cmd部分命令

  • 登入
mysql -h local -P 3306 -u root -p1020
mysql -u root -p1020
  • 展示所有数据库
show databases;
  • 创建数据库
create database 数据库名字;
  • 使用数据库
use 数据库名字
  • 查看当前库内的所有表
show tables;
  • 创建表
create table Student(
    -> Sno int not null auto_increment primary key,
    -> Sname varchar(10) not null,
    -> Sex char(1) not null,
    -> Sage tinyint(100) not null,
    -> Sdept char(4) not null)comment = '学生表';
  • 删除表
drop table 表名;
  • 使用其他库
在当前库下直接使用 use 表名;

DQL语言的学习

基础查询
语法:
select 查询列表 from 表名;
类似于:System.out.Println(打印的东西)

特点:

1.查询列表可以是:表中的字段,常量值,表达式,函数

2.查询的结果是一个虚拟的表格

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

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

#3.查询表中的所有字段
#方式1:
SELECT  `employee_id`,`first_name`,`last_name`,`email`,`phone_number`,`job_id`,`salary`,`commission_pct`,`manager_id`,`department_id`,`hiredate` 
FROM
 employees ;
#方式2:
 SELECT * FROM employees
注意
使用哪个库之前,应该先:
USE 库名

''是区分字段与关键字的

选中命令,可以使用f12进行代码格式化
查询
# 查询常量值
SELECT 100;
SELECT 'john';
# 查询表达式
SELECT 100%98;
# 查询函数
SELECT VERSION();
起别名
#1.起别名
/*
便于理解
如果查询的字段有重名的情况,使用别名可以区分开来
AS可以省略
*/
#方式一
SELECT 100%98 AS 结果;
SELECT last_name AS,first_name ASFROM employees;

#方式二:
SELECT last_name 姓,first_name 名 FROM employees;

#查询slary,显示结果为 out put(如果别名有空格,建议加上双引号)
SELECT salary AS "out put" FROM employees;
去重
#去重 DISTINCT
#查询员工表中设计道德所有的部门编号
SELECT DISTINCT department_id FROM employees;

#+号的作用
/*
mysql中的+只有一个功能:运算符
select 100+90:两个操作都是数值型,则做加法运算
select '123'+90;其中一方为字符型,将字符型数值转换为数值型
			转换成功,继续加法
select 'jphn'+90;	转换失败,则将字符型数值转换为0

select null+10;	只要其中一方为null,则结果肯定为null
*/
查询员工名和姓链接成一个字段,并显示为 姓名
SELECT
	last_name+first_name AS 姓名
FROM
	employees;
	
SELECT NULL+10;
函数:连接 CONCAT()
#连接 CONCAT函数(需要连接的字段名 )
SELECT CONCAT(first_name,last_name) AS 姓名 FROM employees;
显示表结构
DESC departments;
函数:IFNULL()
#IFNULL(expr1,expr2)
SELECT 
IFNULL(commission_pct,0) AS 奖金率,commission_pct 
FROM
employees;
函数:ISNULL()
判断某字段或表达式是否为null,如果是,则返回1,否则返回0
条件查询
语法:
select 查询列表 from 表名 where 筛选条件;
           1            2            3
执行顺序 2-->3--->1
筛选条件的分类:
	1.按条件表达式筛选:
		> < = !=(<>) >= <=
	2.按逻辑表达式筛选:
		&& || !
		and:如果两个条件都为true,结果九尾true,反之则为false
		or:只要有一个条件为true,结果就为true,反之则为false
		not
	3.模糊查询:
		like
		between and
		in
		is null
注意
  • like:
    一般和通配符搭配使用
    % 任意多个字符,包含0字符
    _ 占位符

  • 转义字符

    (\),但是推荐使用(自定义转义字符) ‘_KaTeX parse error: Expected group after '_' at position 1: _̲%' ESCAPE '’;

  • between and
    1.使用 between and 可以提高代码的简洁度
    2.两端的临界值都包含
    3.两个临界值,不要调换顺序

  • in
    含义:判断某个字段的值是否属于in列表中的某一项
    特点:
    1.使用in可以提高简洁度
    2.in列表的值,必须统一或兼容(隐式转换)

  • is null

    =或<>不能判断null值
    is null

  • 安全等于<=>

    is null 仅仅可以判断null值,可读性较高
    <=> 既可以判断数值,又可以判断null,但是可读性不高

案例
#案例
#1.查询工资大于>12000的
SELECT * FROM employees WHERE salary>12000;

#2.查询部门编号不等于90的员工名和部门编号
SELECT last_name,department_id FROM employees WHERE department_id<>90;

#逻辑表达式筛选
#3查询工资在10000-20000之间的,员工名,工资,以及奖金
SELECT last_name,salary,commission_pct FROM employees WHERE salary>=10000 AND salary<=30000; 

#4查询部门编号不是90-110之间,活着工资高于15000的员工信息
SELECT * FROM employees WHERE NOT(department_id>=90 && department_id<=110) || salary>=15000;

#模糊查询
/*
like:
	1.一般和通配符搭配使用
	% 任意多个字符,包含0字符
	_ 占位符
*/
#1.like   员工名中包含字符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.转义字符(\),但是推荐使用(自定义转义字符) '_$_%' ESCAPE '$';
#查询员工名中第二个字符为_的员工名
SELECT 
	last_name
FROM
	employees
WHERE
	last_name LIKE '_$_%' ESCAPE '$';

#between and
/*
1.使用 between and 可以提高代码的简洁度
2.两端的临界值都包含
3.两个临界值,不要调换顺序
*/
#案例 查询员工表在100-200之间的员工信息
SELECT
	*
FROM
	employees
WHERE
	employee_id BETWEEN 100 AND 120;

#in
/*
含义:判断某个字段的值是否属于in列表中的某一项
特点:
	1.使用in可以提高简洁度
	2.in列表的值,必须统一或兼容(隐式转换)

*/
#1.查询员工的工种名是 AD_VP IT_PROG AD_PRES 中的一个员工名和工种编号
SELECT
	last_name,
	job_id
FROM
	employees
WHERE
	 job_id IN ('AD_VP','IT_PROG','AD_PRES');
	
# is null
/*
=或<>不能判断null值
is null

*/
# 查询没有奖金的员工名和奖金率
SELECT
	last_name,
	commission_pct
FROM
	employees
WHERE
	commission_pct IS NULL;

#安全等于<=>
/*
is null 仅仅可以判断null值,可读性较高
<=> 既可以判断数值,又可以判断null,但是可读性不高

*/
SELECT
	last_name,
	commission_pct
FROM
	employees
WHERE
	commission_pct <=>NULL;	 

#案例 查询员工号为176的员工的姓名,部门号,年薪
SELECT
	last_name,
	department_id,
	salary*12*(1+IFNULL(commission_pct,0)) AS 年薪
FROM
	employees
WHERE
	job_id = 176;
排序查询
  • 语法:

    select 查询列表
    	from[where 筛选条件]
    	order by 排序列表 [asc(升序)|desc(降序)] 
    
  • 特点:
    1.asc表示升序,desc表示降序,如果不写默认为升序
    2.order by 后面支持别名,单个字段,多个字段,表达式,函数

  • 案例

    #案例:查询员工信息,要求工资从高到低排序
     SELECT * FROM employees ORDER BY salary DESC;
     
    #案例:查询部门编号>=90的员工信息,按照时间的先后顺序排列
    SELECT * FROM employees WHERE department_id>=90 ORDER BY hiredate ASC;
    
    #案例 按照年薪的高低显示员工的信息和年薪[按照别名排序]
    SELECT *,salary*12*(1+IFNULL(commission_pct,0)) AS 年薪
    FROM employees
    ORDER BY 年薪 DESC;
    
    #案例 按照员工姓名的长度进行排序[按照函数排序]
    SELECT LENGTH(last_name) AS 字节长度,last_name,salary
    FROM employees
    ORDER BY LENGTH(last_name) DESC;
    
    #案例 查询员工信息,先按工资升序排列,再按员工编号降序[多个字段排序]
    SELECT *
    FROM employees
    ORDER BY salary ASC,employee_id DESC;
    
    常见函数介绍
    字符函数
    • length 获取字符串的字节个数
    • concat 拼接字符串
    • upper,lower 大小写转换
    • substr 截取字符串
    • instr 返回子字符串自一次出现的索引
    • trim去除前后空格
    • lpad用指定的字符实现左填充为指定长度
    • RPAD 用指定的字符实现右填充为指定长度
    • replace 替换
  • 代码

    #length 获取参数值的字节个数
    SELECT LENGTH('john');
    #utf8 一个汉字占3个字节
    SELECT LENGTH('你好hahaha');
    
    #CONCAT 拼接字符串
    SELECT CONCAT(last_name,'_',first_name) 姓名 FROM employees;
    
    #upper,lower 大小写转换
    #将姓变大写,名变小写,然后拼接
     SELECT CONCAT(UPPER(last_name),'_',LOWER(first_name)) 姓名 FROM employees;
     
     #substr 截取字符串
     #注意:sql语句中索引从1开始
     SELECT SUBSTR('你是谁的谁谁谁',2)
     
     SELECT SUBSTR('你是谁的谁谁谁',1,3)
     
     #案例,将姓名中国的首字符大写,其他字符小写,并使用_拼接
     SELECT CONCAT(UPPER(SUBSTR(last_name,1,1)),'_',LOWER(SUBSTR(last_name,2))) AS output FROM employees;
     
     #instr 返回子串第一次出现的索引,如果找不到返回0
     SELECT INSTR('你是一个好人','好人') AS output;
     
     #trim 去前后空格
     SELECT LENGTH(TRIM('    好人    ')) AS output;
     SELECT TRIM('a' FROM 'aaaaa好人aaaaa啊aaaaa') AS output;
     
     #LPAD 用指定的字符实现左填充为指定长度
     SELECT LPAD('NI',10,'*') AS OUTPUT;
     
     #RPAD 用指定的字符实现右填充为指定长度
     SELECT RPAD('NI',10,'*') AS OUTPUT;
     
     #replace 替换
     SELECT REPLACE('今天是个好天气好天气今天是','今天','周五') AS pm;
     
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值