欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MySQL基础概念和命令

程序员文章站 2022-05-29 15:48:17
...

1.什么是mysql

1.1 什么是数据库(DataBase DB)

利用数据结构存储数据的仓库

1.2 数据库管理系统(DBMS)

操纵和管理数据库的一套系统软件

1.3 数据库管理系统分类

  • 关系型的数据库管理系统(RDBMS)

    处理结构化数据(行和列)

    • Oracle: oracle公司,大型的分布式RDBMS
    • Mysql: 开源免费
    • sqlserver/db2
  • 非关系型数据库管理系统(Nosql)

    数据多样性

    关系的复杂性

    高并发和高io操作

    redis / HBase / mongoDB / Neo4j

1.4 Mysql简介

​ 开源免费的关系型的数据库管理系统。

​ 利用表(数据库表)存储和管理数据,行称为记录,列称为字段

​ 管理多个数据库,每个数据库中管理多张表。

​ 支持千万级的数据量。

​ 支持GPL许可证。

2.Mysql的安装和使用

#### 2.1 mysql的下载

https://www.oracle.com

https://dev.mysql.com/downloads/windows/installer/5.7.html

3.Mysql的使用

3.1 连接数据库

mysql -uroot -p密码

3.2常见命令

show databases;    显示数据库
use dbname; 切换数据库
show tables; 展示表

3.3 图形化界面工具

客户端,利用图形界面来展示数据(友好), navicat,sqlyog等

4.SQL

结构化查询语言。关系型数据库通用语言。

结束标识是;

字符串数据用引号;

大小写不敏感

4.1 sql的分类

  • DDL: 数据定义语言(结构)

    实现数据库对象(数据库,表,视图,索引等)的操作(创建,修改和销毁)

    create      /     alter     /  drop
    
  • DML: 数据操纵语言(数据)

    增删改

    insert   /  delete  / update
    
  • DQL: 数据查询语言

    select
    
  • TCL: (transaction)事务控制语言

    commit    /    rollback(回滚)
    
  • DCL: 数据控制语言(授权)

    grant   /   revoke
    

4.2 DDL

数据定义语言,用于操作数据库对象的结构

  • 数据库的创建和销毁

    # 创建数据库
    create database [if not exists] bd1906;
    
    #销毁数据库
    drop database [if exists] bd1906;
    
  • 表的创建,修改和销毁

    1. 创建表
    create table student(
         sid int,
    	 sname varchar(20),
    	 age int,
    	 gender varchar(10)
    );
    # 查看表的状态
    desc student;
    
    2. 修改结构(添加字段,销毁字段,修改字段(字段名称,类型,长度,位置,约束等))
    alter table tname add/drop/change/modify  colname coltype... first|after
    
     * 添加字段
       追加字段
          alter table student add email varchar(20);
       添加到首列
          alter table student add phone char(11) first;
       指定位置:
          alter table student add card char(18) after sid;
      
      
     * 销毁字段
       alter table student drop card;
    
    
     * 修改字段
       alter table student modify colname 类型 约束...
       alter table student change 旧字段名称 新字段名称 类型 约束...
    
       # 修改字段名称
       alter table student change email semail varchar(20);
       # 修改字段的类型和长度
       alter table student modify sname varchar(50);
       # 修改位置
        alter table student modify semail varchar(20) after sname;
        
    3.销毁表
     drop table student;
     
    4.修改表的名称
    rename table student to stu; 
    
    5.清空表(只清空数据,不改变结构)
    truncate table stu;
    
    delete,truncatedrop的区别?
      drop销毁表结构;
      truncate不改变结构,只清空数据和重置。
    
    • 数据类型(仅限mysql)

      数值类型:
        整数:
          int  / bigint
        浮点数:
          float(10,2): 长度是10,小数点后的位数是2
          double(16,4): 长度为16,小数点后的位数是4
          decimal(m,n): 金额等数据时必须使用decimal
        
      字符串类型:必须指明长度
          char(n): 固定长度
          varchar(n): 可变长度
          
      日期类型:
          date: 日期
          time: 时间
          datetime: 日期和时间 
          timestamp: 时间戳 
      
      其他类型:
          text: 文本类型
          blob: 二进制数据类型
          enum() / set()  / json()
      

    4.3 数据完整性

    数据的准确性和可靠性

  • 实体完整性

    实体指的就是记录,就是保证记录是准确的,不重复的

    • 主键约束: 唯一而且不能为空(primary key)

      # 场景1: 创建表的同时添加约束
      create table student(
        sid int primary key,
        sname varchar(20) 
      );
      create table student(
        sid int,
        sname varchar(20),
        primary key(sid)  
      );
      
      # 场景2: 表已经存在(主键字段绝对不能存在重复的数据)
      alter table stu add constraint PK_ID primary key (sid);
      
      # 注意:
       1.每张表必须有主键,但是有且只能有一个,允许有联合主键
       2.主键字段一般数据类型和长度尽可能小
       3.主键字段不要使用业务字段
      
    • 唯一约束: 字段的值必须唯一

      create table student(
        card char(18) unique
      )
      alter table stu add constraint UQ_CARD unique (card);
      
    • 主键自增:

      auto_increment: 默认从1开始每次增加1

  • 域完整性

    域:字段

    类型约束

    not null:非空约束

    default: 默认值

  • 引用完整性

其中一张表的字段取值需要依赖于另一张表

外键约束

alter table emp add constraint FK_DEPTNO foreign key(deptno) references dept(deptno);
相关标签: MySQL基础学习