3分钟快速入门MySQL基础

数据库的介绍

1. 什么是数据库

  • 数据存储的技术有:

    • List、Map存储:不能持久化存储
    • 文件存储:存储的格式不统一,读取不方便,操作麻烦
  • 数据库:存储数据的仓库,本质是一个文件系统。可以结构化的存储数据,方便的进行数据的增、删、改、查。

  • 常见的数据库
  • SQLServer:Microsoft公司的收费的、中型数据库软件。.net c#

  • Oracle:Oracle公司的收费的、高性能的、大型数据库软件。Java里应用比较多

  • MySql:Oracle公司的免费的、小型数据库软件。被Oracle收购之后,6.x版本开始收费。

  • DB2:IBM公司的收费的、稳定的、大型数据库软件。银行、金融等行业

  • Sybase:已经很少使用了,但是它提供了一个专业的数据库建模工具:PowerDesigner

2.SQL语句介绍

1. MySql的数据库结构

在这里插入图片描述

2. 什么是SQL

什么是SQL
  • SQL:Structure Query Language(结构化查询语言),通过sql操作数据库(操作数据库,操作表,
    操作数据)
  • SQL被美国国家标准局(ANSI)确定为关系型数据库语言的美国标准,后来被国际化标准组织
    (ISO)采纳为关系数据库语言的国际标准
  • SQL规范:各数据库厂商(MySql,oracle,sql server)都支持ISO的SQL标准。
  • SQL方言:各数据库厂商在标准的基础上做了自己的扩展。 各个数据库自己特定的语法
SQL分类
  • DDL:DataBase Definition Language,数据定义语言。用来定义数据库结构,比如:库、表等等
  • DML:DataBase Manipulation Lanaguage,数据操作语言。用来增、删、改数据的
  • DQL:DataBase Query Lanaguage,数据查询语言。用来查询数据的
  • DCL:DataBase Controll Lanaguage,数据控制语言。DBA使用的,进行权限管理
  • DBA:DataBase Aministrator,数据库管理员

3.SQL操作MySql【重点】

1 DDL语句

1.1 DDL操作库database
语法
  • 创建库:create database [if not exists] 库名称 [character set 字符集]
  • 查询所有库:show databases
  • 查看一个库的创建信息:show create database 库名称
  • 修改库:alter database 库名称 [default] character set 字符集
  • 切换库/使用库:use 库名称
  • 查看现在在哪个库里:select database()
  • 删除库:drop database 库名称
1.2 DDL操作表table
MySql的数据类型
数据类型说明对应Java类型
int整数类型,占4字节int, Integer
double(m,n)小数类型,占8字节。总长度m,小数长度n。double(5,2)double, Double
varchar(n)可变长度字符串。varchar(10),存储"ab",占2个字符String
char(n)固定长度字符串。char(10),存储"ab",占10个字符String
date日期类型。格式:yyyy-MM-ddDate
datetime日期时间类型。格式:yyyy-MM-dd HH:mm:ssjava.sql.Timestamp,Date
语法
  • 创建表:create table 表名称(字段名 类型 [约束], 字段名 类型 [约束], ...)
  • 查看所有表:show tables
  • 查看表结构:desc 表名称
  • 查看表创建信息:show create table 表名称
  • 修改表:
  • 重命名表:rename table 原名称 to 新名称
  • 添加字段:alter table 表名称 add 字段名 类型
  • 修改字段类型:alter table 表名称 modify 字段名 新类型
  • 修改字段名称:alter table 表名称 change 原字段名 新字段名 类型
  • 删除字段:alter table drop 字段名
  • 删除表:drop table 表名称

2 DML语句【重点】

  • DML的操作包含:
    • 插入数据/记录
    • 修改数据/记录
    • 删除数据/记录
语法
  • 插入数据:MySql可以以字符串形式插入一切类型的数据

    • 插入所有字段:insert into 表名称 values (值1, 值2, ...)

    • 插入指定字段:insert into 表名称 (字段名1, 字段名2, ..., 字段名n) values (值1, 值2, ..., 值n)

  • 修改数据

    • update 表名称 set 字段名1=值1, 字段名2=值2,..., 字段名n=值n [where 条件]
  • 删除数据

    • 删除符合条件的数据:delete from 表名称 [where 条件]
    • 摧毁重建表:truncate table 表名称

3 DQL语句【重点】

3.1 简单查询
语法
  • 基本语法:select [distinct] 字段1,字段2..|* from 表名称

    • 查询并处理Null值:ifnull(字段, 默认值)

    • 查询并进行运算:+,-,*,/

    • 查询并起别名:字段名 [as] 别名

    • 去重查询:distinct

    • distinct后边所有的字段值都一样,才是重复值,是要去掉的。

  • 注意:查询操作,不会对表里的数据有任何的影响

* -- 给user表增字段salary double
alter table user add salary double;
-- 给user表增加字段dept varchar(32)
alter table user add dept varchar(32);

-- 1. 查询user表里所有字段的值
select * from user;
-- 2. 查询user表里所有用户的姓名
select id,name from user;

-- 3. 查询user表里每个用户的姓名和工资。如果工资为null,按0处理
select name, ifnull(salary, 0) from user;

-- 4. 查询user表里每个用户的姓名和  总收入:工资+奖金5000
select name, ifnull(salary,0) + 5000 from user;

-- 5. 查询user表里每个用户的姓名和  总收入(字段显示成“总收入”)
select name as '姓名', ifnull(salary,0) + 5000 '总收入' from user;

-- 6. 去重查询user表里每个用户所属的部门
select distinct dept from user;

3.2 条件查询

语法
  • 单条件的:
    • 条件判断:>, <, >=, <=, =, <>
    • 判空:is null is not null
    • 模糊查询:like '张%'like '张_' not like '张%'not like '张_'
    • 范围查询:between 开始值 and 结束值in(值1, 值2,.., 值n)
  • 多条件的:
    • and:并且,所有条件都必须符合
    • or:或者,任意条件满足即可
    • not:非,排除结果不要

3.3 排序查询

语法
  • order by 排序字段 排序规则, 排序字段2 排序规则2, ...
  • 排序规则有:
    • ASC:升序,从小到大,默认的
    • DESC:降序,从大到小
-- 1. 排序查询:order by 排序字段 排序规则
select * from user order by age asc;
-- 2. 排序查询:按照年龄从小到大排序,如果年龄相同,就按照工资从高到低排序
select * from user order by age asc, salary desc;

3.4 聚合函数

语法
  • 聚合函数:用于进行列数据统计的。常用的聚合函数有:
    • count(字段):统计数量
    • sum(字段):求和
    • avg(字段):求平均值
    • max(字段):求最大值
    • min(字段):求最小值
  • 注意:所有聚合函数会忽略null值
-- . 聚合函数
-- 1 查询学生表里的数量
select count(*) from students;
-- 2 查询所有学生的年龄总和
select sum(age) from students;
-- 3 查询所有学生的平均年龄
select avg(age) from students;
-- 4 查询最大年龄
select max(age) from students;
-- 5 查询最小年龄
select min(age) from students;

3.5 分组查询

语法
  • 语法:group by 分组字段 [having 分组后的过滤条件]
  • 注意:select后边,只能跟分组的字段,或者聚合函数。不能查询与分组无关的字段
  • 分组查询的顺序:
    • 使用where对原始表进行过滤
    • 根据分组字段进行分组统计,得到分组后的结果
    • 使用having对分组后的结果进行过滤

3.6 分页查询

语法
  • 语法:limit 起始索引,查询数量
  • select * from 表名称 limit 起始索引, 查询数量
-- 分页查询  limit 起始索引, 查询数量。  起始索引 = 每页几条 * (页码-1)
--    查询用户,每页3条,要查询第一页
select * from user limit 0, 3;
--    查询用户,每页3条,要查询第二页
select * from user limit 3, 3;
--    查询用户,每页3条,要查询第三页
select * from user limit 6, 3;

3.7 综合查询

  • select 字段|聚合 from 表名称 where 条件 group by 分组字段 having 分组后过滤 order by 排序字段 排序规则 limit 起始索引,查询数量
  • 分组统计每个地方的男生数量,只要数量大于等于1的。查询结果按照数量升序显示。 每页2条,显示第1页
select address, count(*) from students where sex = '男' group by address having count(*) >= 1 order by count(*) asc limit 0,2;

4、MySql约束

1. 主键约束
  • 主键:一张表里数据的唯一标识。原则上:每张表必须有主键,且只能有一个主键

  • 主键约束:

    • 作用:被主键约束的字段,值必须是非空、唯一
    • 语法:primary key [auto_increment]
      • 如果主键字段是整数,可以增加auto_increment,MySql会自动生成主键值:1,2,3, ... +1
      • 如果不是数字,不要增加auto_increment
2. 唯一性约束
  • 作用:唯一性约束的字段,值不能重复,但是可以为null
  • 语法:字段名 类型 unique
3. 非空约束
  • 作用:非空约束的字段,值不能为null
  • 语法:字段名 类型 not null
4. 默认值约束
  • 作用:默认值约束的字段,如果不指定值,取默认值(如果指定null值,值就是null,不取默认值)
  • 语法:字段名 类型 default 默认值
5.外键约束
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值