数据类型

数据类型 描述

- integer(size)
- **int(size)**
- smallint(size)
- tinyint(size)



仅容纳**整数**。在括号内规定数字的最大位数

- decimal(size,d)
- numeric(size,d)
容纳带有**小数的数字**
**size**“ 规定数字的**最大位数**。”**d**“ 规定**小数点右侧的最大位数**

- **char(size) **
容纳固定长度的字符串(可容纳字母、数字以及特殊字符),在括号中规定字符串的长度

- varchar(size)
容纳可变长度的字符串(可容纳字母、数字以及特殊的字符),在括号中规定字符串的最大长度

- date(yyyymmdd)
容纳日期

创建数据库表

在创建数据库之后,接下来就要在数据库中创建数据表。所谓创建数据表,指的是**在已经创建的数据库中建立新表**
创建数据表的过程是规定数据列的属性的过程,同时也是实施数据完整性(包括实体完整性、引用完整性和域完整性)约束的过程。接下来我们介绍一下创建数据表的语法形式。

基本语法

MySQL 中,可以使用 **CREATE TABLE** 语句创建表。其语法格式为:

  1. CREATE TABLE [IF not exists]表名
  2. (
  3. 列名称1 数据类型 (长度),属性,注释
  4. 列名称2 数据类型 (长度),属性,注释
  5. ......);

提示:使用 CREATE TABLE 创建表时,必须指定以下信息:

  • 要创建的表的名称不区分大小写,不能使用SQL语言中的关键字,如**DROP****ALTER****INSERT**等。
  • 数据表中每个列(字段)的名称和数据类型,如果**创建多个列,要用逗号隔开**

创建学生表

  1. /*
  2. 创建一个学生表
  3. 学号,姓名,性别,年龄,开学日期,班级名字,邮箱
  4. */
  5. CREATE TABLE t_student
  6. (
  7. sno INT(7), --7显示长度
  8. sname VARCHAR(5), --5个字符
  9. sex CHAR(1)
  10. age INT(3)
  11. enterdate date,
  12. classname VARCHAR(10),
  13. email VARCHAR (15));

查看表结构,字段信息

  1. DESC <表名>;
  2. desc t_student;

查看表中数据

  1. SELECT * FROM t_student;

查看建表语句

  1. show create table t_student;

DML_添加数据

全列插入

**值的顺序与表结构字段的顺序完全一一对应**,此时 字段名列表不用填写

  1. 1 | insert into 表名 values (...)
  2. 2 | 例:
  3. 3 | insert into students values(0,’郭靖‘,1,'蒙古','2016-1-2');

部分列插入

**值的顺序与给出的列顺序对应**,此时需要根据实际的数据的特点 填写对应字段列表

  1. 1 | insert into 表名 (字段1,...) values(值1,...)
  2. 2 | 例:
  3. 3 | insert into students(name,hometown,birthday) values('黄蓉','桃花岛','2016-3-2')

全列多行插入

  1. 1 | insert into 表名 values(...),(...)...;
  2. 2 | 例:
  3. 3 | insert into classes values(0,'python1'),(0,'python2');

部分列多行插入

  1. 1 | insert into 表名(字段1,...) values(值1,...),(值1,...)...;
  2. 2 | 例:
  3. 3 | insert into students(name) values('杨康'),('杨过'),('小龙女');

注意事项

  • int宽度是显示宽度,如果超过可以自动增加宽度,int底层都是4个字节
  • 时间方式多样:"2021-06-05""2021/06/05""2021.06.05"
  • **字符串不区分单引号跟双引号**
  • 如何写入当前时间:now(),sysdata(), CURRENT_DATE()
  • char、varchar是字符的个数,不是字节的个数
  • 如果不是全字段插入数据,需要加上字段名字

DDL_修改 删除数据库中的表

修改表名_基本语法

  1. 1 | ALTER TABLE 旧表名 RENAME AS 新表名;
  2. 2 | 例:
  3. 3 | alter table teacher rename as teacher1;

增加

增加一列,增加表字段

  1. 1 | ALTER TABLE 表名 ADD 列名 数据类型 约束;
  2. 2 | 例:
  3. 3 | ALTER TABLE t_student add score DOUBLE(5,3);

增加一列放在最前面

  1. 1 | ALTER TABLE 表名 ADD 列名 数据类型 约束 FIRST ;
  2. 2 | 例:
  3. 3 | ALTER TABLE t_student add score DOUBLE(5,3) FIRST

增加一列放在某字段后面

  1. 1 | ALTER TABLE 表名 ADD 列名 数据类型 约束 AFTER 字段 ;
  2. 2 | 例:
  3. 3 | ALTER TABLE t_student add score DOUBLE(5,3) AFTER sex

删除表

  1. 1 | ALTER TABLE 表名 DROP 列名;
  2. 2 | 例:
  3. 3 | ALTER TABLE t_student drop score ;

修改

修改一列

**MODIFY修改列的类型定义,不会修改列的名字**

  1. 1 | ALTER TABLE 表名 MODIFY 列名 数据类型 约束;
  2. 2 | 例:
  3. 3 | ALTER TABLE t_student MODIFY score DOUBLE(5,3) ;

重命名

**CHANGE修改列类型及列名字**

  1. 1 | ALTER TALBE 表名 CHANGE 原名 新列名 数据类型 约束
  2. 2 | 例:
  3. 3 | ALTER TABLE t_student CHANGE score score1 DOUBLE(5,3) ;

注意:在这句中,**数据类型不能省,不然会重命名失败**。当原列名和新列名相同的时候,指定新的**数据类型或约束**,就可以用于修改数据类型或约束。需要注意的是,修改数据类型可能会导致数据丢失,所以要慎重使用

DML_修改,删除数据

不带条件修改

  1. 1 | update 表名 set 字段1=值1;
  2. 2 | 例:
  3. 3 | update students set gender=0;

带条件修改

  1. 1 | update 表名 set 字段1=值1,字段2=值2... where 条件
  2. 2 | 例:
  3. 3 | update students set gender=0,hometown='北京' where id=5;

注意事项

  • 关键字,表名,字段名不区分大小
  • 默认情况下内容不区分大小写
  • 删除操作**from**关键字不可缺少
  • **删除修改别忘记加修改条件**