目录

数据库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,…);

注意:

  1. 列名顺序与原表无关,但是列要在表中存在
  2. 要插入的列,不需要是全表列.可只列出需要插入的字段名
  3. 值与列的顺序,个数,类型一致
  4. 字符串值,日期值需要使用单引号’’,例如’张三’ ‘2021-01-07’
  5. 可以插入空值null(前提是列允许null值)
  6. 插入全表时,可以省略列名,值的赋值是按照原表列顺序赋值
-- 注释/*多行注释*/-- 插入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语言(增删改)相关推荐

  1. php和java语言_JAVA语言和PHP语言的比较

    JAVA语言和PHP语言的比较 JAVA语言在服务器端开发的流行以及安卓客户端开发的流行,让他占据了大部分市场份额.在服务器端还有一个语言也较为流行,就是PHP.PHP语言由于简单易学,响应速度快,在 ...

  2. 1000道C语言和C++语言的练习题笔试题及答案 #0000-0050

    汇集1000道C语言和C++语言的练习题 (例题.笔试题.编程题.算法设计题),由我亲自配上答案(点此查看). 语法题我就不出了,那个没意思,看书就可以了. 本贴汇集50题 (0000-0050),持 ...

  3. c语言 python-C语言、Java语言和python语言的区别在哪里

    原标题:C语言.Java语言和python语言的区别在哪里 我们经常听到C语言.Java语言和python语言,那么这三者的区别在哪里呢?随着科技的进步以及新技术的推进,编程语言的种类也是越来越多,随 ...

  4. C语言和C++语言关系

    C语言和C++语言关系 C语言是在实践的过程中逐步完善起来的 C语言的目标是高效 C语言和C++并不是对立的竞争关系 C语言是在实践的过程中逐步完善起来的 没有深思熟虑的设计过程 使用时存在很多&qu ...

  5. C 语言和C++语言的 struct对比

    C 语言和C++语言的 struct对比 author: stonehat 1. C++语言将struct当成类来处理的,所以C++的struct可以包含C++类的所有东西,例如构造函数,析构函数,友 ...

  6. dart语言和java语言_Java不是文明语言吗?

    dart语言和java语言 几周前,我有机会学习iOS编程. 我的老板认为我更像是"计算机科学家",而不是开发人员,这意味着我可以将自己的知识应用于开发一两个iPad应用程序–我要 ...

  7. 一步步编写操作系统 69 汇编语言和c语言共同协作 70

    由于有了上一节的铺垫,本节的内容相对较少,这里给大家准备了两个小文件来实例演示汇编语言和c语言相互调用. 会两种不同语言的人,只是掌握了同一件事物的两种表达方式.人在学习一种新语言时,潜意识里是建立了 ...

  8. 软件工程:汇编语言和C语言在软件工程的应用,计算机学生必看!

    随着科学技术不断发展,软件工程在社会发展中取得了进一步发展,软件工程专业,也在各大学生根发芽,许多大学的专业教学上也取得了良好的进展.汇编语言与C语言作为两种计算机基础语言,在推动软件工程发展等方面具 ...

  9. c++和java哪个好学_【技术科普】C语言和java语言有些什么区别?

    C语言和java语言有些什么区别? 可以打个比方吧: C语言就像一个初创公司的老板,由于人少经费少,从技术.财务.市场等都需要自己管,经常把自己累的跟狗一样: Java语言就像一个上市大公司的老板,人 ...

最新文章

  1. 我用AI分析了《赛博朋克 2077》的评价,发现真爱粉都是来吸猫的
  2. 在安卓上,微信公众号无法分享到QQ的解决办法之一
  3. web项目的两个创建形式website和webapplication
  4. matlab中的级数怎默算_matlab级数求和代码
  5. mysql安装数据自定义_mysql数据库自定义怎么安装
  6. 软件测试高频面试题真实分享/网上银行转账是怎么测的,设计一下测试用例。
  7. Kinect人体扫描的多级主动配准:从低质量到高质量
  8. UmiJS介绍--快速上手(一)
  9. Java的冒泡排序和选择排序的实现
  10. 研究生毕业做软件测试,毕业研究生,转学软件测试月薪11K,会做选择的人生到底有多赚?...
  11. 苹果手机配对手表总是显示服务器,苹果手表连接手机为什么显示要更新
  12. 密码学知识-加密介绍-1
  13. centos设置密码复杂度及最长使用时间
  14. 基于粒子群算法和遗传算法优化的高速列车横向悬挂模糊PID控制
  15. 053试题 - 320/321/322/323/324/326/330/332/544/553/585/586/587/588/589/592/596/597/598/599 rman backup
  16. 单片机篮球记分牌c语言程序和实训报告,单片机实现篮球记分牌的设计
  17. hadoop可以解决什么问题_在家艾灸可以解决这些问题
  18. The project description file (.project) for 'xxx' is missing.
  19. 计算与推断思维 二、因果和实验
  20. 一门改考三门!西安电子科技大学网络与信息安全学院

热门文章

  1. 乔吉拉德——250定律
  2. MySql数据库设置主键
  3. Codeforces Educational Round #42
  4. override和final标识符
  5. c++ typename用法
  6. android手机安全卫士源码高仿360安全卫士
  7. 排序-如何修改EXCEL排序
  8. KafKa - 控制器作用 及 选举策略
  9. 阿里云ECS制作个人简历网页
  10. 搬家完毕,感谢你的关注~