1.数据库介绍
纯学习记录
1.1数据库概念
- 长期存储:持久存储
- 有结构 类型:数据库不仅可以存放数据,而且存放的数据还是有类型的 关系:存储数据之间的关系
- 大量
- 共享:多个应用程序可以通过数据库实现数据共享
1.2 关系型和非关系型数据库
- 关系型数据库: 采用关系模型来组织数据存储,以行和列的形式存储数据并记录数据与数据之间的关系--将数据存储在表格中,可以通过建立表格之间的关联来维护数据与数据之间的关系
- 非关系型:采用键值对的模型存储数据,只完成数据的记录,不会记录数据与数据之间的关系
1.3 常见的数据库
- 关系型数据库:mysql、Oracle、PostgreSQL、SQL server、Access、达梦数据库
- 非关系型数据库: 面向检索:HaBase、BigTable; 面向高并发:Redis、 面向海量数据访问的文档存储:MongoDB
1.4 数据库术语
数据库: 存储数据的集合 数据: 实际上指描述事物的符号记录 数据库管理系统(DBMS):通常以系统服务的形式存在,是位于用户与操作系统的之间的一层数据管理软件 数据库系统管理员(DBA): 负责数据库创建、使用以及维护的专门人员 数据库系统(DBS):整个单元
Mysql下载安装
--------省略----------
MySql的逻辑结构
SQL
CRUD指令
- 分类:
- DDL: data definition language - 用于完成对数据对象的创建、删除、修改
- DML: data Manipulation language - 用于完成对数据表中的数据添加、修改删除操作
- DQL: data Query - 查询
- DCL: data Control Language - 事务管理等控制性操作
- 基本语法
- DDL
查询
show database;
创建
create database db_test;
创建表
CREATE TABLE students(
num CHAR(8) NOT NULL UNIQUE,
stu_name VARCHAR(20) not NULL,
gender char(2) NOT NULL,
age int not NULL,
tel char(11) not NULL UNIQUE
);
删除表
drop table tablename
修改表字符集
查看表结构
desc tablename
添加表字段
alter table tablename add newColumn char;
修改表字段
alter table tablename change <oldColumn> newColumn <type>;
删除字段
alter table tablename drop <oldColumn>
修改字段类型
alter table tablename modify <oldColumn> <type>
3.数据类型
4.字段约束
对数据表中列的限制
not null: 非空
unique: 唯一约束,列的值不能重复
primary key: 非空+唯一
foreign key: 建立不同表之间的关联关系
auto_increment: 自动增长
5.联合主健
将数据表中的多列组合在一起设置为主键 定义联合主键
create table grades (
stu_num char(8)
cus_id int
score int
primary key(stu_num,cus_id)
)
注意:在实际的企业开发中,联合主键的使用频率并不高
- DML
7.模糊查询 LIKE
# 查询学生名字带k的数据,
select * from stus where stu_name like '%k%'
select * from stus where stu_name like '%_k%'
- % 表示任何多个字符
- _ 表示任意一个字符
8.排序
- 单字段排序
select * from stus where stu_age>15 order by stu_gender
select * from stus where stu_age>15 order by stu_gender asc
select * from stus where stu_age>15 order by stu_gender desc
默认asc升序排列、加了desc降序排列
- 多字段排序
select * from stus where stu_age>15 order by stu_gender desc,stu_age asc;
以上SQL:先根据性别降序排序、再根据年龄升序排序
- 聚合函数
SQL中提供了一些可以对查询的记录的列进行计算的函数,就是聚合函数
- count() 统计满足条件的指定字段值的个数
select count(stu_num) from stus;
- max() 获取最大值
select max(stu_age) from stus where stu_genders='男'
- min() 获取最小值
- sum() 计算和
select sum(stu_age) from stus;
计算年龄和
- avg() 求平均值
select avg(stu_age) from stus
求平均年龄
- 日期函数和字符串函数
alter table stus add stu_enterence datetime;
增加一个入学时间 设置为当前时间:now() \ sysdate()
11.分组查询
将数据表中的数据按照指定的列进行分组
# 根据学生性别分组: 只显示第一个
select * from stus group by stu_gender;
select stu_gender from stus group by stu_gender;
select 分组字段/聚合函数 from 表名 [where 条件] group by 分组列名
select 后使用 * 显示分组之后的每组的第一条数据
select
...待续