MySQL
一、数据库的好处
可以持久话数据到本地
结构化查询(SQL)
二、数据库的常见概念 *
DB:数据库 存储有组织的数据的容器
DBMS:数据库管理系统,又称为数据库软件或者数据库产品(eg. MySQL),用于创建和管理数据库
SQL:结构化查询语言:与数据库通信,实现数据库操作,几乎所有的主流的数据库软件通用的语言
三、数据库存储的特点
数据存到表中,表再放到库中
一个库中可以有多张表,每张表具有唯一的表名来标识自己
表中有一个或多个列,列又称为“字段”(相当于Java类中的属性)
表中的每一行数据,相当于Java中的“对象”
四、MySQL的安装
属于c/s架构的软件,一般来讲,安装的是服务端
五、MySQL的启动、停止、登陆和退出
net start 服务名
net stop 服务名
mysql [-h 主机名 -P 端口号] -u 用户名 -p密码
exit
六、DQL(数据查询)语言
#进阶1:基础查询
/*
语法:select 查询列表 from 表名;(MySql 不区分大小写)
特点:
1、查询列表为:表中的字段、常量值、表达式和函数
2、查询结果是一个虚拟的表格
*/
#启动制定的库(安全)
USE myemployees;
#查询表中的单个字段
SELECT last_name FROM employees;
#查询表中的多个字段
SELECT last_name, salary, email FROM employees;
#查询表中的所有字段, *代表所有的字段(字段的顺序与原始表相同)
SELECT * FROM employees;
#查询常量
SELECT 100;
SELECT 'a';
#查询表达式
select 100%98;
#查询函数
select version();
#更该字段的名称(1、便于理解;2、使用别名能区分重名的字段)
#方法一:使用as
select 100%98 as 结果;
select last_name as 姓, first_name as 名 from employees;
#方法二:使用空格
select 100%98 结果;
#特例:查询salary,显示结果为out put(这里有空格)
select salary as "out put" from employees;
#去重 DISTINCT
#select department_id from employees;
select distinct department_id from employees;
# +号的作用
/*
mysql中的+号仅表示运算符
eg. select 100 + 9;
select 'john' + 90; #试图将字符(串)123转换为数值。
如果成功,则将字符型转换为数值,继续做加法运算;
如果不成功,则将字符型转换为0;
select null + 90; null 加任何值均为null
*/
#案例:连接姓和名,组合成姓名,使用函数 CONCAT()
select concat(last_name, first_name) as 姓名
from employees;
#显示表的结构
desc employees;
#进阶2:条件查询
/*
语法:
select
查询列表 #查询
from
表名 #第一步
where
筛选条件 #筛选
分类:
1、按条件表达式筛选
条件运算符:,,=,,=,=
2、按照逻辑表达式筛选
逻辑运算符:and or not( || !)
作用:用于连接条件表达式
3、模糊查询:like、between and、in、is null
*/
#按条件表达式筛选
#案例1、查询工资12000的员工信息
SELECT * FROM employees WHERE salary 12000;
#案例1、查询部门编号不等于90的员工名和部门编号
SELECT last_name, department_id
FROM employees
WHERE department_id 90;
#按照逻辑表达式筛选
#案例1、查询工资在10000-20000的员工信息
SELECT * FROM employees WHERE salary = 10000 AND salary = 20000;
SELECT * FROM employees
WHERE NOT(department_id = 90 AND department_id = 110) OR salary 15000;
#进阶3:模糊查询
/*
like、between and、in、is null、is not null
特点:1、一般和通配符搭配使用
通配符:
% 任意多个字符(包含0个字符)
_ 任意单个字符
\ 表示转义字符; ESCAPE '*' 指定一个字符为转义字符
*/
#案例1、查询员工名中包含字符a的员工信息,%表示通配符
SELECT * FROM employees WHERE first_name LIKE '%a%' OR last_name LIKE '%a%';
#案例2、查询员工名中第三个字符为e,第五个字符为a的员工名和工资
SELECT last_name, salary FROM employees
WHERE last_name LIKE '__n_l%';
#案例3、查询员工名中第2个字符为下划线的员工名和工资(转义字符\)
SELECT last_name, salary FROM employees
#where last_name like '_\_%';
WHERE last_name LIKE '_*_%' ESCAPE '*';
/*
between and
1、可以提高语句的简洁度;
2、左右都是闭区间
3、两个临界值不能颠倒
*/
#案例4、查询员工编号在100到200之间的员工信息
SELECT * FROM employees WHERE employee_id BETWEEN 100 AND 200;
/* in
含义:用于判断某字段的值是否属于列表中的某一项
特点:1、使用in做筛选,能提高语句的简洁度
2、in列表中的值类型必须统一,或者兼容
3、IN等价于是否等于,列表中的每一项不支持通配符(通配符表示某一范围)
*/
#案例:查询员工的工种编号是 IT_PROG、AD_VP、AD_PRES中的一个员工名和工种编号
SELECT last_name, job_id FROM employees
WHERE job_id IN ('IT_PROG', 'AD_VP', 'AD_PRES');
/*is null
1、 =或者 NULL 这种写法是不对的
2、is null 或者 is not null 可以判断null
*/
#案例:查询奖金率不为null的员工名和奖金率
SELECT
last_name,
commission_pct
FROM
employees
WHERE
commission_pct IS NOT NULL;
/*
安全等于 =
既可以判断null值,又可以判断普通的数值
可读性较is null低
*/
SELECT
last_name,
salary
FROM
employees
#WHERE commission_pct = NULL;
WHERE salary = 12000;
#查询员工号为176的员工的姓名、部门号和年薪
SELECT
last_name,
department_id,
salary*12*(1+IFNULL(commission_pct,0)) AS 年薪
FROM
employees
WHERE department_id = 100;
#案例
SELECT *
FROM employees
WHERE job_id 'IT' OR salary = 12000;
#查询表的结构信息
DESC departments;
#查询部门departments中涉及到哪些位置编号
SELECT DISTINCT location_id FROM departments;
#面试题:语句1和语句2的结果是否相同
#语句1
SELECT * FROM employees;
#语句2
SELECT * FROM employees WHERE last_name LIKE '%';
#答案:不相同,因为通配符 % 不能匹配null的情况
注意:比较一下 is null 和=
普通类型的数值 null值 可读性
is null no yes yes
= yes yes no
MySQL 相关文章
SQL注入--双注入的学习
0x1 需要用到的MySQL函数 count():用来统计表中或数组中记录的一个函数 count(*)某表中所有的列 floor():返回 小于等于 该值的最大整数【向下取整】 rand(): 产生随机数 0x2原理分析 接下来我们再分析其报错的形成 原因: 先谈group by 函数: 在表中再插入
dbcp、c3p0、druid三种数据库连接池的用法
dbcp、c3p0、druid三种数据库连接池的用法 dbcp 1.在maven项目中,pom.xml文件中添加dbcp依赖,版本可在maven官网查找最新版本。 dependency groupIdcommons-dbcp/groupId artifactIdcommons-dbcp/artifactId version1.4/version /dependency 2.在resources
4.Spring的数据库开发
JDBC是Spring数据集成/访问的重要模块 4.1Spring JDBC Spring 的 JDBC模块负责数据库资源管理和错误处理,简化开发人员对数据库的操作。 4.1.1Spring JdbcTemplate 的解析 JdbcTemplate类是Spring JdBC的核心类,该类继承抽象类JdbcAccessor,实现JdbcOperat
Oracle Day02
表级修改 DDL DDL 所有的对数据库对象的操作语句 create database , alter database , create table ,alter table drop table,create index等 ORACLE 数据类型 类型 说明 number 数字类型 integer 整型 在程序中用 char 定长字符型 varchar 变长长字符型,最
SQL Server 查询 数据库 表格 大小
注意:生产环境请谨慎操作,建议先在测试环境进行测试验证。 数据库 ----查询当前数据库大小 exec sp_spaceused ----批量查询所有数据库大小 with fsas( select database_id, type, size * 8.0 / 1024 size from sys.master_files)select name, (select cast
数据库备份
备份必加参数: -R:在备份时,同时备份存储过程和函数,相当于linux的shell脚本 -E:在备份时,同时备份event,相当于linux里的定时备份命令crontab --triggers:在备份时同时备份触发器, --master-data=2:记录备份开始时的position号,可作为将来做日志截
EntityFrameworkCore教程:生成数据库表
使用程序包管理器控制台迁移的方式分为三个步骤。 1、安装Microsoft.EntityFrameworkCore.Tools包 由于迁移需要使用到Microsoft.EntityFrameworkCore.Tools包,所以先要在EFCore.Data类库项目上安装这个包,直接在NuGet里面安装即可。 这里是把EFCore安装在
mysql备份与保存
脚本需求: 每天备份mysql数据库,保留7天的脚本。 存放在/opt/dbbak目录中。 脚本名称为database_xxxx-xx-xx.sql 脚本内容: 12345 #!/bin/bash export NOW= "$(date +" %Y-%m-%d ")" export DATA_DIR=/opt/dbbak /usr/ local /ywgh/mysql/bin/mysqldump --
mysql学习笔记:五.DDL常用操作
目录 DDL常用操作 数据库的操作 创建库 删除库 表操作 创建表 约束说明 删除表 修改表名 表加备注 复制表 只复制表结构 复制表结构和数据 列的管理 添加列 修改列 删除列 DDL常用操作 DDL(Data Define Languge):数据定义语言 create、drop、alter 语句 ,
mysql 查询当天、本周,本月,上一个月的数据......
今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天 SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) - TO_DAYS( 时间字段名) = 1 近七天 SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) = date(时间字段名) 近30天 SE