MySQL的DDL语言和DML语言(增删改)
目录
数据库Database-DB
SQL语言
MySQL
DDL
操作库
操作表
DML-数据操作语言
插入-insert
更新-update
删除-delete
约束
主键约束+自增约束
唯一约束
数据类型约束
非空约束
默认值约束
引用完整性约束-->外键
数据库Database-DB
数据库管理系统(DatabaseMenagementSystem)DBMS,是指操作和管理数据的软件.
常见的数据库分为两大类:
关系型数据库 : Oracle SQLServer MySQL DB2 MariaDB
非关系型数据库 : Redis HBase MongoDB
SQL语言
SQL(Structure Query Language)结构化查询语言.
SQL被美国国家标准局(ANSI),确定为数据库语言标准.后来被国际标准组织(ISO)采纳认可.
使用SQL99标准.
每个不同厂商出产的数据库除了标准语句外,还有各自的特点: 方言.
SQL语言分为四大类:
DDL(Data Defined Language) 数据定义语言.主要是对库,表等操作语句
DML(Data Manipulation Language) 数据操作语言.主要是对表中数据的操作(增,删,改)
DQL(Data Query Language) 数据查询语言.主要是对表中数据的查询.
DCL(Data Control Language) 数据控制语言.主要是对数据库的权限安全操作
MySQL
下载
安装
配置环境变量
启动:
命令: net start mysql 关闭: net stop mysql
服务项启动:
登录mysql:
mysql -u root -p密码
退出: 输入 exit
DDL
操作库
创建库
create database 库名;create database 库名 character set utf-8; -- 默认就是utf-8,所以无需再设置
查询库
show databases;
删除库
drop database 库名;
修改库
alter database 库名 character set utf-8;
查询当前使用的库
select database();
切换数据库
use 库名;
操作表
在数据库中创建表.
查看当前库下所有表
show tables;
创建表
create table 表名(列名 数据类型(长度) [约束],列名2 数据类型(长度) [约束],列名3 数据类型(长度) [约束]);
数据类型: 整型 int , 长度固定11 浮点型 double 长度(总长,其中小数个数)à(5,2) à 999.99√ 10000.0× 1.1√ float 字符型 char 定长字符,长度0-255, ‘张三 ’ varchar 可变长字符 ‘张三’ text 主要存储大文本数据 字节型 blob 字节类型,适合存图像等 日期型 date 日期,不需要指定长度 time 时间,不需要指定长度 datetime 日期时间,不需要会指定长度 timestamp 时间戳,时间会自动改变 |
id(整型) |
name(字符串) |
age(整型) |
sex(字符串) |
birthday(日期) |
score(浮点型) |
create table stu(id int(11), -- int类型长度11,每个列之间使用,隔开name varchar(10), -- 字符型长度10,逗号隔开age int, -- int类型长度固定,可以省略sex char(1),birthday date, -- 日期不需要写长度score double(5,2) -- 最后一个列,不用写,号);
查看表的字段信息
desc 表名;
更新表字段-添加列
alter table 表名 add 列名 数据类型(长度);
更新表字段-删除列
alter table 表名 drop 列名;
更新列名
alter table 表名 change 旧列名 新列名 数据类型(长度);
更新表名
rename table 旧表名 to 新表名;
查看创建表的语句
show create table 表名;
修改表的编码格式
alter table 表名 character set gbk; -- 建议就使用utf8
删除表
drop table 表名;
DML-数据操作语言
是指对表中数据的增,删,改
插入-insert
语法:
insert into 表名 (列名1,列名2,…) values (值1,值2,…);
注意:
- 列名顺序与原表无关,但是列要在表中存在
- 要插入的列,不需要是全表列.可只列出需要插入的字段名
- 值与列的顺序,个数,类型一致
- 字符串值,日期值需要使用单引号’’,例如’张三’ ‘2021-01-07’
- 可以插入空值null(前提是列允许null值)
- 插入全表时,可以省略列名,值的赋值是按照原表列顺序赋值
-- 注释/*多行注释*/-- 插入insert into student (id,username,birthday) values (2,'李四','2021-01-07');insert into student (id,username,birthday) values ('3','李四','2021-01-07');insert into student (id,username,birthday) values (4,4,'2021-01-07');insert into student (id,username,birthday) values (5,'王五',null);-- 全表INSERT INTO student (id,username,age,sex,birthday,score)VALUES(6,'赵六',19,'男','2021-01-7',99.0);-- 省略列名,要与原表列顺序一致insert into student values (7,'赵六7',19,'男','2021-01-07',98.0);-- 数据长度要与创建时一致insert into student values (8,'赵六8',20,'男','2021-01-07',999.99);-- insert into student values (8,'赵六8',20,'男','2021-01-07',9999.99);
更新-update
-- 更新-- 将学号为1的学生年龄改为20,成绩改为100update student set age = 20,score = 100 where id = 1;-- 将所有女生的年龄改为18update student set age = 18 where sex = '女'-- 将学号为7的学生的成绩加2分update student set score = score + 2 where id = 7;-- 不加条件,全表更新update student set birthday = '2021-01-06';
删除-delete
-- 删除学生表姓名为张三的数据 delete from student where username = '张三'; delete from student where username = '李四'; -- 如果不加条件,则会删除全表 delete from student; |
ps:
工作中,不能真的删除数据,数据很重要,后期可能会做数据收集,处理,分析等等工作。那么,如何实现“删除”?
设计表时,给表设计多设计一个字段:状态字段status,
一般定义状态码: 1正常 2不正常 或者
1普通用户 2普通会员 3黄金会员 7已注销
在点击按钮删除时,其实是更新字段的状态
约束
约束:对插入数据的约束。
一般在创建表时指定约束,然后在插入值时按照约束赋值。
create table 表名(字段 数据类型(长度) 约束,字段 数据类型(长度) 约束1 约束2,字段 数据类型(长度));
约束类型:
主键约束
自增约束
唯一约束
数据类型
非空约束
默认值约束
引用完整性约束外键
主键约束+自增约束
primary key 主键
auto_increment 自动增长
/* 主键约束: 1 主键列值不能重复,即唯一 2 主键值不能为空 3 主键是索引(index) 一张表中可以设置两个或多个主键,它们是一个整体,叫联合主键 联合主键的所有列值重复,才算重复 --------------------------- 一般主键都会设置为自增. 如果不给主键设置值,则会根据上条数据主键值,自增1 |
*/create table stu1(id int(11) primary key,name varchar (10));create table stu2(id int(11),age int(11),primary key(id,age) -- 联合主键);create table stu3(id int primary key auto_increment,name varchar(10));insert into stu1 (id) values (1);-- 没有主键的列值,可以重复insert into student (id) values (1);insert into student (id) values (1);-- 主键不能为空-- insert into stu1 (name) values ('张三');-- 主键自增,不插入值,会自动增长insert into stu3 (name) values ('张三');insert into stu3 (name) values ('李四');-- 删除一行数据,自增的数据会按照删除之前继续自增delete from stu3 where id = 2;insert into stu3 (name) values ('王五');
唯一约束
/* 唯一约束: unique 使该列的值不能重复 */ create table stu4( id int , name varchar(10) unique ); |
数据类型约束
数据类型约束即,限制该列存储的数据类型,不符合不能存入!
非空约束
/* 非空约束:not null 在插入时该列值不能为空 */ create table stu5( id int, name varchar(10) not null ); |
默认值约束
DBMS如果创建表时不指定约束,那么每个列的值默认为null
/* 默认值 default xx 当该列不赋值时,默认赋值为xx. */ create table stu6( id int, name varchar(10), sex char(1) default '男' ); |
ps: 建表时在字段后 使用comment ‘注释’,可以对该列注释
引用完整性约束-->外键
创建学生表stu,字段sid,sname,age
创建课程表course 字段cid,cname,sid
假设一个学生可以有多个课程,所以在课程表中设计了stu表的主键列sid
create table stu(
sid int primary key auto_increment comment ‘学生主键’,
sname varchar(10) comment ‘学生姓名’,
age int comment ‘学生年龄’
);
create table course(
cid int primary key auto_increment comment ‘课程主键’,
cname varchar(10) comment ‘课程名称’,
sid int comment ‘关联学生表id’
)
设计了外键后,课程表中的sid字段就与学生表的sid字段有联系.
父表: stu表 (被引用的表)
子表: course表 (引用表)
插入时:
学生表可以随意插入值
课程表插入值时,sid字段只能插入学生表中有的sid值
删除或更新时:
RESTRICT: 如果想要删除/更新父表的记录,子表中有关联该父表记录的,则不允许删除父表记录
NO ACTION: 同restrict一样,删除时先检查外键.如果有引用,不能删除
CASCADE: 级联,父表删除/更新时,如果有子表有关联,那么子表父表数据一起删除/更新
SET NULL: 置空,父表删除/更新时,如果子表有关联,那么子表该条记录置为null
/* 引用完整性约束-外键(foreign key) 创建外键的方式 1 在建表时直接指定 在引用了别的表字段的表中添加外键约束 constraint 外键名 foreign key(当前表字段) references 其他表(字段) 2 建好表后再指定 alter table 表名 add constraint 外键名 foreign key (字段) references 其他表(字段) */ create table stu( sid int primary key auto_increment comment '学生主键', sname varchar(10) comment '学生姓名', age int comment '学生年龄' ); create table course( cid int primary key auto_increment comment '课程主键', cname varchar(10) comment '课程名称', sid int comment '关联学生表id', constraint fk_course_stu foreign key(sid) references stu(sid) ); alter table course add constraint fk_course_stu foreign key (sid) references stu(sid); |
MySQL的DDL语言和DML语言(增删改)相关推荐
- php和java语言_JAVA语言和PHP语言的比较
JAVA语言和PHP语言的比较 JAVA语言在服务器端开发的流行以及安卓客户端开发的流行,让他占据了大部分市场份额.在服务器端还有一个语言也较为流行,就是PHP.PHP语言由于简单易学,响应速度快,在 ...
- 1000道C语言和C++语言的练习题笔试题及答案 #0000-0050
汇集1000道C语言和C++语言的练习题 (例题.笔试题.编程题.算法设计题),由我亲自配上答案(点此查看). 语法题我就不出了,那个没意思,看书就可以了. 本贴汇集50题 (0000-0050),持 ...
- c语言 python-C语言、Java语言和python语言的区别在哪里
原标题:C语言.Java语言和python语言的区别在哪里 我们经常听到C语言.Java语言和python语言,那么这三者的区别在哪里呢?随着科技的进步以及新技术的推进,编程语言的种类也是越来越多,随 ...
- C语言和C++语言关系
C语言和C++语言关系 C语言是在实践的过程中逐步完善起来的 C语言的目标是高效 C语言和C++并不是对立的竞争关系 C语言是在实践的过程中逐步完善起来的 没有深思熟虑的设计过程 使用时存在很多&qu ...
- C 语言和C++语言的 struct对比
C 语言和C++语言的 struct对比 author: stonehat 1. C++语言将struct当成类来处理的,所以C++的struct可以包含C++类的所有东西,例如构造函数,析构函数,友 ...
- dart语言和java语言_Java不是文明语言吗?
dart语言和java语言 几周前,我有机会学习iOS编程. 我的老板认为我更像是"计算机科学家",而不是开发人员,这意味着我可以将自己的知识应用于开发一两个iPad应用程序–我要 ...
- 一步步编写操作系统 69 汇编语言和c语言共同协作 70
由于有了上一节的铺垫,本节的内容相对较少,这里给大家准备了两个小文件来实例演示汇编语言和c语言相互调用. 会两种不同语言的人,只是掌握了同一件事物的两种表达方式.人在学习一种新语言时,潜意识里是建立了 ...
- 软件工程:汇编语言和C语言在软件工程的应用,计算机学生必看!
随着科学技术不断发展,软件工程在社会发展中取得了进一步发展,软件工程专业,也在各大学生根发芽,许多大学的专业教学上也取得了良好的进展.汇编语言与C语言作为两种计算机基础语言,在推动软件工程发展等方面具 ...
- c++和java哪个好学_【技术科普】C语言和java语言有些什么区别?
C语言和java语言有些什么区别? 可以打个比方吧: C语言就像一个初创公司的老板,由于人少经费少,从技术.财务.市场等都需要自己管,经常把自己累的跟狗一样: Java语言就像一个上市大公司的老板,人 ...
最新文章
- 我用AI分析了《赛博朋克 2077》的评价,发现真爱粉都是来吸猫的
- 在安卓上,微信公众号无法分享到QQ的解决办法之一
- web项目的两个创建形式website和webapplication
- matlab中的级数怎默算_matlab级数求和代码
- mysql安装数据自定义_mysql数据库自定义怎么安装
- 软件测试高频面试题真实分享/网上银行转账是怎么测的,设计一下测试用例。
- Kinect人体扫描的多级主动配准:从低质量到高质量
- UmiJS介绍--快速上手(一)
- Java的冒泡排序和选择排序的实现
- 研究生毕业做软件测试,毕业研究生,转学软件测试月薪11K,会做选择的人生到底有多赚?...
- 苹果手机配对手表总是显示服务器,苹果手表连接手机为什么显示要更新
- 密码学知识-加密介绍-1
- centos设置密码复杂度及最长使用时间
- 基于粒子群算法和遗传算法优化的高速列车横向悬挂模糊PID控制
- 053试题 - 320/321/322/323/324/326/330/332/544/553/585/586/587/588/589/592/596/597/598/599 rman backup
- 单片机篮球记分牌c语言程序和实训报告,单片机实现篮球记分牌的设计
- hadoop可以解决什么问题_在家艾灸可以解决这些问题
- The project description file (.project) for 'xxx' is missing.
- 计算与推断思维 二、因果和实验
- 一门改考三门!西安电子科技大学网络与信息安全学院