数据类型
| 数据类型 | 描述 |
|---|---|
- 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** 语句创建表。其语法格式为:
CREATE TABLE [IF not exists]表名(列名称1 数据类型 (长度),属性,注释列名称2 数据类型 (长度),属性,注释......);
提示:使用 CREATE TABLE 创建表时,必须指定以下信息:
- 要创建的表的名称不区分大小写,不能使用SQL语言中的关键字,如
**DROP**、**ALTER**、**INSERT**等。 - 数据表中每个列(字段)的名称和数据类型,如果
**创建多个列,要用逗号隔开**。
创建学生表
/*创建一个学生表学号,姓名,性别,年龄,开学日期,班级名字,邮箱*/CREATE TABLE t_student(sno INT(7), --7显示长度sname VARCHAR(5), --5个字符sex CHAR(1)age INT(3)enterdate date,classname VARCHAR(10),email VARCHAR (15));
查看表结构,字段信息
DESC <表名>;desc t_student;
查看表中数据
SELECT * FROM t_student;
查看建表语句
show create table t_student;
DML_添加数据
全列插入
**值的顺序与表结构字段的顺序完全一一对应**,此时 字段名列表不用填写
1 | insert into 表名 values (...)2 | 例:3 | insert into students values(0,’郭靖‘,1,'蒙古','2016-1-2');
部分列插入
**值的顺序与给出的列顺序对应**,此时需要根据实际的数据的特点 填写对应字段列表
1 | insert into 表名 (字段1,...) values(值1,...)2 | 例:3 | insert into students(name,hometown,birthday) values('黄蓉','桃花岛','2016-3-2')
全列多行插入
1 | insert into 表名 values(...),(...)...;2 | 例:3 | insert into classes values(0,'python1'),(0,'python2');
部分列多行插入
1 | insert into 表名(字段1,...) values(值1,...),(值1,...)...;2 | 例: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 | ALTER TABLE 旧表名 RENAME AS 新表名;2 | 例:3 | alter table teacher rename as teacher1;
增加
增加一列,增加表字段
1 | ALTER TABLE 表名 ADD 列名 数据类型 约束;2 | 例:3 | ALTER TABLE t_student add score DOUBLE(5,3);
增加一列放在最前面
1 | ALTER TABLE 表名 ADD 列名 数据类型 约束 FIRST ;2 | 例:3 | ALTER TABLE t_student add score DOUBLE(5,3) FIRST
增加一列放在某字段后面
1 | ALTER TABLE 表名 ADD 列名 数据类型 约束 AFTER 字段 ;2 | 例:3 | ALTER TABLE t_student add score DOUBLE(5,3) AFTER sex
删除表
1 | ALTER TABLE 表名 DROP 列名;2 | 例:3 | ALTER TABLE t_student drop score ;
修改
修改一列
**MODIFY修改列的类型定义,不会修改列的名字**
1 | ALTER TABLE 表名 MODIFY 列名 数据类型 约束;2 | 例:3 | ALTER TABLE t_student MODIFY score DOUBLE(5,3) ;
重命名
**CHANGE修改列类型及列名字**
1 | ALTER TALBE 表名 CHANGE 原名 新列名 数据类型 约束2 | 例:3 | ALTER TABLE t_student CHANGE score score1 DOUBLE(5,3) ;
注意:在这句中,
**数据类型不能省,不然会重命名失败**。当原列名和新列名相同的时候,指定新的**数据类型或约束**,就可以用于修改数据类型或约束。需要注意的是,修改数据类型可能会导致数据丢失,所以要慎重使用
DML_修改,删除数据
不带条件修改
1 | update 表名 set 字段1=值1;2 | 例:3 | update students set gender=0;
带条件修改
1 | update 表名 set 字段1=值1,字段2=值2... where 条件2 | 例:3 | update students set gender=0,hometown='北京' where id=5;
注意事项
- 关键字,表名,字段名不区分大小
- 默认情况下内容不区分大小写
- 删除操作
**from**关键字不可缺少 **删除修改别忘记加修改条件**
