1 数据库
数据库用来存储数据 和 管理数据,英文叫database
分类: 关系型和非关系型
关系型数据库存: 数据之间的关系很紧密,例如:师生关系,部门员工
非关系型数据库存NoSql: 数据之间的关系很松散, 例如:把电脑里的所有的资源存入数据库
2 安装MySQL数据库
1. 安装路径: 不要包含中文或者特殊符号
2. 字符集: 默认是latin1,不认识中文,一定会发生中文乱码现象.要改成utf-8
3. 端口号: 每个软件都有唯一的端口号,其中,MySQL默认是3306
4. 开机服务: MySQL/Mariadb ,要保证访问数据库时服务是开启状态
5. 设置密码: root,也可以自定义
6. 安装 服务器端: 真正存数据的地方
7. 安装 客户端: 连接服务器 , 操作服务器中的数据 , , 新增 删除 修改 查询 / CRUD ,
相对来说就是对数据的查询动作多
8. 客户端有两种: DOS窗口…可视化的小工具sqlyog
3 SQL语言
用来操作数据库的语言,全称叫结构化查询语言.
分类:
DML: 数据操作语言,指对数据的CRUD
DDL: 数据定义语言, 指对数据库的定义,表的定义
DCL: 数据库的控制语言, 指对数据的权限控制
DQL: 数据查询语言, 指定的SQL语句中,大量的会编写查询语句
结构: 数据库 – 表 — 数据 (行和列组成)
4 常见命令操作
5 数据库里的数据类型
整数:int ,
小数: double ,
精确的小数: decimal(m,n) numeric(m,n)其中m是总位数,n是小数位数 ,
字符串: char(固定长度,查询高效) varchar(长度可变,省内存)
日期:date(年月日) time(时分秒) datetime(年月日时分秒) timestamp(时间戳,存毫秒数)
图片,音频,视频: 数据库里只会存他们的存放路径(d:/abc/1.jpg)
6 字段约束
用来约束字段的值, 通常是在创建表时就已经确定了哪个字段用哪种约束
6.1 唯一约束
字段的值必须唯一,不能重复,使用unique
6.2 非空约束
约束了字段的值不能为null
6.3 主键约束
每个表都应该设计一个字段是主键,从此,这个字段的值,必须唯一且非空.
主键自增策略: 不需要程序员自己数主键的值,交给数据库来管理主键的值,数据库会从1开始自增
7 MySQL的基础函数
为了方便的操作数据,MySQL提供了很多函数,
常见的: lower upper length concat substr replace…
测试:
#1.查询语句的多种写法
#查询 所有列
SELECT * FROM emp;
#查询 ename列 的值
SELECT ename FROM emp;
#查询 字段名 别名
SELECT ename abc FROM emp;#给字段设置别名
# 字段名 别名 字段名 别名
SELECT ename a , job b FROM emp;
#2.基本函数:
#upper(m)全转大写,m是字段名称或者字符串
SELECT ename,UPPER('abc'),UPPER(ename) FROM emp;
#lower(m)全转小写,m是字段名称或者字符串
SELECT ename,LOWER('XYZ'),LOWER(ename) FROM emp;
#length(字段名称)求长度,一个字母或数字长度为1,一个汉字为3
SELECT ename,LENGTH(ename),LENGTH(job) FROM emp;#求ename的长度
#substr(a,b,c)截取,a是字段名称b是从第几个开始c是要截取的长度
SELECT ename,SUBSTR(ename,2) FROM emp;
SELECT ename,SUBSTR(ename,2,1) FROM emp;
#concat(a,b,c)拼接,a是字段名称b和c是要拼接的数据
SELECT ename,CONCAT(ename,123,'hello') FROM emp;
#replace(a,b,c)替换,a是字段名称b是要把谁替换成c
SELECT ename,REPLACE(ename,'a','b') FROM emp;
#ifnull(a,b)如果是null就替换,a是字段名称b是要把null替换成b
SELECT comm,IFNULL(comm,100) FROM emp;
#小数处理的:
#round(a)四舍五入,把a的值取整
SELECT comm,ROUND(comm) FROM emp;
#round(a,b)四舍五入,把a的值保留b位小数
SELECT comm,ROUND(comm,2) FROM emp;
#ceil直接向上取整 & floor直接向下取整
SELECT comm,CEIL(comm),FLOOR(comm) FROM emp;
#日期处理的:
#now & year & month & day & hour & minute & second
SELECT NOW(),YEAR('2021-11-25'),YEAR( NOW() )
,MONTH( NOW() ),DAY( NOW() )
,HOUR( NOW() ),MINUTE( NOW() ),SECOND( NOW() )
#转义字符: '
SELECT 'xi\'an'