69期-Java SE-031_MySQL-001-002 创建表、MySQL数据类型、数据的管理(数据库结构、数据表、数据)、SQL 函数

时间:2022-11-04 21:01:40

 

### 创建表

1、创建数据库

```sql
create database mstest default character set utf8 collate utf8_general_ci
```

2、创建数据表

```sql
create table user(
	id int,
	name varchar(11)
)
```

Java 数据类型:基本数据类型 byte short int long double float boolean char

​							引用类型

MySQL 数据类型

- 整数类型:tinyint(1个字节)、smallint(2个字节)、mediumint(3个字节)、int(4个字节)、bigint(8个字节)
- 一个字节 byte 8位的二进制数

- 浮点类型:float(4个字节)、double(8个字节)
- 日前和时间类型:datetime、date、timestamp、time、year
  - year(1个字节)取值范围 1901~2155
  - time(3个字节)取值范围 -838:59:59 ~ 838:59:59
  - date(3个字节)取值范围 1000-01-01 ~ 9999-12-31
  - datetime(8个字节)取值范围 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
  - timestamp(4个字节)表示 1970 年 1 月 1 号到现在的毫秒数
- 字符串类型:char、varchar、text
  - char(M) M 个字节
  - varchar(M) M+1 个字节
  - text 长度+2 个字节
- 二进制类型:bit、binary、varbinary、tinyblob、blob、mediumblob、longblob
  - bit(M) M个字节
  - binary(M) M个字节
  - varbinary(M) M个字节
  - tinyblob 长度可变的二进制数据,最多是 255 个字节
  - blob 长度可变的二进制数据,最多 2 的 16 次方 -1 个字节
  - mediumblob 最多 2 的 24 次方 -1 个字节
  - longblob 最多 2 的 32 次方 -1 个字节

—》新增

—》修改

—》删除

—》查询

### 管理数据库结构

数据库

1、创建数据库

```sql
create database mstest default character set utf8 collate utf8_general_ci;
```

2、删除数据库

```sql
drop database mstest;
```

3、查看数据库

```sql
show databases;
```

4、选择数据库

```sql
use mstest;
```



数据表

1、创建数据表

```sql
create table user(
	id int,
	name varchar(11)
);
```

2、删除数据表

```sql
drop table user;
```

3、查看数据库所有的表

```sql
show tables;
```

4、查看表结构

```sql
desc user;
```

5、修改数据表的结构

- 新增一个字段

  ```sql
  alter table user add gender varchar(2);
  ```

- 删除一个字段

  ```sql
  alter table user drop gender;
  ```

- 修改一个字段

  ```sql
  alter table user change name no int;
  ```



数据

1、添加数据

```sql
insert into user(id,name) values(1,"张三");
```

2、查询数据

```sql
select * from user;
```

3、修改数据

```sql
update user set id = 2;
```

4、删除数据

```sql
delete from user;
```



### SQL 函数

SQL 提供了很多函数,可以完成很复杂的功能,但是一般实际开发中不会用 SQL 来完成复杂的业务操作, SQL 只是一个简单的存储机制,会消耗大量的资源。

Java 程序来完成相对复杂的操作,SQL 只是负责对数据进行保存和管理。

- 数学函数:

  - abs(num) 求绝对值

  ```sql
  select abs(score) from user where id = 1;
  ```

  - floor(num) 返回小于 num 的最大整数

  ```sql
  select floor(score) from user where id = 3;
  ```

  - ceil(num) 返回大于 num 的最小整数

  ```sql
  select ceil(score) from user where id = 2;
  ```

- 字符串函数

  - insert(s1,index,len,s2)

    s1 中 index 位置开始,长度为 len 的字符替换为 s2

    ```sql
    select insert(name,1,2,"小红") from user where id = 1;
    ```

  - upper(),ucase() 将字母值变为大写

    ```sql
    select ucase(name) from user where id = 4;
    ```

  - lower(),lcase() 将字母值变为小写

    ```sql
    select lcase(name) from user where id = 4;
    ```

  - left(s,len) 返回 s 字符串的前 len 个字符

    ```sql
    select left(name,1) from user where id = 1;
    ```

  - right(s,len) 返回 s 字符串的后 len 个字符

    ```sql
    select right(name,1) from user where id = 1;
    ```

  - substring(s, index,len) 截取 s 字符串,从 index 位置开始,长度为 len

    ```sql
    select substring(name,2,2) from user where id = 1;
    ```

  - reverse() 反序输出

    ```sql
    select reverse(name) from user where id = 1;
    ```

- 日期函数:

  - curdate()、current_date() 获取当前日期

    ```sql
    select current_date();
    ```

  - curtime()、current_time() 获取当前时间

    ```sql
    select curtime();
    ```

  - now() 获取当前日期+时间

    ```sql
    select now();
    ```

  - datediff(d1,d2) 获取 d1 和 d2 之间相隔的天数

    ```sql
    select datediff("2019-02-11","2017-03-16");
    ```

  - adddate(d,n) 返回 d 日期之后 n 天的日期

    ```sql
    select adddate("2019-02-11",600);
    ```

  - subdate(d,n) 返回 d 日期之前 n 天的日期

    ```sql
    select subdate("2019-02-11",600);
    ```

- 聚合函数

  - count() 根据某个字段统计总记录数

    ```java
    select count(*) from user;
    ```

  - sum() 计算某个字段值的总和

    ```java
    select sum(score) from user;
    ```

  - avg() 求某个字段总和的平均值

    ```sql
    select avg(score) from user;
    ```

  - max() 求某个字段的最大值

    ```sql
    select max(score) from user;
    ```

  - min() 求某个字段的最小值

    ```sql
    select min(score) from user;
    ```