Mysql数据库(四)
文章目录
DDL语句
DDL语句包括:创建create、删除drop、更新alter。
一、mysql中的数据类型
数据类型 | 长度 | 说明 | 举例 |
---|---|---|---|
varchar | 最长255 | 可变长度字符串,会根据实际的数据长度动态分配空间,速度慢,但节省空间 | varchar(10) |
char | 最长255 | 固定长度字符串,分配固定长度的空间存储数据,速度快,但可能导致空间浪费 | char(10) |
int | 11 | 数字中的整数型 | int(3) |
bigint | \ | 数字中的长整形 | |
float | \ | 单精度浮点型 | |
double | \ | 双精度浮点型 | |
date | \ | 短日期类型,只包括年月日信息。 | %Y-%m-%d |
datetime | \ | 长日期类型,包括年月日时分秒信息。 | %Y-%m-%d %h:%i:%s |
clob | 4G | Character 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数据库(五)四大约束