MySQL的数据模型


基于表存储的数据库叫做关系型数据库

SQL

SQL通用语法

  • 通用语法
    1. SQL语句可以单行或多行书写,以分号结尾。
    2. SQL语句可以使用空格/缩进来增强可读性(空格缩进数量不限)
    3. MySQL数据库的SQL语句不区分大小写关键字建议使用大写
    4. 有多种注释

SQL语句的分类

语句分类

DDL

  • 查询
    1. 查询所有数据库 show databases;
    2. 查询当前数据库 select database();
  • 创建
    1. create database 数据库名;
    2. 创建表:
      create table 表名
      1
      2
      3
      4
      5
      6
      create table 表名(
      字段1 字段类型 comment '注释内容',
      字段2 字段类型 comment '注释内容',
      字段3 字段类型 comment '注释内容',
      字段n 字段类型 comment '注释内容' (注意最后一条注释没有逗号)
      )comment '表注释';

      varchar() 变长字符串 char() 定长字符串
    3. 查看创建的表:
    • show tables;
    • desc 表名;
    1. 查看表的创建信息:
    • show create table 表名;
  • 删除
    1. 数据库删除
      drop database 数据库名;
    2. 表字段删除
      alter table 表名 字段名;
    3. 表删除
      drop table 表名;
  • 使用
    1. use 数据库名
  • 表修改操作
    1. 修改(增加)
      alter table 表名 add 字段名 字段类型 comment ‘’;
    2. 修改数据类型
      alter table 表名 modify 字段名 新数据类型(长度)
    3. 修改字段名和字段类型
      alter table 表名 change 旧字段名 新字段名 类型(长度) comment ‘’;
    4. 修改表名
      alter table 表明 rename to 新表名;

DML (data manipulation language)

  1. 添加数据(insert)
  2. 修改数据(update)

    update em set name = ‘itheima’ where id = 1;
    update em set entrytime = ‘2008-01-01’; 如果不带where代表要执行整张表的数据
  3. 删除数据(delete)

DQL (data query language) 用来 查询数据 的,设计的关键字select

  1. 基本查询
  2. 条件查询(加where)
  • 查询没有身份证的员工select * from em where idcard is null; (使用is null)
  • 查询有 is not null
  • 查询姓名为两个字的员工,用like + 两个占位符__ select * from em where name like ‘__’;
  • 查询身份证最后一个位是X select * from em where idcard like ‘%X’;
  1. 聚合函数(将一列数据作为一个整体,进行纵向计算)
  2. 分组查询
    注意:先where,然后在where里分组后执行聚合函数,然后再执行having,分组之后,查询的字段一般为分组字段和聚合函数,查询其他的是没有意义的
  • 分组性别统计数量 select gender,count(*) from em group by gender ;
  • 分组性别统计年龄 select gender,avg(age) from em group by gender;
  • 年龄小于45 根据工作地址分组 获取员工数量大于3的地址
    select workaddress,count(*) from em where age <45 group by workaddress having count(*)>=3;
    先写年龄小于45,然后再写分组,然后再挑数量,想要知道数量前面是谁?加上你选择分组的东西,最后再额外条件。
  1. 排序查询

  2. 分页查询

DCL (Data Control Language数据控制语言) 有哪些用户可以访问服务器,控制每一个用户的访问权限

  1. 管理用户
  2. 授予权限

函数

字符串函数

数值函数


select lpad(round(rand()*1000000,0),6,’0’); 实现六位数的随机验证码

日期函数


select name,datediff(curdate(),entrydate) ‘entrydays’ from em order by entrydays;

流程函数

约束

create table user(
id int primary key auto_increment comment ‘主键’,
name varchar(10) not null unique comment ‘姓名’,
age int check ( age > 0 && age < 120 ) comment ‘年龄’,
status char(1) default (1) comment ‘状态’,
gender char(1) comment ‘性别’
)comment ‘用户表’;
这些都是约束

多表查询

事务

事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。
比如银行转账。如果出错就要执行rollback回滚,设置为手动提交,autocommit = 0,commit
事务的四大特性:

  • 原子性(Atomicity):事务是不可分割的最小操作单元,要么全部成功,要么全部失败。
  • 一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态。
  • 隔离性(Isolation):数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。
  • 持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的。