大数据

大数据,第1张

大数据

目录

引言

一、DML(数据 *** 作语言)

1、插入语句

1.1. 方式一:(经典插入)

1.2. 方式二:

1.3. 两种方式的比较

2、修改语句

2.1. 修改单表的记录

2.2. 2、修改多表的记录(补充)

3、删除语句

3.1. 方式一:

3.2. 方式二:

3.3. delete与truncate的区别

 二、DDL语言(数据定义语言)

1、库和表的管理

1.1.1. 库的管理

1.1.2. 修改(修改库的结构)

1.1.3. 删除(删除整个库)

1.2.1. 表的管理

1.2.2. 修改(修改表的结构)

1.2.3. 删除(删除整个表)

2、表的复制

3、常见的数据类型

3.1. 数值型

3.2. 字符型

3.3. 日期型

4、常见约束

4.1. 含义

4.2. 分类(六大约束)

4.3. 主键与唯一的对比

4.4. 添加约束的时机

4.5. 约束的添加分类

4.6. 创建表时添加约束

4.7. 修改表时添加约束

4.8. 修改表时删除约束

5、标识列

5.1. 含义

5.2. 创建表时设置标识列

5.3. 修改表时设置标识列

5.4.  修改表时删除标识列

三、修仙程序员推荐 


引言

小人同而不和,君子美美与共,和而不同。

——《论语》子路篇第二十三章

一、DML(数据 *** 作语言)

前面我已经介绍了数据库、MySQL、以及sql语言中的DQL(数据查询语言)的相关知识。有不了解的可以去再复习以下。链接:

数据库概述:

大数据_数据库(DBMS、DB、SQL )_D大调奏鸣曲_第七序章_de博客-CSDN博客

MySQL&MySQL的DQL语言知识:大数据_MySQL之DQL(数据查询语言)_D大调奏鸣曲_第七序章_de博客-CSDN博客

接下来我们来一起学习关于DML数据 *** 作语言的知识。

 DML,其实就是关于数据 *** 作中增删改查的知识。我们具体来学习DML中的插入、修改、删除三种分类语句。

1、插入语句 1.1. 方式一:(经典插入)

语法:insert into 表名(列名1,...) values(值1,...    );

 特点:

1、插入的值的类型要与列的类型一致或兼容(即列名的类型,与values中值的类型一致或兼容)
2、不可以为null的列必须插入值,可以为null的列如何插入值?
    方式1:在值中写入null即可
    方式2:列名与值都不写
3、列的顺序可以调换,但值必须一一对应
5、可以省略列名,但默认显示存在所有列,而且列的顺序和表中列的顺序一致

1.2. 方式二:

语法:insert into 表名  set  列名=值,列名=值, ...

1.3. 两种方式的比较

①方式一支持插入多行,方式二不支持

②方式一支持子查询,方式二不支持

 

2、修改语句 2.1. 修改单表的记录

语法:update 表名 set 列=新值,列=新值,... where 筛选条件;

例如:案例:修改beauty表中姓唐的女神的电话为1389999

        答案:update beauty set phone=‘1389999’  where name ‘唐%’;

2.2. 2、修改多表的记录(补充)

sql92语法:update 表1 别名,表2 别名    set 列=值,...    where 连接条件  and 筛选条件;

(推荐)sql99语法:update 表1 别名  inner | left | right join 表2 别名   on 连接条件  set 列=值,...  ;

 

3、删除语句 3.1. 方式一:

语法:

1、单表的删除☆
    delete from 表名 where 筛选条件;

2、多表的删除【补充】
    sql92语法
        delete 表1的别名,表2的别名  from 表1 别名,表2 别名   where 连接条件  and 筛选条件;
    sql99语法
        delete 表1的别名,表2的别名  from 表1  别名   inner |left |right join 表2  别名   on 连接条件 where 筛选条件;

3.2. 方式二:

 truncate

语法:truncate table 表名;(全部删除,清空数据)

3.3. delete与truncate的区别

1、delete可以加where条件,truncate不可以
2、truncate删除效率要稍微高一些
3、假如要删除的表中有自增长列,如果用delete删除后,再插入数据,自增长列的值从断点开始,而truncate删除后,再插入数据,自增长列的值从1开始。
4、truncate删除没有返回值,delete删除有返回值。
5、truncate删除不能回滚,delete删除可以回滚。

 

 二、DDL语言(数据定义语言) 1、库和表的管理 1.1.1. 库的管理

创建:create

语法:create database [if not exists] 库名;

1.1.2. 修改(修改库的结构)

关键字:alter

修改库名:特别的是,sql里面已经没有修改的语句,需要修改库名,可以到c盘data文件夹中直接修改文件名。(注意先停用sql,修改再重新打开刷新)

更改库的字符集:alter database  库名  character  set  新的字符集名称;

1.1.3. 删除(删除整个库)

关键字:drop

删除库——语法:drop database if  exists  库名;

1.2.1. 表的管理

创建:create

语法:

create table if not exists 表名(
列名 列的类型 【(长度) 约束】,
列名 列的类型 【(长度) 约束】,
列名 列的类型 【(长度) 约束】,
...
列名 列的类型 【(长度) 约束】

(【】内的内容可以省略)

 1.2.2. 修改(修改表的结构)

关键字:alter

①修改列名

格式:alter table 表名 change column 旧列名 新列名 列数据类型;

②修改列的类型或约束

格式:alter table 表名 modify column 列名 旧数据类型 新数据类型;

③添加新列

格式:alter table 表名 add column 列名 数据类型;

④删除列

格式:alter table 表名 drop column 列名;

⑤修改表名

格式:alter table 表名 rename to 新表名;

1.2.3. 删除(删除整个表)

关键字:drop

语法:drop table if exists 表名;

2、表的复制

1、仅仅复制表的结构
    create table 新表名 like 表;
2、复制表的结构+数据
    create table 新表名  select * from 表;
3、只辅复制部分数据
    create table 新表名 select  列名,列名 from 表 where 筛选条件;
4、仅仅复制某些字段
    create table 新表名  select 列名,列名 from 表 where 0;

3、常见的数据类型 3.1. 数值型

整数

分类:

tinyint(字节:1)
smallint(字节:2)
mediumint(字节:3)
int/integer(字节:4)
bigint(字节:8)

特点:
    ①如果不设置无符号还是有符号,默认是有符号,如果设置无符号,需要添加unsigned关键字。
    ②如果插入的数值超出了整型的范围,会报out of range异常,并且插入临界值。
    ③如果不设置长度,会有默认的长度。长度代表了显示的最大宽度,如果不够会用0在左边填充,但必须搭配zerofill使用!

 小数

分类:
    定点数
        dec(M,D)
        decimal(M,D)
    浮点数
        float(M,D)   字节:4
        double(M,D)  字节:8

特点:
    ①M和D:D是小数点后的位数;M是小数点前后整数部位+小数部位的位数长度;如果超出范围,则插入临界值
    ②M和D都可以省略,如果是定点型,则M默认为10,D默认为0;如果是浮点型,则会根据插入的数值的精度来决定精度。
    ③定点型的精确度较高,如果要求插入数值的精度较高(如货币运算等)则考虑使用定点型。

(原则:所选择的类型越简单越好,能保存数值的类型越小越好(节省空间))

3.2. 字符型

较短的文本:

char(M)、varchar(M)
    M是能保存的最多的字符数。(a是一个字符,一个汉字也是一个字符)

区别:
    char是固定长度的字符,比较耗费空间,效率高,M可以省略,默认为1
    varchar是可变长度的字符,比较节省空间的耗费,但效率相比较低,M不可以省略。

 其他:
    binary和varbinary用于保存较短的二进制
    enum用于保存枚举
    Set用于保存集合

 较长的文本:

text、blob(较长的二进制数据)

3.3. 日期型

分类:
    date
        只保存时间
    datetime
        保存日期+时间
    timestamp
        保存日期+时间
    time
        只保存时间
    year
        只保存年

特点:
    datetime:字节=8,范围:1000-9999年,不受时区等的影响。
    timestamp:字节=4,范围1970-2038年,受时区等的影响。
 

 

 4、常见约束 4.1. 含义

一种限制,用于限制表中的数据,为了保证表中的数据的准确和可靠性。

4.2. 分类(六大约束)

not null
    非空约束,用于保证该字段的值不能为空。
default
    默认约束,用于保证该字段有默认值。(比如性别)
primary key
    主键,用于保证该字段的值具有唯一性,并且非空。比如学号、员工编号等
unique
    唯一键,用于保证该字段的值具有唯一性,可以为空。比如座位号
check
    检查约束,mysql中不支持。比如年龄、性别
foreign key
    外键,用于限制两个表的关系,用于保证该字段的值必须来自于主表的关联列的值。
    在从表添加外键约束,用于引用主表中某列的值。比如学生表的专业编号,员工表的部门编号,员工表的工种编号。
    特点:
        1、要求在从表设置外键关系
        2、从表的外键列的类型和主表的关联列的类型要求一直或兼容,名称无要求
        3、主表的关联列必须是一个key(一般是主键或唯一)
        4、插入数据时,先插入主表,再拆入从表。删除数据时,先删除从表,再删除主表。

4.3. 主键与唯一的对比

相同点:都能保证唯一性,都允许组合(但不推荐)
不同点:主键不允许为空,唯一键可以;一个表中主键至多有一个,唯一键可以有多个;

4.4. 添加约束的时机

1、创建表时
2、修改表时

4.5. 约束的添加分类

列级约束
    六大约束语法上都支持,但外键约束没有效果
表级约束
    除了非空(not null)与默认(default),都支持

4.6. 创建表时添加约束

1、添加列级约束
    直接在创建表中,添加数据字段进行约束
    例如:
        Create  table  stuinfo (
        id int PRIMARY KEY,  #主键约束
        stuName varchar(20) not null,#非空约束
        gender char (1) check(gender=‘男’or  gender =‘女’),#检查约束(不支持)
        Seat int unique,#唯一约束
        Age int default  18,#默认约束
        MajorId int  references major(id) #外键约束(不支持)
        )

    语法:
        直接在字段名后类型后面追加 约束类型即可
        支持:默认、非空、主建、唯一

2、添加表级约束
    例如:
        Create  table  stuinfo (
        id int , 
        stuName varchar(20),
        gender char(1) ,
        Age int,
        MajorId int ,

        Constraint 任意名 primary key (id),#主键
        Constraint 任意名 unique(seat),#唯一键
        Constraint 任意名 check(gender=‘男’or  gender =‘女’),#检查约束
        Constraint (唯一名)fk_stuinfo_major foreign key(majorid) references major(id)#外键

        )
    语法:
        在各个字段的最下面                                                                                        【constraint 约束名】 约束类型(字段名)
            【】内的内容可以省略,不起约束名也有默认名

通用的写法
    例如:
Create  table  if  not  exists  stuinfo (
id int PRIMARY KEY, 
stuName varchar(20) not null,
Sex char(1),
gender char(1) ,
Age int default 18,
Seat int unique,
Constraint (唯一名)fk_stuinfo_major foreign key(majorid) references major(id)#外键

4.7. 修改表时添加约束

1、添加列级约束
    alter table 表名 modify column 字段名 字段类型 新约束;
2、添加表级约束
    alter table 表名 add 【constraint 约束名】 约束类型(字段名) 【外键的引用】;

4.8. 修改表时删除约束

语法:
    alter table 表名 modify column 字段名 字段类型 null(或者不写);
    删除主键:alter table 表名 drop primary key;
    删除唯一:alter table 表名 drop index;
    删除外键:alter table 表名 drop foreign key 外键名;

 

5、标识列 5.1. 含义

又称为自增长列,含义:可以不用手动的插入值,系统提供默认的序列值

5.2. 创建表时设置标识列

例如:
Create table 表名(
id int primary key auto_increment,
Name varchar(20)
);


关键字:auto_increment


特点:
    标识列不一定必须和主键搭配,但要求是一个key
    一个表至多有一个标识列
    标识列类型只能是数值型
    标识列可以通过 【set auto_increment_increment=数值;】设置步长,可以通过手动插入值,设置起始值。

 5.3. 修改表时设置标识列

alter table 表名 modify column 列名 类型 约束 标识列;

5.4.  修改表时删除标识列

alter table 表名 modify column 列名 类型 约束 ;
去掉语句中标识列即可;

 

三、修仙程序员推荐 

 

电影:《破碎人生》

让我们,走出人生的阴影。

人生会有无数的遗憾,而我们能做的,是要学会接受遗憾......

比如,看别人的代码...自定义自我命名的那种......

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5668865.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存