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


创建数据库表

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

  1. CREATE TABLE [IF not exists] `表名`
  2. (
  3. `列名称1` 数据类型 (长度),[属性],[索引],[注释],
  4. `列名称2` 数据类型 (长度),[属性],[索引],[注释],
  5. `列名称3` 数据类型 (长度),[属性],[索引],[注释],
  6. )[表类型][字符集设置][注释]

注意点:使用 CREATE TABLE 创建表时,必须指定以下信息:

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

例:创建表-学生表

         /*
         创建一个学生表
         学号int,登录密码varchar(20),姓名,性别varchar(2),出生日期(datetime),家庭住址,email
         */

create table if not exists `t_student6`(
`id`int(4) not null AUTO_INCREMENT comment"学号",  --int列类型(长度为4) ,自增,注释学号
`name` varchar(30) not null default "匿名" comment"姓名", -- varchar列类型(字符为30),不能为空,设置默认值为匿名,注释姓名
`pwd` varchar (20) not null default"1234456" comment"密码", 
`sex` varchar (2) not null default "女" comment"性别",
`birthday` DATETIME    default null comment"出生日期", --DATETIME 时间格式yyyy-mm-dd ,
`address` varchar(100) default null comment"家庭住址", -- 设置默认值为空
`email` varchar (50) default null comment "邮箱",
 PRIMARY KEY (`id`)  -- 设置`id`为主键,一般一个表只有一个唯一的主键
 )engine=innodb default charset=utf8 --设置引擎和设置默认utf8编码,如果不设置utf8,那么插入数据的时候时中文的话会乱码


 --注意事项:
 1.表名后面要使用英文的()括号括起来,表的名称和字段尽量使用``括起来,以免执行的时候认为是特殊字符然而报错
 2.字符串使用需要用英文的单引号或者双引号括起来
 3.所有的语句后面加英文的逗号, 最后一个语句不用加
 4.PRIMARY KEY 主键,一般一个表只有一个唯一的主键
 5.注释 --/**/
 6.sql关键字大小写不敏感

快速添加一张表

-- 添加一张表;快速添加,结构和数据跟t_student都是一致
1 | create table t_student2
    as
    select * from t_student;

-- 添加一张表;快速添加,结构跟t_student都是一致,数据没有
2 | create table t_student3
    as
    select * from t_student where 1=2;

-- 添加一张表;快速添加,部分列,部分数据
3 | create table t_student4
    as
    select sno,sname,age from t_student where sno=1;

创建表后增加

增加一列,增加表字段

alter table 表名 add 字段名 数据类型 约束

例:

1 | alter table teacher1 add age int(11)

2 | 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

查看表的结构和字段信息

DESC <表名>;
desc  t_student;

查看表中数据

 SELECT * FROM t_student;


查看数据表的定义语句

show create table 表名;


修改表名

ALTER TABLE 旧表名 RENAME AS 新表名

例:

1 | alter table teacher rename as teacher1;

修改表的字段

修改一列

例1

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

1  |  ALTER TABLE 表名 MODIFY 列名 新的数据类型 新的约束

2  |  例:修改数据类型

3  |  alter table teacher1 modify age varchar(11)

例2_重命名

CHANGE用来字段重命名,不能修改字段类型和约束

1  |  ALTER TALBE 表名 CHANGE 原名 新列名 数据类型 约束

2  |  例:字段重命名

3  | alter table teacher1 change age age1 int(1)


2  |  ALTER TALBE 表名 CHANGE 原名1 新列1 新数据类型 新约束

2  |  例:当原列名和新列名相同的时候,指定新的数据类型或约束,就可以用于修改数据类型或约束

3  | alter table t_student6 change emai4 emai4 char(50)

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

删除表结构

1 | drop table [if exists] 表名

例:--  删除表(如果存在在删除)
2 | DROP TABLE IF EXISTs t_student5;

所有的创建和删除操作尽量加上判断,以免报错~

删除表的字段

1  |  ALTER TABLE 表名 DROP 列名;

2  |  例:

3  |  ALTER TABLE t_student drop score ;