152 lines
136 KiB
Markdown
152 lines
136 KiB
Markdown
---
|
||
date: 2025-01-19
|
||
tags:
|
||
- Notes
|
||
- MySql
|
||
lastUpdated: 2025-01-20T10:10:00
|
||
---
|
||
|
||
## 表的创建
|
||
|
||
建表语句:
|
||
|
||
```sql
|
||
Create tables 表名(
|
||
字段名1 数据类型,
|
||
字段名2 数据类型 default 默认值,
|
||
字段名3 数据类型,
|
||
。。。
|
||
);
|
||
```
|
||
|
||
关于MySQL当中字段的数据类型,(常用的):
|
||
|
||
| 类型 | 描述 |
|
||
| ---------------------------- | ------------------------------------------------------------ |
|
||
| Char(长度) | 定长字符串,存储空间大小固定,适合作为主键或外键【最长255】 |
|
||
| Varchar(长度) | 变长字符串,存储空间等于实际数据空间【最长255】 |
|
||
| double(有效数字位数,小数位) | 数值型 |
|
||
| Float(有效数字位数,小数位) | 数值型 |
|
||
| Int( 长度) | 整型 |
|
||
| bigint(长度) | 长整型【Java中Long】 |
|
||
| Date | 日期型年月日 |
|
||
| DateTime | 日期型年月日时分秒毫秒【对应Java中的java.sql.Date类型】 |
|
||
| time | 日期型时分秒 |
|
||
| BLOB | Binary Large OBject(二进制大对象)【存储图片,视频流媒体信息】 |
|
||
| CLOB | Character Large OBject(字符大对象)【存储大文本,可存储4G的字符串】 |
|
||
| 其它………………… | |
|
||
|
||
|
||
|
||
### char 和 varchar
|
||
|
||
char:
|
||
|
||
> 表示创建一个六个长度的字符空间,即使字符本身长度少于6,分配的空间依然是6;当长度超过指定的空间(6) 后,直接报错。
|
||
|
||
varchar:
|
||
|
||
> 也是创建一个长度是6的空间,长度超过指定长度依旧会进行报错,但是当长度小于指定时,**varchar会自动分配长度**【所以相对char效率较低】
|
||
|
||
|
||
|
||
> 当长度是固定的时,如:性别,生日(10位),日期(19位)。使用char效率更好;
|
||
>
|
||
> 当长度不固定时,如:自我介绍。可以使用varchar,可以提高存储效率。
|
||
|
||
|
||
|
||
BLOB数据不能直接进行传输,只能使用Java的io流进行传输,并且大文件一般放硬盘中,数据库中存储内存地址
|
||
|
||
|
||
|
||
表名在数据库中一般建议以:**t__ 或者 tbl__ 开始。**
|
||
|
||
|
||
|
||
## 插入数据
|
||
|
||
语法格式:
|
||
|
||
Insert into 表名(字段名1 ,字段名2 ,字段名3,。。。) values (值1 ,值2 ,值3,。。。)
|
||
|
||
要求:字段的数量和值的数量相同,并且数据类型要对应相同。
|
||
|
||
|
||
|
||
只指定一个数据其他不指定时,默认用NULL进行填充
|
||
|
||
|
||
|
||
一次插入多个数据:
|
||
|
||
Insert into 表名(字段名1 ,字段名2 ,字段名3,。。。) values
|
||
|
||
(值1 ,值2 ,值3,。。。),
|
||
|
||
(值1 ,值2 ,值3,。。。),
|
||
|
||
(值1 ,值2 ,值3,。。。);
|
||
|
||
|
||
|
||
插入一条数据:
|
||
|
||

|
||
|
||
|
||
|
||
注意:当一条insert语句执行成功后,表格中必然会多一条数据,不能再使用insert进行更改,即使这些数据中有些数据是NULL;后期只能使用update进行更新。
|
||
|
||
|
||
|
||
当不指定第一个() 中的内容时:第二个括号中的数据必须和表格中的数据配列顺序匹配,反之报错
|
||
|
||

|
||
|
||
|
||
|
||
## 插入日期
|
||
|
||
#### 第一种方法,插入的日期格式和显示的日期格式一致
|
||
|
||
```sql
|
||
insert into emp(empno, ename, job, mgr, hiredate, sal, comm, deptno) values(9997,'zhangsan','MANAGER', null, '1981-06-12',3000, 500, 10);
|
||
```
|
||
|
||
|
||
|
||

|
||
|
||
|
||
|
||
#### 第二种方法,采用str_to_date
|
||
|
||
```sql
|
||
insert into emp(empno, ename, job, mgr, hiredate, sal, comm, deptno) values(9996,'zhangsan','MANAGER',null,str_to_date('1981-06-12','%Y-%m-%d'),3000, 500, 10);
|
||
```
|
||
|
||
|
||
|
||

|
||
|
||
|
||
|
||
#### 第三种方法,添加系统日期(now())
|
||
|
||
```sql
|
||
insert into emp(empno, ename, job, mgr, hiredate, sal, comm, deptno) values(9995,'zhangsan','MANAGER',null,now() ,3000, 500, 10);
|
||
```
|
||
|
||
|
||
|
||
## 表的复制
|
||
|
||
```sql
|
||
Create table 表名 as DQL语句
|
||
```
|
||
|
||
|
||
|
||

|