学生在线笔记
数据库
开源 性能强劲 便于安装
数据库对象:储存,管理和使用数据的不同结构形式,包含表,视图,储存过程函数,触发器、事件
DB
数据库 ( database ): 存储数据的‘仓库’,他保存了一系类有组织的数据
发展史:人工管理阶段 → 文件系统阶 → 数据库系统阶段
概念: 数据库是长期储存在一起的互相有联系的数据集合,数据是集成的、可共享的、最小冗余的 能为多种应用服务的
DBS
数据库系统(Database System)
组成: 数据库(数据) 数据库管理系统(软件) 数据库管理员(人员) 系统平台之一(硬件平台) 系统平台之二(软件平台)
这五部分构成一个以数据库为核心的完整的运行实体
DBA
数据库管理员(Database Administrator)
由于数据库的共享性,因此对数据库的规划 设计 维护 监视 等需要有专人管理,称他们为数据库管理员
DBMS
数据库管理系统 ( Database Management System )
是一种系统软件,负责数据库中的 数据组织、数据操作、数据维护、控制以及保护和数据服务等,为提供数据服务提供相应的数据语言
数据库是通过DBMS创建和操作的容器,用于管理DB中的数据
常见的数据库管理系统:MYSQL 、Oracle 、DB2 、sqlServer
SQL:
结构化查询语句 ( structure Query Language )
专门用来与数据库通信的语言,几乎所有DBMS都支持SQL
SQL的分类
- DQL 数据查询语言(凡是带有select关键字的都是查询语句) select
- DML 数据操作语言(凡是对表当中数据进行增删改的都是DML) 增:delete 删:insert 改:update 主要操作的是表的数据
- DDL 数据定义语言(凡是带有 新建:create 删除:drop 修改:alter 的都是DDL)主要操作的是表的结构,不是表中数据
- TCL 事务控制语言 (事务提交:commit 事务回滚:rollback)
- DCL 数据控制语言 (授权:qrant 撤销权限:revoke )
一、数据库的简单操作
在使用MySQL之前确保MySQL服务是否处于开启状态
1.在DOS窗口中输入 **net start** 查看 在DOS窗口中输入 **net start MySQL** 开启服务
2.鼠标右击我的电脑图标,选择 管理 找到 服务 单击此时可以对MySQL服务进行 开启 或 关闭
查看数据库
show databases;
创建数据库并指定字符集
create database db_name
[default] character set 字集符
[default] collate 校对规则;
创建数据库之前,先查看是否有该数据库
修改数据库字集符
alter database db_name
[default] character set 字集符
[default] collate 校对规则;
常用的字集符、校对规则
字集符:gb2312 utf8
校对规则:gb2312_chinses_ci utf8_general_ci
查看所有字集符
1.show charset ;
2.show character set ;
查看数据库字符集
show create database db_name;
选择数据库
use db_name;
选中的数据库,在系统软件中要存在
删除数据库
drop database db_name;
数据库命名规则(标识符)
1.组成部分:字母A—Z 数字 0—9 下划线_ $符号
2.不能纯数字组成,数字的命名尽量不要使用,因为数字命名的不具有可读性
3.不能是MySQL的关键字
4.名字的长度不能超过128字节
5.多个单词组成的,要用下划线隔开
6.中文命名也可以,但是不常用
DOS连接MySQL数据库
mysql -u 用户名 -p 原始密码
修改数据库密码
mysqladmin -u用户 -p 原密码 password 新密码
打开注册表
DOS 输入 regedit
3306
基础查询:
插询列表可以是:表中字段、常量值、表达式、函数
查询结果是一个虚拟的表格
起别名
去重
+ 号的作用
仅作为运算符使用
数值型+数值型,则做加法运算
只要其中一方为字符型,试图将字符型数值转换成数值型,如果转换成功,则继续做加法运算如果转换失败,则将字符型数值转换成0
只要其中一方为NULL,则结果肯定为NULL
条件查询:
条件运算符:> < = != >= <=
逻辑运算符:&& || ! and or not 用于连接条件表达式
模糊查询
Like : 和通配符搭配使用,
% :任意多个字符,包含0个字符
_ :任意单个字符
escape 作为转译,’$’ $可任意取其他字符
between and:包含临界值 且 俩个临界值不能调换位置
判断某字段的值是否属于in列表中的某一项, In列表的值类型必须一致或者兼容并且不含有通配
=或!=不能用于判断NULL值 is null 或is not null可以判断NULL值
<=>:安全等于,可以判断NULL值,但不建议使用,理解不清是等于还是不等于
排序查询
asc代表的是升序,可以省略
desc代表的是降序
order by子句可以支持 单个字段、别名、表达式、函数、多个字段
order by子句在查询语句的最后面,除了limit子句
常见函数
概念:类似于java的方法,将一组逻辑语句封装在方法体中,对外暴露方法名
好处:隐藏了实现细节 ,提高代码的重用性
调用:select 函数名(实参列表) 【from 表】;
分类:
1、单行函数
concat、length、ifnull等
2、分组函数
功能:做统计使用,又称为统计函数、聚合函数、组函数
字符函数
length 获取参数值的字节个数
concat 拼接字符串
upper 变大写
select upper(字段名) from 表;
lower 变小写
select lower(字段名) from 表;
substring(被截取得字符串,起始下标,截取的长度)
注:起始下标从1开始,没有0
截取从指定索引处后面所有字符
截取从指定索引处指定字符长度的字符
instr 返回子串第一次出现的索引,如果找不到返回0
trim 去除子串中前后的空格或字符
lpad 用指定的字符实现左填充指定长度
rpad 用指定的字符实现右填充指定长度
replace 替换
数学函数
round 四舍五入
round(数值,保留数值整数位数)
ceil 向上取整,返回>=该参数的最小整数
floor 向下取整,返回<=该参数的最大整数
truncate 截断
mod取余
mod(a,b) : a-a/b*b
日期函数
now 返回当前系统日期+时间
select now();
curdate 返回当前系统日期,不包含时间
select curdate();
curtime 返回当前时间,不包含日期
select curtime();
可以获取指定的部分,年、月、日、小时、分钟、秒
分组函数
多行处理函数,特点:输出一行最终输出一行
五个:
sum 和值
avg 平均值
count 计数
max 最大值
min 最小值
注意:
分组函数在使用时必须先进行分组,才能用。
如果你没有对数据进行分组,整张表默认为一组
分组函数在使用时注意事项:
- 分组函数会自动忽略NULL,不用提前处理NULL。
- 分组函数中 count(*) 与 count(具体字段) 有什么区别
count(具体字段) : 表示统计该字段下所有不为NULL的元素的总数
count( * ) : 统计表当中的总行数 (只要有一行数据 count则++)
因为每一行数据不可能都为NULL,一行数据中有一列不为NULL,则这行数据就是有效的 - 分组函数不能直接使用在where子句中
- 所有分组函数可以组合起来一起使用
select min(具体字段),max(具体字段),count(具体字段),avg(具体字段) from 表
分组查询
对数据进行分组,然后对每一组数据进行操作
select
...
from
...
where
...
group by
...
order by
...
执行顺序: from--> where --> group by --> select --> order by