当前位置:网站首页>MySQL数据库————数据库语言(DDL与DML)
MySQL数据库————数据库语言(DDL与DML)
2022-07-29 15:06:00 【心随而动】
系列文章目录
`
`
文章目录
前言
前面我们介绍了数据库的基本概念以及介绍了数据库安装的教程,现在我将要介绍`数据库中的操作语言DDL与DML语言以及部分SQL语言。
`
一、数据定义语言DDL
数据库中的注释
①.单行注释:-- ,#;
②.多行注释:/* ````````*/
数据库的创建
(1).创建数据库
①.查看数据库
show databases;
②.创建数据库
create database <数据库名>
例如:
create database db_1; # 创建数据库db_1,创建过一次就不能二次创建,为了防止多次创建,DDL提共了一种格式来防止此类事情的发生;
create database if not exists db_1;-- 如果数据库名不存在,则创建数据库,否则不创建;
对于最新版的数据库,我们不用考虑编码的问题,旧版本的数据库则需要转换字节码,否则容易引起乱码的问题;
转换为utf-8编码的一般格式;
create database db_1 default charset utf8;
# 注意:SQL语言中不区分大小写(在字符串"",''中区分大小);
③.删除数据库
基本格式:
drop database <数据库名>;-- 删除数据库名为<数据库名>的数据库;
例如:
drop database db_2; -- 删除数据库db_2;
④.使用数据库
基本格式:
use db_2; -- 使用数据库db_2;
数据表的创建
①.创建数据表
创建数据表的基本格式:
create table [if not exists]<表格名>
(
属性名1 属性类型 [约束~~~~~],
属性名2 属性类型 [约束~~~~~],
~~~
);
例如:
创建老师列表:
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).基本格式
desc 表名; -- 查看数据表的属性,数据类型,约束等;
我们以上面的数据表作为例子:
通过上面的运行结果我们可以清晰地看到数据表中的相关信息。
除了该种方法,我们还有一种方法可以查看:
(2).
show columns from 表名;

得到的结果和上面的结果一样。
(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)
);
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
);
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),
);
②.修改表添加复合唯一约束
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,
);
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; -- 设置自增列的初始值;
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;
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;
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-- 级联更新或删除;
);
总结
本节我们初步认识了一下数据库中的定义和操作语言,以及相关的数据完整性,类容比较简单,不需要过多的去记忆,只需要简单的过一下,能够创建数据表,会在创建表的时候添加相关约束即可。下一节学习数据表的查询;
边栏推荐
- Google Play policy update | in July 2022
- Work Efficiency - Fifteen minutes allows you to quickly learn Markdown syntax to proficient in typesetting practice notes
- 又一位AI大佬辞职进体制内!AI的尽头是编制?
- LeetCode·739.每日温度·递减栈
- 关于数字化转型 你需要知道的八项指导原则
- 浮点数内存存储问题
- 韦伯首批照片引发论文竞速大战:晚13秒即错失首发,科研党纷纷肝得起飞
- CNCF Keith Chan:分布式云时代,云原生社区的发展与趋势
- PHP 读取/导出 CSV文件
- 【LeetCode】350. 两个数组的交集 II
猜你喜欢

手摸手实现Canal如何接入MySQL实现数据写操作监听

See you in shenzhen!Cloud native to accelerate the application building special: see cloud native FinOps, SRE, high-performance computing scenario best practices

AOP implementation enterprise API access interface monitoring (via Google Guava cache data)

每日优鲜倒下,下一个是谁?

Numpy

从通信延伸到全行业,亚信科技AntDB 7.0蓄势待发

JUL 学习

浮点数内存存储问题

Linux installation of MySQL (super detailed)

ES6 从入门到精通 # 10:Set 集合数据类型
随机推荐
LeetCode·621.任务调度器·构造法
Google Play 政策更新 | 2022 年 7 月
redis常见面试题(背诵篇)
这个保护数据隐私的赛道,人人都想插一脚,互联网大厂挤破头,连甲方都下场自研了...
腾讯云数据库负责人林晓斌借1亿炒股:已爆仓破产
ES6 从入门到精通 # 10:Set 集合数据类型
教程篇(7.0) 07. 诊断和故障排除 * FortiClient EMS * Fortinet 网络安全专家 NSE 5
将博客搬至CSDN
极市直播丨严彬-Unicorn:走向目标跟踪的大一统(ECCV2022 Oral)
多线程顺序运行的 4 种方法,面试随便问!
【LeetCode】53. 最大子数组和
【LeetCode】566. 重塑矩阵
深圳见!云原生加速应用构建专场:来看云原生 FinOps、SRE、高性能计算场景最佳实践
每日优鲜倒下,下一个是谁?
【IIC通信】Chap.2 (I2C)IIC协议的特点;为什么IIC需要开漏输出、上拉电阻?
Guangzhou fire: high temperature weather frequent fire fire safety should not be ignored
文档贡献与写作必读-OpenHarmony开发者文档风格指南
The very city live 丨 being - Unicorn: towards the unification of target tracking (ECCV2022 Oral)
Qt学习第一天
稳稳当当的生活