目录
② str_to_date:将字符串varchar类型转换成date类型
一、MySQL数据类型
二、DDL(数据定义语言)
1、表的创建 create
建表的语法形式:
create table 表名(
字段名1 数据类型,
字段名2 数据类型,
字段名3 数据类型
);
案例:建立一张学生表(学号、姓名、性别、年龄、邮箱)
create table t_student(
no int,
name varchar(32),
sex char(1),
age int(3),
email varchar(255)
);
2、删除表 drop
如果不存在该表,会报错;如果要删除的表存在,则会删除。
drop table t_student;
3、修改 alter
(测试不需要学习修改表的结构,工作量大,属于开发的工作范畴)
4、快速删除表中数据 truncate
(属于DDL操作)
删除表:drop (删除整个表)
删除数据:delete,truncate (只删除数据,表还存在)
delete 和 truncate 删除数据的区别
delete:
- 表中的数据被删除了,但是这个数据在硬盘上的真实存储空间不会被释放!!!
- 优点:支持回滚,后悔了可以再恢复数据!!!
- 缺点:删除效率比较低
truncate:
- 效率比较高,删除数据是物理删除。
- 优点:快速。
- 缺点:不支持回滚
truncate table dept_bak;
三、DML(数据操作语言)
1、插入数据 insert
语法格式:
insert into 表名(字段名1,字段名2,字段名3...) values(值1,值2,值3);
注意:
- insert语句但凡是执行成功了,那么必然会多一条记录。
- 没有给其它字段指定值的话,默认值是NULL
insert into t_student(no,name,sex,age,email) values(1,'zhangfei','m',20,'zhangfei@123.com');
insert into t_student(no,name,sex,age,email) values(2,'xiaojuan','w',19,'xiaojuan@123.com');
insert into t_student(name) values('xiaoming');
insert into t_student(no) values(4);
注意:insert语句前面的字段名可以省略,字段名省略代表都写上了,所以值也要都写上。
insert into t_student value(5,'lily','w',18,'lily@123.com');
① 数字格式化:format
语法:format(数字, '格式')
select ename,format(sal, '$999,999') as sal from emp;
② str_to_date:将字符串varchar类型转换成date类型
注意:数据库中的有一条命名规范:
所有的标识符都是全部小写,单词和单词之间使用下划线进行衔接。
mysql的日期格式:
- %Y 年
- %m 月
- %d 日
- %h 时
- %i 分
- %s 秒
mysql默认的日期格式:'%Y-%m-%d'
mysql> create table t_user(
-> id int,
-> name varchar(32),
-> birth date);
Query OK, 0 rows affected (0.02 sec)
mysql> insert into t_user(id,name,birth) values(1,'lily','2022-01-01');
Query OK, 1 row affected (0.00 sec)
mysql> insert into t_user(id,name,birth) values(1,'lisa','01-02-2022');
ERROR 1292 (22007): Incorrect date value: '01-02-2022' for column 'birth' at row 1
mysql> insert into t_user(id,name,birth) values(1,'lisa',str_to_date('01-02-2022','%d-%m-%y'));
ERROR 1292 (22007): Truncated incorrect date value: '01-02-2022'
mysql> insert into t_user(id,name,birth) values(1,'lisa',str_to_date('01-02-2022','%d-%m-%Y'));
Query OK, 1 row affected (0.00 sec)
查询的时候可以以某个特定的日期格式展示吗?可以
③ date_format:
- 将date类型转换成具有一定格式的varchar字符串类型。
- 这个函数通常使用在查询日期方面。设置展示的日期格式。
- 语法格式:date_format(日期类型数据, '日期格式')
mysql> select id,name,date_format(birth,'%d/%m/%Y') as birth from t_user;
+------+------+------------+
| id | name | birth |
+------+------+------------+
| 1 | lily | 01/01/2022 |
| 1 | lisa | 01/02/2022 |
+------+------+------------+
2 rows in set (0.00 sec)
date 和 datetime 两种类型的区分
- date 是短日期类型 (默认格式:%Y-%m-%d)
- datetime 是长日期类型 (默认格式:%Y-%m-%d %h:%i:%s)
在mysql当中怎么获取系统当前时间?
now() 函数,而且获取时间类型是datetime类型的。
insert into t_user(id,name,birth,nowtime) values(1,'lily','2019-01-01',now());
insert 可以一次添加多条数据
insert into t_user(id,name,birth,nowtime) values
(2,'jay','2017-11-12',now()),
(3,'amy','2018-06-10',now()),
(4,'john','2020-07-09',now());
2、删除数据 delete
语法格式:
delete from 表名 where 条件;
delete from t_user where id=2;
3、修改 update
语法格式:
update 表名 set 字段名1=值1,字段名2=值2,字段名3=值3... where 条件;
注意:没有条件限制会导致所有数据都更新。
update t_user set name='john',birth='2012-10-1' where id=2;
四、快速建立新表
1、复制表格
create table t_emp as select * from emp;
2、将查询结果存储为新表
create table mytable as select empno,ename from emp where job = 'MANAGER';