Mysql数据库(四)

Mysql数据库(四)

DDL语句

DDL语句包括:创建create、删除drop、更新alter。

一、mysql中的数据类型

数据类型长度说明举例
varchar最长255可变长度字符串,会根据实际的数据长度动态分配空间,速度慢,但节省空间varchar(10)
char最长255固定长度字符串,分配固定长度的空间存储数据,速度快,但可能导致空间浪费char(10)
int11数字中的整数型int(3)
bigint\数字中的长整形
float\单精度浮点型
double\双精度浮点型
date\短日期类型,只包括年月日信息。%Y-%m-%d
datetime\长日期类型,包括年月日时分秒信息。%Y-%m-%d %h:%i:%s
clob4GCharacter Large OBject: CLOB字符大对象,最多可存储4G的字符串;可存储文章、简介等。超过255个字符的,都要使用CLOB来存储。
blob\Binary Large OBject,专门存储图片、声音、视频等流媒体数据。存储 需要使用IO流存储。

二、表的创建create

创建表

表名:建议以t_或者 tbl_开始,可读性强。

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

数据库中的命名规范:

所有的标识符全部小写,单词之间使用下划线进行衔接。

#建表的语法格式
create table 表名(字段名1 数据类型, 字段名2 数据类型, 字段名3 数据类型...;
create table 表名(
    字段名1 数据类型, 
    字段名2 数据类型, 
    字段名3 数据类型
    ...;
#创建一个学生表
create table t_student(
    no int,
    name varchar(32),
    sex char(1),
    age int(3),
    email varchar(255)
);
#创建表时,可以使用default字段指定默认值
create table t_student(
    no int,
    name varchar(32),
    sex char(1) default 'm', //default指定默认值
    age int(3),
    email varchar(255)
);

快速创建表(复制)

将一个查询结果当做一张表新建,可以完成表的快速复制。

表创建出来,同时表中的数据也存在了!!!

#将as后面的查询结果当做一张表新建
create table emp2 as select * from emp;
create table mytable as select empno, ename from emp where job = 'MANAGER';

#也可以将查询结果插到已存在的表中,但是查询结果要符合表的结构,否则失败。

三、表的删除drop

#表不存在时报错
drop table t_student;

#表存在时删除,不存在不报错
drop table if exists t_student;

四、表的修改alter(不常用,暂时缺失)

表结构的增删改:添加、删除、修改表中的字段。


DML语句

DML语句:表中数据insert 增、 delete 删、 update 改

一、插入数据insert

**注意:**插入语句,字段名省略时,等于都写上了,所以值要全部写上,并且顺序不能改变。

#语法格式
insert into 表名(字段名1, 字段名2, 字段名3...) values(1,2,3...);
#插入数据
#数量要对应,数据类型要对应
insert into t_student(no, name, sex, age, email) values(1, 'zhangsan', 'm', 20, 'zhangsan@123.com');
insert into t_student(email, name, sex, age, no) values('lisi@123.com', 'lisi', 'f', 19, 2);

#只写部分字段是,未赋值字段为NULL
insert into t_student(no) values(3);
#字段名省略时,等于都写上了,所以值要全部写上,并且顺序不能改变。
insert into t_student values(4, 'wangwu', 'f', 23, 'wangwu@123.com');

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XrmmWWG4-1632751818510)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210926200023449.png)]

插入日期

mysql的默认日期格式:%Y-%m-%d %h:%i:%s 年-月-日 时:分:秒

1、数字格式化 format
#查询员工薪资,并把薪资格式化(千分位)
select ename, format(sal, '$999,999') as sal from emp;
2、字符串转换为日期 str_to_date

1、将字符串varchar类型转换成date类型;

2、通常使用在插入数据需要一个日期类型的数据时。

3、日期如果字符串类型格式是:%Y-%m-%d,就不需要使用str_to_date函数转换,底层自动转换

drop table if exists t_user;
#创建一个用户表
//生日可以使用date类型
create table t_user(
    id int,
    name varchar(32),
    birth date
);
#插入数据,使用str_to_date函数将字符串转换为日期类型date,否则报错
insert into t_user(id, name, birth) values(1, 'zhangsan', str_to_date('01-10-1990', '%d-%m-%Y')); //1990年10月1日

#日期如果字符串类型格式是:%Y-%m-%d,就不需要使用str_to_date函数转换,底层自动转换
insert into t_user(id, name, birth) values(1, 'zhangsan', '1991-10-01');
3、日期转换为字符串 date_format

1、将date类型转换成具有一定格式的varchar字符串类型

2、查询的时候可以以某个特定的日期格式展示。

3、该函数通常在查询日期时使用,设置展示日期格式,用法:date_format(日期类型数据, '日期类型格式')

drop table if exists t_user;
#创建一个用户表
//生日可以使用字符串char类型 
create table t_user(
    id int,
    name varchar(32),
    birth char(10)
);
#查询,使用date_format展示日期格式 %m/%d/%Y
select id, name, date_format(birth, '%m/%d/%Y') from t_user;

4、获取系统当前时间 now()

now()获取的时间带有时分秒信息

drop table if exists t_user;
create table t_user(
    id int,
    name varchar(32),
    birth date,
    create_time datetime
);
#插入数据,用now()获取当前时间
insert into t_user(id, name, birth, create_time) values(1, 'zhangsan', '1990-10-01', now());

一次插入多条数据

#语法
insert into 表名(字段名1, 字段名2, 字段名3) values(),(),();
insert into t_user(id, name, birth, create_time) 
values(1, 'zs', '1988-02-03', now()),
	(2, 'ls', '1999-04-12', now()),
	(3, 'ww', '2000-07-23', now());

二、修改数据 update

注意:没有条件限制会导致所有数据全部更新。

#语法格式
update 表名 set 字段名1=1, 字段名2=2, 字段名3=3... where 条件;
#更新数据
update t_user set name = 'jack', birth = '2000-10-11' where id =2;

#更新所有----不加限制修改所有数据
update t_user set name = 'abc';

三、删除数据 delete、truncate

delete删除数据

delete删除数据属于DML操作。

**delete删除数据原理:**表中的数据被删除,但是改数据在硬盘上的真是存储空间不会被释放!!!

缺点:删除小效率比较低。

优点:支持回滚(可以恢复数据)。

如果没有条件,删除表中所有数据!!!

#语法格式
delecte from 表名 where 条件;
#删除数据
delete from t_user where id =2;
#注入数据
insert into t_user(id) values(2);
#删除所有数据
delete from t_user;

truncate删除数据(快速删除表中数据)

truncate语句删除数据是DDL操作。

truncate删除数据原理:删除效率比较高,表被一次截断,物理删除。

缺点:不支持回滚。

优点:速度快。

#truncate 删除数据用法
truncate table 表名;

Mysql数据库(三) ------------------------------------------------------------------------------ Mysql数据库(五)四大约束

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值