0、数据库基础介绍
MySQL常用数据类型
数据库管理系统 DBMS(data base management system ),包括Oracle,mysql,SQLserver,MongoDB,db2等
数据库/仓库 DB
SQL 结构化查询语言
Mysql 一种数据库软件,使用sql语言管理数据
数据库中事务的四大特性(ACID):原子性(Atomicity);一致性(Consistency);隔离性(Isolation);⑷ 持久性(Durability)
SQL语句分类:
1、DQL:数据查询语句,select (Data Query Language)
2、DML:数据操作语句,insert/delete/update (Data Manipulation Language)
3、DDL:数据库定义语句,create/drop/alter (Data Denifition Language)
4、TCL:事务控制语言,commit/rollback (Trasactional Control Language)
5、DCL: 数据控制语言,grant ,revoke (Data Control Language)
创建数据库:
create database bjpowernode;
导入数据库脚本
数据库脚本:以.sql后缀结尾的文件
导入数据库脚本:
1. 选定数据库
2. source命令
mysql> use bjpowernode;
Database changed
mysql> source C:\Users\copywang\Desktop\bjpowernode.sql
数据库表的介绍:
mysql>show tables;
mysql>desc dept;
1、查询字段
select ename,sal,job from emp;
select * from emp; 不建议使用,效率比前一个方法要低,因为要把*转成所有具体字段
2、进行数学运算,并对字段重命名
select ename,sal*12 as yearsal from emp;
3、条件查询
运算符
说明
=
等于
<>或!=
不等于
<
小于
<=
小于等于
>
大于
>=
大于等于
between … and ….
两个值之间,等同于 >= and <=
is null
为null(is not null 不为空)
and
并且
or
或者
in
包含,相当于多个or(not in不在这个范围中)
not
not可以取非,主要用在is 或in中
like
like称为模糊查询,支持%或下划线匹配
%匹配任意个字符
下划线,一个下划线只匹配一个字符
select ename,sal from emp where sal=5000;
MySQL支持自动类型转换,比如(但是其他数据库不支持,所以不要这么写):
select ename,sal from emp where sal='5000';
select job,ename from emp where job='MANAGER';
这里使用单引号是SQL的标准写法,MySQL也支持使用双引号,开发中只使用单引号
select ename,sal from emp where sal!=5000;
select job,ename from emp where job<>'MANAGER';
select ename,sal from empwhere sal>=1600;
select ename,sal from empwhere sal between 1600 and 3000;
select ename,sal from empwhere sal in (800,1600);
select ename,sal from empwhere job not in (‘MANAGER’,SALESMAN’);
select ename,comm fromemp where comm is null;
null不是数字,是空值,不能进行数学计算,因此不能用=号
select ename from empwhere ename like ‘%s%’; 包含s
select ename from empwhere ename like ‘s%’; s开头
select ename from empwhere ename like ‘_d%’; 第二位为d
select ename from empwhere ename like ‘%n_’; 倒数第二位为n
4、排序
select ename,sal from emporder by sal; 默认asc升序
select ename,sal from emporder by sal desc; 降序
select deptno,ename,salfrom emp order by deptno,sal desc; 多字段排序:先按照deptno升序排列,deptno相同的记录按照sal降序排列
select job,ename,sal fromemp where job=’MANAGER’ order by 3 asc; 通过字段下标排序
5、数据处理函数
Lower
转换小写
upper
转换大写
substr
取子串(substr(被截取的字符串,起始下标,截取的长度))
length
取长度
trim
去空格
str_to_date
将字符串转换成日期
date_format
格式化日期
format
设置千分位
round
四舍五入
rand()
生成随机数
Ifnull
可以将null转换成一个具体值
注意:数据处理函数有些是Mysql特有的,可能在其他数据库不起作用
select lower(ename) as lowername from emp; lower转小写
select upper(ename) as uppername from emp; upper转大写
select substr(ename,1,1)as firstchar from emp; 截取首字母
select substr(ename,3,3)as ename from emp; 取3,4,5个字符
select length(ename) as enameLength from emp; 求字符长度
select * from emp where ename=trim(‘ king ‘); 去掉前后空格(MySQL会自动去掉后面的空格)
select round(123.56); 输出是124
select round(123.56,0); 输出是124
select round(123.56,1); 输出是123.6
select round(123.56,-1); 输出是120
select rand(); 随机数:输出【0,1】区间的随机数
select round(rand()*122); 生成【0,122】区间的任意整数(round用于取整)
case_when_then_else_end函数
示例:匹配工作岗位,为MANAGER时,薪水上调10%,为SALESMAN的时候,薪水上调50%
selectename,job,sal,
(casejobwhen 'manager' then sal*1.1
when 'salesman' then sal*1.5
elsesalend) asnewsalfrom emp;
注意:经测试,空格多了有时会报错
ifnull函数
select ename,(sal+comm)*12 as yearsal from emp;
select ename,(sal+ifnull(comm,0))*12 as yearsal from emp;
MySQL日期格式:
%Y:代表4位的年份 %y:代表2位的年份