系列文章目录
`
`
文章目录
前言
前面我们介绍了数据库的基本概念以及介绍了数据库安装的教程,现在我将要介绍`数据库中的操作语言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-- 级联更新或删除;
);
总结
本节我们初步认识了一下数据库中的定义和操作语言,以及相关的数据完整性,类容比较简单,不需要过多的去记忆,只需要简单的过一下,能够创建数据表,会在创建表的时候添加相关约束即可。下一节学习数据表的查询;