• MySQL数据库————数据库语言(DDL与DML)


    系列文章目录

    `


    `在这里插入图片描述


    前言

    前面我们介绍了数据库的基本概念以及介绍了数据库安装的教程,现在我将要介绍`数据库中的操作语言DDL与DML语言以及部分SQL语言。


    `

    一、数据定义语言DDL

    数据库中的注释

    ①.单行注释:-- ,#;
    ②.多行注释:/* ````````*/

    数据库的创建

    (1).创建数据库

    ①.查看数据库

    show databases;
    
    • 1

    ②.创建数据库

    create database <数据库名>
    
    • 1

    例如:

    create database db_1;  # 创建数据库db_1,创建过一次就不能二次创建,为了防止多次创建,DDL提共了一种格式来防止此类事情的发生;
    create database if not exists db_1;-- 如果数据库名不存在,则创建数据库,否则不创建;
    
    对于最新版的数据库,我们不用考虑编码的问题,旧版本的数据库则需要转换字节码,否则容易引起乱码的问题;
    转换为utf-8编码的一般格式;
    create database db_1 default charset utf8;
    # 注意:SQL语言中不区分大小写(在字符串"",''中区分大小);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    ③.删除数据库
    基本格式:

    drop database <数据库名>;-- 删除数据库名为<数据库名>的数据库;
    
    • 1

    例如:

    drop database db_2; -- 删除数据库db_2;
    
    • 1

    ④.使用数据库
    基本格式:

    use db_2; -- 使用数据库db_2;
    
    • 1

    数据表的创建

    ①.创建数据表
    创建数据表的基本格式:

    create table [if not exists]<表格名>
    (
    属性名1 属性类型 [约束~~~~~],
    属性名2 属性类型 [约束~~~~~]~~~
    );
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    例如:

    创建老师列表:
    create table teacher(
    t_id int primary key auto_increment,
    t_name varchar(20) not null,
    t_sex varchar(4) check(t_sex='男'||t_sex='女'),
    t_age int check(t_age>=20 and t_age<=60)
    )auto_increment=100;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    ②.查看表结构
    (1).基本格式

    desc 表名;  -- 查看数据表的属性,数据类型,约束等;
    
    • 1

    我们以上面的数据表作为例子:
    在这里插入图片描述
    通过上面的运行结果我们可以清晰地看到数据表中的相关信息。
    除了该种方法,我们还有一种方法可以查看:
    (2).

    show columns from 表名;
    
    • 1

    在这里插入图片描述
    得到的结果和上面的结果一样。
    (3)修改表结构
    ①增加表中列
    基本格式:alter table <表名> add <属性名> <数据类型>; -- 向数据表中添加一个属性列;
    如:alter table student add s_score float; -- 向数据表student中添加一个属性列s_score;
    ②删除表中列
    基本格式: alter table<表名> drop column 属性名;
    如:alter table student drop column s_id; – 删除student表中的s_id中的属性列;
    ③修改表中列
    基本格式:alter table <表名> modify column <属性名><类型>;
    如:alter table student modify column s_id varchar(20);
    ④修改列名称
    基本格式:alter table <表名> change column <旧列名><新列名> <数据类型>;
    如:alter table student change column s_id ss_id int;
    (4).删除数据表
    基本格式:drop table <数据表名>;
    (5).查看数据表
    基本格式:show tables; -- 查看正在使用的数据库中的数据表;
    (6).修改表名称
    基本格式:rename table<原表名> to <新表名>;

    DML数据定义语言

    1. 数据的插入

    ①.插入所有属性值
    基本格式:insert into <表名> [value | values] (属性值1,属性值2~~~~)
    例如:insert into teacher(t_name,t_sex,t_age) values('小化','男','28'),('梁丽,'女','20'),('王丽','女','23'), ('伊目','男','27'),('龙卷风','男','30'),('桃子','女','21'),('robert','男','40'),('可韩','男','28'), ('茄子','女','22'),('圣主','男','29');

    2.修改数据(更新数据)

    ①.修改所有数据
    基本格式:update <表名> set <属性名> = <属性值>;-- 修改数据表中某个属性的取值;
    ②.使用条件约束
    一般来说,对于数据库中的操作语句来说,使用条件进行约束的时候会用到where和having(特殊情况);而使用条件约束的时候我们往往会连用条件条件运算符,比如:<,>,<=,>=,!=,||,&&,and,or等;
    这些标识符的含义和c++等高级编程语言中的条件运算符用法和概念极为相似,而这也恰好从侧面表明了MySQL是由c++语言开发而来;

    例如:条件修改:update student set s_id=100 where s_name="小华";

    3.删除数据

    ①.删除全部数据
    基本格式:delete from <表名>;-- 删除数据表中的所有数据;
    ②.条件删除
    基本格式:delete from <表名> where <条件表达式>; -- 删除数据表中满足条件的数据;

    注意:drop和delete删除的区别:
    delete是删除数据表中的数据,作用对象是数据;
    drop是删除数据表,他的作用对象是数据表;

    二、数据完整性(完整性约束)

    数据完整性是指数据库中的数据要能够正确的反应实际情况,规定输入的数据不能是无效值,错误值或者乱码;

    一.非空约束

    非空约束关键字:not null;
    1.非空约束的创建:

    create table student(
    s_id int not null, -- 为学号增加非空约束;
    s_name varchar(20)
    );
    
    • 1
    • 2
    • 3
    • 4

    2.非空约束的添加
    以修改表的形式添加非空约束:alter table student modify column s_id int not null;
    3.查看表约束
    基本格式:desc <表名>;
    4.非空约束的删除

    alter table student modify column s_id int;

    二.唯一约束

    唯一约束的关键字:unique
    1.创建唯一约束

    create table student(
    s_id int not null,
    s_name varchar(20) uniqueue,
    s_sid float
    );
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2.唯一约束的添加
    以修改表格的方式添加非空约束:alter table student add constraint uni_tid unique;(s_id);-- constraint 关键字给约束unique(s_id)取一个别名uni_tid
    若表中没有规定主键,那么表中第一个非空且唯一的属性自动添加主键约束;
    3.给约束起别名
    通过constraint关键字给约束起别名:alter table student add constraint uni_id unique(s_id);
    4.删除唯一约束
    基本格式:
    ①。根据约束名删除唯一约束:alter table student drop index unii_id;
    ②.根据属性名称删除唯一约束:alter table teacher drop index s_name;
    5.复合唯一约束
    ①.创建复合唯一约束

    create table teacher(
    t_id int not null, -- 为教师编制添加非空约束(行级约束);
    t_name varchar(20),
    
    );
    
    • 1
    • 2
    • 3
    • 4
    • 5

    ②.修改表添加复合唯一约束

    alter table teacher add constraint unit_tidname unique(t_id,t_name);
    唯一约束是表级约束,非空约束是行级约束,所以在记忆的时候也可以根据他们不同的属性来记忆;

    主键约束

    主键约束的关键字:primary key
    1.创建表时添加主键约束

    create table teacher(
    t_id int primary key, -- 添加主键约束
    t_name varchar(20),
    t_age int,
    );
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2.修改表格的方式添加主键约束

    alter table teacher add primary key(t_id);
    由于表中第一个非空且唯一的属性会默认成为主键,于是创建主键前先删除这个属性的唯一约束;

    3.删除主键约束

    alter table teacher drop primary key(t_id);
    4.创建联合主键

    alter table teacher add primar key(t_id,t_name);

    自增列(行级约束)

    自增列关键字:auto_increment
    1.创建自增列
    创建表的时候创建自增列约束:

    create table teacher(
    t_id int primary key auto_increment, -- 自增列约束,从100开始;
    t_name varchar(20),
    t_age int
    )auto_increment=100; -- 设置自增列的初始值;
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2.添加自增列
    修改表的格式:

    alter table teacher modify column t_id auto_increment;
    3.删除自增列
    alter table teacher modify column t_id;

    五.检查约束

    检查约束关键字:check
    检查约束在MySQL中不支持,所以不做要求,他是在创建表的时候创建检查约束;

    六.默认值约束(行级约束)

    关键字:default
    1.创建表添加默认值约束:

    create table teacher(
    t_id primary key auto_increment,
    t_name varchar(20),
    t_age int default 20
    )auto_increment=100; 
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2.修改表添加默认值约束
    alter table teacher modify column t_age int default 20;
    3.删除默认值约束
    alter table teacher modify column t_id int ;

    七.外键约束

    外键约束关键字:foreign key
    1.创建表的时候创建外键约束

    create table teacher(
    t_id primary key auto_increment,
    t_name varchar(20),
    t_age int 
    constraint for_ctid foreign key(t_id) references student(s_id)
    )auto_increment=100;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2.级联更新
    级联更新/删除时指父表中的元组更新或删除等操作对子表的处理方法,其中有三种方法:(on update/on delete)
    -- ①.cascade 父表中中的元组更新,删除,在子表中跟着更新和删除
    -- ②.no action 无动作,若子表中由匹配的记录,则不允许更新和删除
    -- ③.set null 设置为空,若子表中有匹配的记录,更新/删除父表中的数据,子表中的对应的数据设置为空;

    create table student(
    s_id int primary key,
    s_name varchar(20) not null,
    s_cid int not null,
    s_age int,
    s_sex varchar(4) default '男'constraint for_scid foreign key(s_cid) references class(class_id)on update cascade on delete cascade no action-- 级联更新或删除;
    );
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    总结

    本节我们初步认识了一下数据库中的定义和操作语言,以及相关的数据完整性,类容比较简单,不需要过多的去记忆,只需要简单的过一下,能够创建数据表,会在创建表的时候添加相关约束即可。下一节学习数据表的查询;

  • 相关阅读:
    机械臂速成小指南(八):运动学建模(标准DH法)
    中国人民大学与加拿大女王大学金融硕士——另辟蹊径往往能带来柳暗花明
    没有公网IP,怎样实现私有化部署?
    图像处理之理想高通滤波器、巴特沃斯高通滤波器和高斯高通滤波器的matlab简单实现
    动态规划-状态机(188. 买卖股票的最佳时机 IV)
    新版idea配置maven注意点!!
    OpenGL 反色
    每个人都应该知道的python效率工具!
    图床项目架构与设计
    2022年新能源汽车行业分析
  • 原文地址:https://blog.csdn.net/qq_59931372/article/details/126023993