一、数据库
1.概念
数据存储的仓库,用来存储和管理数据
2.常见数据库
- 关系型数据库:具有行和列的这种二维表结构的数据库
Oracle、DB2大型的关系型数据库
MySQL、SQL Server中小型关系型数据库
Sqllite微型关系型数据库 - 非关系型数据库NoSQL:用键值关系来存储数据
二、Mysql数据库
1.安装
2.卸载
- 可以使用第三方的卸载软件来卸载
- 在控制面板里面常规卸载
1.停止后台服务,电脑--右键--管理--服务--mysql--右键停止掉
2.卸载
3.清除残留文件C:\ProgramData\MySQL把这个文件夹删除
三、SQL结构化查询语言
1.概念
通过sql语言可以操作所有的关系型数据库。每种数据库之间会存在差异,称为’‘方言’’。
2.sql分类:
DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等
DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(增、删、改)
DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别
DQL(Data Query Language):数据查询语言,用来查询记录(数据)
(一)DDL:操作数据库和表
1.操作数据库
创建:create database 数据库名称;
删除:drop database 数据库名称;
修改:alter database 数据库名称character set要修改的字符集名称
查询:show databases;——查询所有数据库的名称
show create database 数据库名称;——查询创建数据库语句
2.操作表
- 创建
1.列的数据类型:
int 整型
double浮点型,例如double(5,2)表示最多5位,其中必须有2位小数
char固定长度字符串类型
varchar可变长度字符串类型
text字符串类型;存大格式的文本,比如存个小说
blob字节类型;存字节类型的数据,比如电影字节,图片字节
date日期类型,格式为yyyy-MM-dd
time时间类型,格式为hh:mm:ss
datetime日期时间类型,yyyy-MM-ss hh:mm:ss
timestamp时间戳类型,如果该类型的字段不给赋值,则默认当前时间
2.语法:
create table 表名(
列名1 类型1,
列名2 类型2,
........
列名n 类型n
)
create table student(
sname varchar(20),
age int,
gender varchar(6)
);
- 删除drop table 表名;
- 修改
1.修改之添加列
alter table student add (classname varchar(100));
2.修改之修改列类型
alter table student modify gender char(2);
3.修改之修改列名
alter table student change gender sex char(2);
4.修改之删除列
alter table student drop classname;
5.修改之修改表名称
alter table student rename to stu;
- 查询
show tables;——查询该数据库下所有表名称
desc 表名;——查询表结构
注意:操作表之前,应该先选择一个数据库使用
use 数据库名称;
(二)DML:操作表中的数据
- 增
语法:insert into 表名(列名1,列名2,...)values(值1,值2);
注意:如果表的所有列都添加值,则列名可以省略
- 删
语法:delete from 表名 [where 条件];
truncate table 表名;——先删除表,在创建一张空表
truncate清空表和delete from的区别:
delete属于DML语句,truncate属于DDL语句
delete逐条删除,truncate干掉表,重新创建一张空表
- 改
语法:update 表名 set 列名1=值1,列名2=值2,...[where 条件];
(三)DQL:查询表中的数据
语法:
SELECT 要查询的列名称
FROM 要查询的表名称
WHERE 行条件
GROUP BY 对结果进行分组
HAVING 分组后的行条件
ORDER BY 对结果进行分组
LIMIT 结果限定
查询表中所有的信息——SELECT * FROM 表名;
查询表中个别字段——SELECT 列名1,列名2 FROM 表名;
- 条件查询 where 子句
= != <>不等于 < <= > >=
BETWEEN...AND 在什么范围之间
IN(set)
IS NULL 为空
IS NOT NULL 不为空(null值比较特殊,要判断是不是null值 用=或!=判别不出来)
AND 并且
OR 或者
NOT 非
- 模糊查询 like
通配符:
_:匹配单个任意字符
%:匹配多个任意字符
- 字段控制
1.修改字段的别名 AS(可以省略)
给字段起别名select sname AS 姓名,sage 年龄 from student;
给运算字段起别名select sname AS 姓名,(工资+奖金)AS 总收入 from student;
给表起别名:给每一张表起别名简化书写。select stu.sname,stu.sage from student AS stu;
2.字段运算
null参与的运算,结果都为null
ifnull来处理null值 ifnull(0,参数)
ifnull(参数1,参数2)如果参数1等于参数2,返回null;否则返回参数1.
3.去除重复记录 distinct
- 排序order by
ASC升序(默认值,默认升序排序)
DESC降序
- 聚合函数
聚合函数是用来做纵向运算的函数。
COUNT():统计指定列不为NULL的记录行数;统计个数的;
MAX():计算指定列的最大值。如果指定列是字符串类型,那么使用字符串排序运算;
MIN():计算指定列的最小值。如果指定列是字符串类型,那么使用字符串排序运算;
SUM():计算指定列的数值和。如果指定列类型不是数值类型,那么计算结果为0;
AVG():计算指定列的平均值。如果指定列类型不是数值类型,那么计算结果为0;
- 分组查询group by
一般配合聚合函数使用,查出的数据才有意义
查询的字段:1.分组字段本身 2.聚合函数
分组之前,可以通过where做条件筛选。不满足条件的,不参与分组。
having对分组之后的结果,进行再次筛选
7.分页查询limit
limit 0,5开始的记录索引,每一页显示的条数。 索引从0开始
开始的记录索引=(页码-1)*每一页显示的条数
分页方言oracle:rownum;
sqlserver:top;