建表属于 DDL 语句,DDL 语句包括:create、drop、alter…
create table 表名(字段1 数据类型, 字段2 数据类型 ... );
表名:建议以 t_ 或者 tbl_ 开始,可读性强。见名知意。
字段名:见名知意。
表名和字段名都属于标识符。
最长 255
可变长度的字符串。
比较智能,节省空间。
会根据实际的数据长度分配空间。
最长 255
定长字符串
不管实际的数据长度是多少。
分配固定长度的空间去存储数据。
使用不恰当的时候,可能会导致空间的浪费。
varchar 动态的分配空间,速度慢
char 固定的分配空间,速度快 具体的选择根据实际情况来选择 比如:姓名:varchar;性别:char
最长 11
数字中的整数型。
等同于 java 中的 int。
数字中的长整型。
等同于 java 中的 long 。
单精度浮点型数据。
双精度浮点型数据。
短日期类型。
长日期类型。
字符大对象。
最多可以存储 4G 的字符串。
比如:存储一篇文章,存储一个说明。
超过 255 个字符的都要采用 CLOB 字符大对象来存储。
二进制大对象。
专门用来存储图片、声音、视频等流媒体数据。
往 BLOB 类型的字段上插入数据的时候,例如插入一个图片、视频等。
你需要使用 IO 流才行。
学号、姓名、年龄、性别、邮箱地址
1 |
mysql> create table t_student (no int, name varchar(32), sex char(1), age int(3), email varchar(255)); |
语法格式
insert into 表名(字段名1, 字段名2, 字段名3...) values(值1, 值2, 值3...);
注意:字段名和值要一一对应。(数量要对应。数据类型要对应。)
1 |
mysql> insert into t_student(no, name, sex, age, email) values(1, 'zhangsan', 'm', 20, 'zhangsan@123.com'); |
1 |
mysql> insert into t_student(no, name, sex, age, email) values(1, 'lisi', 'm', 20, 'lisi@123.com'); |
1 |
mysql> insert into t_student(no) values(3); |
没有给其他字段指定值的时候,默认值是 null
insert 语句中的字段名可以省略,省略的话默认是全部写上了,所以按照一一对应原则,values 中的值要全部写上。
format:数字格式化
format(数字, '格式')
str_to_date:将字符串 varchar 类型转换成 date 类型
1 |
str_to_date('字符串日期', '日期格式') |
date_format:将 date 类型转换成具有一定格式的 varchar 类型
1 |
mysql> create table t_user(id int, name varchar(32), birth date); |
插入数据?
1 |
mysql> insert into t_user(id, name, birth) values(1, 'zhangsan', str_to_date('01-01-1990', '%d-%m-%Y')); |
str_to_date 将字符串类型的日期转换成 date 类型的日期
但是!!!如果提供的字符串日期格式是%Y_%m-%d的话,就不需要str_to_date函数了,mysql会自动转换。
1 |
mysql> insert into t_user(id, name, birth) values(2, 'lisi', '1990-10-01'); |
date:短日期,只包括 年月日
dateime:长日期,包括 年月日时分秒
短日期默认格式:%Y-%m-%d
长日期默认格式:%Y-%m-%d %h:%i:%s
在 mysql 中 now() 函数可以获取系统当前时间,是长时间格式
语法格式
update 表名 set 字段1=值1, 字段2=值2 ... where 条件;
注意:如果没有限制条件,会导致所有的数据全部进行更新
1 |
mysql> update t_user set name = 'jack', birth = '2022-9-2' where id = 2; |
1 |
mysql> select * from t_user; |
语法格式
delete from 表名 where 条件;
注意:如果没有条件,整张表的数据都会被删除。
1 |
mysql> delete from t_user where id = 2; |
1 |
mysql> delete from t_user; |
原理:
将一个查询结果当做一张表新建!!! 这个可以完成表的快速复制!!! 表创建出来,同时表中的数据也存在了!!!
1 |
mysql> create table emp2 as select * from emp; |
delete 语句(DML)删除数据的原理?
truncate 语句(DDL)删除数据的原理?
truncate table 表名;