Mysql学习记录

23 阅读3分钟

1.数据库介绍

纯学习记录

1.1数据库概念

  • 长期存储:持久存储
  • 有结构 类型:数据库不仅可以存放数据,而且存放的数据还是有类型的 关系:存储数据之间的关系
  • 大量
  • 共享:多个应用程序可以通过数据库实现数据共享

1.2 关系型和非关系型数据库

  • 关系型数据库: 采用关系模型来组织数据存储,以行和列的形式存储数据并记录数据与数据之间的关系--将数据存储在表格中,可以通过建立表格之间的关联来维护数据与数据之间的关系
  • 非关系型:采用键值对的模型存储数据,只完成数据的记录,不会记录数据与数据之间的关系

1.3 常见的数据库

  • 关系型数据库:mysql、Oracle、PostgreSQL、SQL server、Access、达梦数据库
  • 非关系型数据库: 面向检索:HaBase、BigTable; 面向高并发:Redis、 面向海量数据访问的文档存储:MongoDB

1.4 数据库术语

数据库: 存储数据的集合 数据: 实际上指描述事物的符号记录 数据库管理系统(DBMS):通常以系统服务的形式存在,是位于用户与操作系统的之间的一层数据管理软件 数据库系统管理员(DBA): 负责数据库创建、使用以及维护的专门人员 数据库系统(DBS):整个单元

Mysql下载安装

--------省略----------

MySql的逻辑结构

image.png

SQL

CRUD指令

  1. 分类:
  • DDL: data definition language - 用于完成对数据对象的创建、删除、修改
  • DML: data Manipulation language - 用于完成对数据表中的数据添加、修改删除操作
  • DQL: data Query - 查询
  • DCL: data Control Language - 事务管理等控制性操作
  1. 基本语法
  • 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.数据类型

image.png

image.png

image.png

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)
)

注意:在实际的企业开发中,联合主键的使用频率并不高

  1. 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:先根据性别降序排序、再根据年龄升序排序

  1. 聚合函数

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

求平均年龄

  1. 日期函数和字符串函数
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

...待续