DDL语言(数据定义语言)和DML语言(数据操作语言)

DDL语言(数据定义语言)

库和表的管理

库的管理

  • 创建

    • 修改
      删除
      表的管理
      创建
      修改
      删除
  • 相关关键字

    • 创建 create
      修改 alter
      删除drop
  • 管理

    • 库的管理
      库的创建
      语法:
      create database 库名#(一般不会去更改)
      RENAME DATABASE books TO 新库名;
  • 更改库的字符集

    ALTER DATABASE books CHARACTER SET gbk;# gbk代表的是例如utf8的效果

  • 库的删除

    • DROP DATABASE IF EXISTS books;

表的管理

  • 表的创建
    • create table 表名(
      列名 列的长度【(长度) 约束】
      列名 列的长度【(长度) 约束】
      ………………
      )
  • 表的修改
    • 修改列名
      alter table 表名 chage [column] 原列名 列名 datetime;
      修改列的类型和约束
      alter table 表名 modify [column] 列名 timestamp;
      添加新列
      alter table 表名 add column annual double(类型);
      删除列
      alter table 原表名 rename to 修改后的表名
      修改表名
      核心语法 alter table 表名 add|drop|modify|change coulum 列名 【列类型 约束】
  • 表的删除
    Drop 表名 if exists 库名/表名

表的复制

  • 1、仅仅复制表结构

    • CREATE TABLE copy LIKE beauty;#复制表的结构加数据

      CREATE TABLE copy2

      SELECT * FROM beauty;

  • 只复制部分数据

    • CREATE TABLE copy3
      SELECT NAME
      FROM beauty
      WHERE id=2;
  • 仅仅复制某些字段

    CREATE TABLE copy4
    SELECT NAME,sex
    FROM beauty
    WHERE 0;

常见的数据类型

  • 数值型
    整型
    小数:

  • 浮点型

    • float
    • double
  • 定点型:

    • DEC(M,D)
    • DECMAL(M,D)

    M为有效数字能有几位(整数部位+小数部位)

    D是代表小数点后保留几位

    超过范围则插入临界值

    可以不加D,M默认D=0,M=10

    如果是float和double,则根据插入数值的精度来决定精度

    定点型的精确度较高,如果要求插入的精度较高入货币运算则考虑使用
    字符型
    较短的文本:char、varchar

  • 较长的文本: text 、blob(较长的二进制数据)

  • 日期型

    time 只保存时间
    year 只保存年

    datetime 日期+时间
    timeStmp 日期+时间

常见约束

  • 六大约束
    not null 非空,用于保证该字段的值不能为空,比如姓名,学号等

  • DEFAULT 默认,用于保证该字段有默认值

  • PRIMARY KEY 主键,用于保证该字段的值具有唯一性,并且非空

  • UNIQUE 唯一,用于保证该字段的值具有唯一性,可以为空比如座位号

  • check :检查约束【mySQL中不支持】

  • FOREIGN KEY:外键,用于限制两个表的关系,用于保证该字段的值必须来自于主表的关联列的值

  • 在从表添加外键约束,用于引用主表中某列的值

    • 添加约束的时机:
      创建表时
      修改表时
      约束的添加分类
      列级约束
      六大约束语法上都支持,但外键约束没有效果
      表级约束
      除了非空、默认,其他都支持
  • 主键和唯一的大对比

保证唯一性 是否允许为空 一个表中是否可以有多个 是否允许组合
主键 × 至多有一个 可以,但不推荐
唯一键 可以有多个 可以
  • 外键
    要求从表设置外键关系
    从表的外键列的类型和主表的关联列的类型要求一致或兼容,名称无要求
    主表的关联列必须是一个key(一般是主键或唯一)
    插入数据时,先插入主表,在插入从表删除数据时,先删除从表,再删除主表
    删除唯一:alter table 表名 drop index 列名删除外键:alter table 表名 drop foreign 外键列名
  • 标识列又称为自增长列
    含义:可以不用手动插入值,系统提供默认的序列值
    特点:标识列必须和主键搭配吗?不一定,但要求时一个key
    2、一个表可以有几个标识列?至多一个!!!
    3、 标识列的类型只能是数值型
    4、标识符可以通过set auto_increment_increment=步长值;设置步长
    可以通过手动插入值设置初始值
    修改表时设置标识列
    Alter table 表名 modify column 列名 int_primary key auto_increment
    修改表示删除标识列
    Alter table 表名 modify column 列名 int;

通用的写法
Drop database if exists 旧库名
create database 新库名

有符号和无符号
加入unsigned关键字为无符号

创建表并添加约束的常见格式

用法:
CREATE TABLE 表名(
	字段名  字段类型  约束,
	字段名  字段类型,
	表级约束
	
 
);
 
 
举例:
CREATE TABLE stuinfo(
	id INT PRIMARY KEY,#主键
	stuname VARCHAR(20) NOT NULL,#非空
	gender CHAR(1) CHECK(gender='男' OR gender='女'),#只能选择男和女
	seat INT UNIQUE,# 唯一键
	age INT DEFAULT 18,
	majorid INT  REFERENCES major(id)
)

DML(语言数据操作语言)

插入

  • insert
    相关知识
    插入语句
    语法:
    表名
    列名
    新值

  • 插入方式

    • 在beauty表中插入数据
      • 插入的值的类型要与列的类型一致或兼容
      • 不可以为null的列必须插入值.可以为null的列可以不插入
      • 列的顺序可以调换
      • 列数和值的个数必须一致
      • 可以省略列名,默认所有列,而且列的顺序和表的顺序一致
    • 方式一: insert into 表名(列名) values(值1.…………) values(值1);
    • 方式二 :insert into 表名set 列名=值,列名=值,……
  • 两种插入方式大pk

    • 1、方式一支持插入多行,方式二不支持

    • 2、方式一支持子查询,方式二不支持

      修改

  • update
    相关知识
    修改单表的记录
    语法:
    update 表名
    set 列=新值,列=新值……
    where 筛选条件
    修改多表的记录【补充】

  • sql92语法
    语法:
    update 表1 别名,表二 别名
    set 列=值,……
    where 连接条件
    and 筛选条件;

  • sql99语法
    update 表名 别名
    inner|lest|right join 表名 别名
    on 连接条件
    set 列=值,……
    where 筛选条件;

删除

  • delete

    • 语法
      单表的删除
      delete from 表名 where 筛选条件
      多表的删除【补充】
      delete删除
    • sql92语法
      delete 表一的别名,表二的别名
      from 表1 别名,表二 别名
      where 连接条件
      and 筛选条件
    • sql99语法
      delete 表一的别名,表二的别名
      from 表1 别名
      inner|lest|right join 表名 别名
      on 连接条件
      where 筛选条件
    • truncate table 表名;
  • 区别

    • delete:可以加where条件,truncate不可以加truncate 删除,效率更高
    • 假如要删除的表中右自增长列,如果用delete删除后,再插入数据,自增长列的值冲断点开始而truncate删除后,再插入数据,自增长列的值从1开始

猜你喜欢

转载自blog.csdn.net/qq_43325476/article/details/120988609