【MySql】MySQL基本知识点2

表的创建(建表)

1.建表的语法格式:(建表属于DDL语句,DDL包括: create drop alter )

create table 表名 (

​ 字段名1 数据类型 ,

​ 字段名2 数据类型,

​ 字段名3 数据类型

);

表名:建议以t_ 或者 tb1_开始,可读性强。见名如意。

字段名:见名如意。

表名和字段名都属于标识符。

2.关于mysql中的数据类型?

varchar(最长255): 可变长度字符串。(比较智能,节省空间,根据实际的数据长度动态分配空间)

​ 优点:节省空间

​ 缺点:需要动态分配空间,速度慢。

char(最长255) :定长字符串(不管实际的数据长度是多少。 分配固定长度的空间去存储数据,使用不当的时候可能会导致空间的浪费)

​ 优点:不需要动态分配空间,速度快。

​ 缺点:使用不当可能会导致空间的浪费。

varchar 和 char我们应该怎么选择?

性别字段? 因为性别是固定长度的字符串,所以选择char;

姓名字段? 每个人的姓名长度不同,所以选择varchar。

int (最长11):数字中的整数型 。等同于java的int。

bigint:数字中的长整型。等同于Java中的long。

float: 单精度浮点数数据

double : 双精度浮点数数据

data : 短日期类型

datatime:长日期类型

clob(Character Large Object):字符大对象。最多可以存储4G的字符串。比如:存储一篇文章,存储一个说明,超过255个字符的都要采取clob字符大对象来存储。

blob(Binary Large Object) :二进制大对象。 专门用来存储图片,声音,视频等;流媒体数据。往blob类型的字段上插数据的时候,例如差一个图片,视频等,你需要使用IO流才行。

3.删除表

​ drop table 表名;//当这张表不存在的时候会报错!!

​ drop table if exists 表名;//如果存在就删除

4.插入数据insert(DML)

insert into 表名(字段名1,字段名2,字段名3…)

values (值1,值2,值3),(第二条记录),(第三题条记录);

字段名和值要一一对应,数量要对应。数据类型也要一一对应。

insert 语句但凡执行成功了,必然会多一条记录。没有给其他字段定值的话,默认值是NULL。insert 语句中的字段名可以省略。

insert 加入日期

格式化数字:format(数字,‘格式’)

str_to_date:将字符串varchar类型转换成date类型

date_format:将date类型转换成具有一定格式的varchar类型。

str_to_date函数可以将字符串转换成日期类型date类型数据。

str_to_date(‘字符串日期’,日期格式)

MySQL 的日期格式:%Y 年 %m 月 %d 日 %h 时 %i 分 %s 秒

date_format函数可以将日期类型转换成特定格式的字符串。通常使用在查询日期方面,设置展示的日期格式。

date_format(日期类型数据,’日期格式‘)

5.date和datetime俩个类型的区别?

date是短日期:只包括年月日信息。

datetime是长日期:包括年月日时分秒信息。

mysql短日期默认格式:%Y-%m-%d

mysql长日期默认格式:%Y-%m-%d %h:%i:%s

mysql获取系统当前时间:now() 函数,并且获取时间带有:时分秒信息!!!是datetime类型的。

6.修改update(DML)

语法格式:

update 表名

set 字段名1 = 值1 ,字段名2 = 值2 ,字段名3 = 值3…

where 条件;

没有条件会导致数据全部更新。

7.删除数据 delete (DML)

语法格式: delete from 表名 where 条件;

注意:没有条件,整张表的数据会被删除!

8.快速创建一张表?

create table emp2 as select * from emp;

原理:将一个查询结果当作一张表新建! 这个可以完成表的快速复制!表建出来,同时表中的数据也存在了!!

9.将查询结果插入到一张表中?insert相关!

insert into dept_bak select * from dept;

10.快速删除表中的数据?

delete from dept_bak;//这种删除数据的方式比较慢。

delete语句删除数据原理?

表中的数据被删除了,但是这个数据在硬盘上的真实存储空间不会被释放!!这种删除的缺点是:删除效率比较低。优点是:支持回滚,后悔了 ,后悔了可以再恢复数据!!

rollback;

select * from dept_bak;

truncate 语句删除数据原理:这种删除效率比较高,表被一次截断,物理删除。缺点:不支持回滚。优点:快速。

用法:truncate table dept_bak;(这种操作属于DDL操作)

非常大的表的时候。删除的时候选择使用delete,也许需要执行1个小时才能删除完,效率较低。可以选择使用truncate删除表中的数据。只需要不到1秒钟的时间就删除结束,效率较高。但是在使用truncate之前,必须仔细询问客户是否真的要删除,并警告删除之后不可恢复。

truncate 是删除表中的数据,表还在!

删除表操作?drop table 表名;//这不是删除表中的数据,是把表删除。

约束

1.什么是约束?

约束(constraint):在创建表的时候,我们可以给表中的字段加上一些约束,来保证这个表数据的完整性,有效性!!

2.约束包括那些?

非空约束:not null,唯一性约束:unique,主键约束:primary key ,外键约束:foreign key,检查约束:check(mysql 不支持,Oracle支持)

3.非空约束:not null 约束的字段不能为null。

在MySQL中如何执行脚本文件? mysql> source 路径

4.唯一性约束:unique

唯一性约束unique约束的字段不能重复,但是可以为null。

5.俩个字段联合起来具有唯一性

unique(字段1名,字段2名)

6.unique 和not null 联合

​ create table 表名 (

​ 字段名1 数据类型 not null unique,

​ 字段名2 数据类型,

​ 字段名3 数据类型

);

在mysql当中,如果一个字段同时被not null 和unique 约束的话,该字段自动变成主键字段。(注意:Oracle中不一样!)

7.主键约束(primary key)

主键约束相关术语?

​ 主键约束就是一种约束。该字段上添加了主键约束,这样的字段叫做主键字段。主键字段中每一个值都叫主键值。

什么是主键?

主键值是每一行记录的唯一标识。

create table 表名 (

​ 字段名1 数据类型 primary key,//列级约束

​ 字段名2 数据类型,

​ 字段名3 数据类型,

//primary key (字段1)表级约束

);

表级约束主要是给多个字段联合起来添加约束,id和name联合起来作主键:复合主键。

create table t_vip (

​ id int ,

​ name varchar(255),

​ email varchar(255),

​ primary key(id,name)

);

一张表主键约束只能有一个!主键一般都是定长的,不建议varchar来做主键。

主键值可使用 auto_increment表示自增,从1开始以1递增。

create table t_vip (

​ id int primary key auto_increment ,

​ name varchar(255),

​ email varchar(255),

​ primary key(id,name)

);

8.外键约束(foreign key )

外键约束,一种约束。外键字段,该字段添加上了外键约束。外键值,外键字段当中的每一个值。

删除表的顺序:先删子,再删父;

创建表的顺序:先创建父,在创建子;

删除数据的顺序:先删子表,再删父表;

插入数据的顺序:先插入父,再插入子。

子表中的外键引用的父表中的某个字段,被引用的这个字段必须是主键吗?答:不一定是主键,但至少具有unique约束。外键可以为null。

foreign key (外键) references 外表名(外键在外表中的名)

存储引擎

1.什么是存储引擎?有什么用?

存储引擎是MySQL中特有的一个术语,其他数据库没有。(oracle中有,但是不叫这个名字)实际上存储引擎是一个表存储/组织数据的方式。不同的存储引擎,表存储数据的方式不同。

2.怎么给表添加/指定 ”存储引擎 “呢?

show create table 表名; 展示当时建表的语句

可以在建表的时候给表指定存储引擎。

在建表的时候可以在最后小括号“)”的右边使用:

ENGINE来指定存储引擎。CHARSET来指定这张表的字符编码方式。

MySQL 默认的存储引擎是:InnoDB

MySQL 默认的字符编码方式是:utf_8

engine = innoDB default charset = utf_8;

3.怎么查看mysql支持哪些存储引擎?

show engines \G

mysql 支持九大存储引擎,当前版本不同情况不同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值