当前位置: 首页 > news >正文

MySQL数据库:SQL语言入门 【2】(学习笔记)

目录

 2,DML —— 数据操作语言(Data Manipulation Language)

(1)insert   增加 数据

(2)delete  删除 数据       truncate  删除表和数据,再创建一个新表

(3)update  修改 数据

3,DDL —— 数据定义语言(Data Definition Language)

(1)create  创建 数据库对象

(2)drop  删除 数据库对象      

(3)alter  修改 数据库对象

----- 修改表的结构:----- 增加一列:

----- 增加一列(放在最前面)

----- 增加一列(放在sex列的后面)

----- 删除一列:

----- 修改一列:

(4)字段类型

#1——整数类型  int

#2——浮点型   double(m,n)【m--一共的位数;n---小数点后的位数】

#3——字符串型   varchar(20)【对应Java的String型】

#4——时间日期   date/datetime 【时间】

(5)认识数据库表

 (6)约束

#1——约束的使用场合

#2——约束的种类(7)

#3——根据DDL建表语句里约束代码的位置,可以分为【约束从作用上可以分为两类:】

列级约束:

表级约束:

#4——使用约束

(1)6种约束使用展示

(2)创建数据库表

(3)创建表后,添加外键约束   

4,DCL —— 数据控制语言(Data Control Language)

(1)grant  授予用户某种权限

(2)revoke  回收授予的某种权限


 2,DML —— 数据操作语言(Data Manipulation Language)

           主要用于对数据库中的数据进行增加、修改和删除的操作。

(1)insert   增加 数据

insert into 表名(字段名,,,字段名)values(值,,,值) 

insert into 表名 values(值,,,值)

  • 一次添加1条:insert into 表 values(值,值,值)
  • 一次添加n条:insert into 表 values(值,值,值),(值,值,值),(值,值,值)

------ 在t_student数据库表中插入数据

insert into t_student values (1,'张三','男',18,'2022-5-8','软件1班','123@126.com');
insert into t_student values (10010010,'张三','男',18,'2022-5-8','软件1班','123@126.com');
insert into t_student values (2,'张三','男',18,'2022.5.8','软件1班','123@126.com');
insert into t_student values (2,"张三",'男',18,'2022.5.8','软件1班','123@126.com');
insert into t_student values (7,"张三",'男',18,now(),'软件1班','123@126.com');
insert into t_student values (9,"易烊千玺",'男',18,now(),'软件1班','123@126.com');
insert into t_student (sno,sname,enterdate) values (10,'李四','2023-7-5');

(2)delete  删除 数据       truncate  删除表和数据,再创建一个新表

delete from 表名 where 条件 and/or 条件

delete from t_student 【慎用】

delete from t_student where sno = 2;
truncate table t_student;
  • delete 和 truncate 的区别
  1. delete为数据操作语言DML;truncate为数据定义语言DDL。
  2. delete操作是将表中所有记录一条一条删除直到删除完;truncate操作则是保留了表的结构,重新创建了这个表,所有的状态都相当于新表。因此,truncate操作的效率更高。
  3. delete操作可以回滚;truncate操作会导致隐式提交,因此不能回滚(在第十章中会讲解事务的提交和回滚)。
  4. delete操作删除表中记录后,再次向表中添加新记录时,对于设置有自增约束字段的值会从删除前表中该字段的最大值加1开始自增;truncate操作则会重新从1开始自增。 
  5. delete操作执行成功后会返回已删除的行数(如删除4行记录,则会显示“Affected rows:4”);截断操作不会返回已删除的行量,结果通常是“Affected rows:0”。

  •  删除数据的三种方式 以及之间的区别
  1. delete  from 表  === 只删除数据,保留表    ;可以回滚   ; 添加数据时,下标继续累加。【DML数据操作语言】
  2. truncate table 表 === 先把表以及表里的数据都删掉。然后再创建一个新表  ; 不能回滚  ;添加数据时,下标从新开始。【DDL数据定义语言】
  3. drop table 表 ===删除表以及表里的数据  ;【DDL数据定义语言】

(3)update  修改 数据

update 表名 set  字段=值,字段=值  where 条件 and/or 条件
update 表名 set  字段=值,字段=值 【慎用】

-----修改表中数据

update t_student set sex = '女' ;
update t_student set sex = '男' where sno = 10 ;
UPDATE T_STUDENT SET AGE = 21 WHERE SNO = 10;
update t_student set CLASSNAME = 'java01' where sno = 10 ;
update t_student set CLASSNAME = 'JAVA01' where sno = 9 ;
update t_student set age = 29 where classname = 'java01';

注意事项

  • 关键字,表名,字段名不区分大小写
  • 默认情况下,内容不区分大小写
  • 删除操作from关键字不可缺少
  • 修改,删除数据别忘记加限制条件 

3,DDL —— 数据定义语言(Data Definition Language)

          主要用针对是数据库对象(数据库、表、索引、视图、触发器、存储过程、函数)进行

建、修改和删除操作。

(1)create  创建 数据库对象

create  table '表名'(

      '字段名'  类型(长度)约束  注释,

      '字段名'  类型(长度)约束  注释,

      '字段名'  类型(长度)约束  注释

);

 创建表的时候,同时添加多条数据:
            create table t_emp
            as
            select e.*,d.dname,d.loc 
            from emp e,dept d where e.deptno=d.deptno

-- 查看表的结构:展示表的字段详细信息
desc t_student; 
-- 查看表中数据:
select * from t_student;
-- 查看建表语句:
show create table t_student;

(2)drop  删除 数据库对象      

drop  table  '表名';

drop table t_student;

(3)alter  修改 数据库对象

alter  table '表名';

----- 修改表的结构:
----- 增加一列:
alter table t_student add score double(5,2) ; -- 5:总位数  2:小数位数 
update t_student set score = 123.5678 where sno = 1 ;
----- 增加一列(放在最前面)
alter table t_student add score double(5,2) first;
----- 增加一列(放在sex列的后面)
alter table t_student add score double(5,2) after sex;
----- 删除一列:
alter table t_student drop score;
----- 修改一列:

-- modify修改是列的类型的定义,但是不会改变列的名字

-- change修改列名和列的类型的定义

alter table t_student modify score float(4,1); -- modify修改是列的类型的定义,但是不会改变列的名字
alter table t_student change score score1 double(5,1); -- change修改列名和列的类型的定义

(4)字段类型

#1——整数类型  int

MySQL支持选择在该类型关键字后面的括号内指定整数值的显示宽度(例如,INT(4))。显示宽度并不限制可以在列内保存的值的范围,也不限制超过列的指定宽度的值的显示
主键自增:不使用序列,通过auto_increment,要求是整数类型 

#2——浮点型   double(m,n)【m--一共的位数;n---小数点后的位数】

需要注意的是与整数类型不一样的是,浮点数类型的宽度不会自动扩充。 score double(4,1)
 score double(4,1)--小数部分为1位,总宽度4位,并且不会自动扩充。 

#3——字符串型   varchar(20)【对应Java的String型】

CHAR 和  VARCHA 类型相似,均用于存于较短的字符串,主要的不同之处在于存储方式。CHAR类型长度固定,VARCHAR类型的长度可变。

因为VARCHAR类型能够根据字符串的实际长度来动态改变所占字节的大小,所以在不能明确该字段具体需要多少字符时推荐使用VARCHAR类型,这样可以大大地节约磁盘空间、提高存储效率。

CHAR和VARCHAR表示的是字符的个数,而不是字节的个数 。

注意事项

  • int  宽度是显示宽度,如果超过,可以自动增大宽度 int底层都是4个字节
  • 时间的方式多样  '1256-12-23'  "1256/12/23"  "1256.12.23"
  • 字符串不区分单引号和双引号
  • 如何写入当前的时间  now() , sysdate() , CURRENT_DATE()
  • char varchar 是字符的个数,不是字节的个数,可以使用binary,varbinary表示定长和不定长的字节个数。
  • 如果不是全字段插入数据的话,需要加入字段的名字
     
#4——时间日期   date/datetime 【时间】

TIMESTEMP类型的数据指定方式与DATETIME基本相同,两者的不同之处在于以下几点:
(1) 数据的取值范围不同,TIMESTEMP类型的取值范围更小。
(2) 如果我们对TIMESTAMP类型的字段没有明确赋值,或是被赋与了NULL值,MySQL会自动将该字段赋值为系统当前的日期与时间。
(3) TIMESTEMP类型还可以使用CURRENT_TIMESTAMP来获取系统当前时间。
(4) TIMESTEMP类型有一个很大的特点,那就是时间是根据时区来显示的。例如,在东八区插入的TIMESTEMP数据为2017-07-11 16:43:25,在东七区显示时,时间部分就变成了15:43:25,在东九区显示时,时间部分就变成了17:43:25。   

(5)认识数据库表

  • 表(Table)是数据库中数据存储最常见和最简单的一种形式,
  • 数据库可以将复杂的数据结构用较为简单的二维表来表示。
  • 二维表是由行和列组成的,分别都包含着数据。如图

  • 每个表都是由若干行和列组成的,在数据库中表中为记录的行被称为记录,表中的列被称为是这些记录的字段。
  • 字段是表里的一列,用于保存每条记录的特定信息。如上表所示的学生信息表中的字段包括“学号”、“姓名”、“性别”和“年龄”。数据表的一列包含了某个特定字段的全部信息。 

 (6)约束

  • 为防止不符合规范的数据存入数据库,在用户对数据进行插入、修改、删除等操作时,
  • MySQL提供了一种机制来检查数据库中的数据是否满足规定的条件,以保证数据库中数据的准确性和一致性,这种机制就是完整性约束。  

完整性----数据的准确性

#1——约束的使用场合

                DDL建表语句里。

#2——约束的种类(7)

#3——根据DDL建表语句里约束代码的位置,可以分为【约束从作用上可以分为两类:
列级约束:
  • 约束代码直接写在  字段名后面
  • 包含在列定义中,直接跟在该列的其它定义之后 ,用空格分隔;不必指定列名;

————非空,唯一,默认值,自增,检查

表级约束:
  • 约束代码脱离字段,单独一行存在
  • 可以约束表中任意一个或多个字段。与列定义相互独立,不包含在列定义中;与定义用‘,’分隔;必须指出要约束的列的名称;

————主键,外键,检查

缩写约束条件约束描述(作用)表级约束/列级约束
PK主键    primary   key约束字段的值可唯一地标识对应的记录

单字段主键的添加:

表级约束   列级约束;

多字段主键的添加:

表级约束

NK非空    not null约束字段的值不能为空

单字段或多个字段非空约束的添加:

列级约束

(非空约束无表级约束)

UK唯一     unique约束字段的值是唯一的

单字段或多个字段唯一约束的添加:

表级约束  列级约束

检查     check限制某个字段的取值范围表级约束  列级约束
默认值     default约束字段的默认值

单字段或多个字段约束的添加:

列级约束

自增    auto_increment约束字段的值自动递增   
外键    foreign   key约束表与表之间的关系

  • 使用主键约束可以快速查找表中的记录。就像人的身份证、学生的学号等等,设置为主键的字段取值不能重复(唯一),也不能为空(非空),否则无法唯一标识一条记录。

  • 设置了非空约束的字段,在插入的数据为NULL时,数据库会提示错误,导致数据无法插入。

  •  一张表中只能有一个自增长字段,并且该字段必须定义了约束(该约束可以是主键约束、唯一约束以及外键约束),如果自增字段没有定义约束,数据库则会提示“Incorrect table definition; there can be only one auto column and it must be defined as a key”错误。
  • 由于自增约束会自动生成唯一的ID,所以自增约束通常会配合主键使用,并且只适用于整数类型。一般情况下,设置为自增约束字段的值会从1开始,每增加一条记录,该字段的值加1

  • 外键约束(FOREIGN KEY,缩写FK)是用来实现数据库表的参照完整性的。
  • 外键约束可以使两张表紧密的结合起来,特别是针对修改或者删除的级联操作时,会保证数据的完整性。
  • 外键是指表中某个字段的值依赖于另一张表中某个字段的值,而被依赖的字段必须具有主键约束或者唯一约束。被依赖的表我们通常称之为父表或者主表,设置外键约束的表称为子表或者从表。
#4——使用约束
(1)6种约束使用展示
create table t_student(sno int(6) primary key auto_increment, sname varchar(5) not null, sex char(1) default '男' check(sex='男' || sex='女'),age int(3) check(age>=18 and age<=50),enterdate date,classname varchar(10),email varchar(15) unique
);
(2)创建数据库表

    ——constraint   约束关键字

create table t_student(sno int(6) auto_increment, sname varchar(5) not null, sex char(1) default '男',age int(3),enterdate date,classname varchar(10),email varchar(15),constraint pk_stu primary key (sno),  -- pk_stu 主键约束的名字constraint ck_stu_sex check (sex = '男' || sex = '女'),constraint ck_stu_age check (age >= 18 and age <= 50),constraint uq_stu_email unique (email)

—— 在创建表以后添加约束:

-- 创建数据库表:
create table t_student(sno int(6), sname varchar(5) not null, sex char(1) default '男',age int(3),enterdate date,classname varchar(10),email varchar(15)
);-- 在创建表以后添加约束:
alter table t_student add constraint pk_stu primary key (sno) ; -- 主键约束
alter table t_student modify sno int(6) auto_increment; -- 修改自增条件
alter table t_student add constraint ck_stu_sex check (sex = '男' || sex = '女');
alter table t_student add constraint ck_stu_age check (age >= 18 and age <= 50);
alter table t_student add constraint uq_stu_email unique (email);
(3)创建表后,添加外键约束   

    ————前者关联后者

alter table emp add CONSTRAINT fk_emp_deptno FOREIGN key (deptno) REFERENCES dept(deptno)

4,DCL —— 数据控制语言(Data Control Language)

          用来授予或回收访问 数据库的权限。

(1)grant  授予用户某种权限

(2)revoke  回收授予的某种权限


http://www.mrgr.cn/news/75172.html

相关文章:

  • Visual Studio 2022 安装
  • 免费,WPS Office教育考试专用版
  • Linux kernel 堆溢出利用方法(二)
  • 关于Unity使用LookAt时为什么不能旋转
  • Spring学习笔记_37——@RequestMapping衍生注解
  • Ceph后端两种存储引擎介绍
  • Spring Security概述
  • 基于树莓派的日志抓取工具制作
  • 代理通讯链实现内网通讯
  • 探秘 RPC:揭开远程过程调用的实现原理
  • 如何在python中模拟重载初始化函数?
  • 下载|阿里云等联合编写的《2024大模型典型示范应用案例集》发布
  • 「Mac玩转仓颉内测版10」PTA刷题篇1 - L1-001 Hello World
  • Jdbc学习笔记(四)--PreparedStatement对象、sql攻击(安全问题)
  • 联丰策略炒股股票交易市场券商股,盘中突然拉升
  • 25京考考试时间已确定,速速查收!
  • 时序论文19|ICML24 : 一篇很好的时序模型轻量化文章,用1k参数进行长时预测
  • Linux系统编程多线程之条件变量和信号量讲解
  • java八股-垃圾回收机制-垃圾回收算法,分代回收,垃圾回收器
  • 精灵图(十八课)
  • RHCE web解析、dns配置、firewalld配置实验
  • 人工智能技术的发展历程和现状
  • 基于Spring Boot+Vue的多媒体素材管理系统的设计与实现
  • 多模态Embedding不愧是CVPR和NIPS的共同选择!这发文思路真的需要好好学习一下!
  • c语言学习16按键控制流水灯
  • 闯关leetcode——3178. Find the Child Who Has the Ball After K Seconds