表操作SQL

学习目标

  • 掌握表操作的SQL语法

1. 创建表的基础语法

                    
语法:
create table 表名 (
        列名1 数据类型,
        列名2 数据类型,
        列名3 数据类型
        ......,
        列名n 数据类型
);


案例:
create table user_info (
        user_id int(11),
        user_name varchar(30),
        user_age int(3)
);
                    
                

解释:

  • 创建一张数据表,名为user_info
  • 表里有4个列,分别为:
    • user_id列为int类型,长度11;
    • user_name列为varchar类型,最大字符长度为30;
    • user_age列为int类型,长度为3;

注意:

  • 在同一个数据库里,表名不可重复
  • 每一个字段末尾以英文逗号分隔,最后一个字段不加逗号,整段语句最后以分号结尾
  • 每一个字段的数据类型需要符合业务实际情况,不可随意取名


2. 创建表设置[约束]

① 带[单一主键约束]

                    
语法1:
create table 表名 (
        列名1 数据类型 primary key,
        列名2 数据类型,
        列名3 数据类型,
        ......,
        列名n 数据类型
);


案例:
create table user_info (
        user_id int(11) primary key,
        user_name varchar(30),
        user_age int(3)
);
                    
                
效果:创建表的同时,将user_id列设置为单一主键


                    
语法2:
create table 表名 (
        列名1 数据类型,
        列名2 数据类型,
        列名3 数据类型,
        ......,
        列名n 数据类型,
        primary key(某列名)
);


案例:
create table user_info (
        user_id int(11),
        user_name varchar(30),
        user_age int(3),
        primary key(user_id)
);
                    
                
效果:创建表的同时,将user_id列设置为单一主键


② 带[复合主键约束]

                    
语法:
create table 表名 (
        列名1 数据类型,
        列名2 数据类型,
        列名3 数据类型,
        ......,
        列名n 数据类型,
        primary key(某列名1,某列名2,...,某列名n)
);

案例:
create table user_info (
        user_id int(11),
        user_name varchar(30),
        user_age int(3),
        primary key(user_id,user_name)
);
                    
                
效果:创建表的同时,将user_id和user_name两列,共同设置为一个联合主键


③ 带[唯一约束]

                    
语法:
create table 表名 (
        列名1 数据类型 unique,
        列名2 数据类型,
        列名3 数据类型,
        ......,
        列名n 数据类型
);
案例:
create table user_info (
        user_id int(11) unique,
        user_name varchar(30),
        user_age int(3)
);
                    
                
效果:创建表的同时,将user_id加上唯一约束


③ 带[默认值约束]

                    
语法:
create table 表名 (
        列名1 数据类型 default '值',
        列名2 数据类型,
        列名3 数据类型,
        ......,
        列名n 数据类型
);
                        
                        
案例:
create table user_info (
        user_id int(11),
        user_name varchar(30),
        user_age int(3) default '18'
);
                    
                
效果:创建表的同时,将user_age设置默认值为18


④ 带[非空约束]

                    
语法:
create table 表名 (
        列名1 数据类型 not null,
        列名2 数据类型,
        列名3 数据类型,
        ......,
        列名n 数据类型
);
案例:
create table user_info (
        user_id int(11),
        user_name varchar(30) not null,
        user_age int(3) 
);
                    
                
效果:创建表的同时,将user_name设置不能为空


3. 创建表时,带[自增]属性

                    
语法:
create table 表名 (
        列名1 数据类型 primary key auto_increment,
        列名2 数据类型,
        列名3 数据类型,
        ......,
        列名n 数据类型
);
                        
                        
案例:
create table user_info (
        user_id int(11) primary key auto_increment,
        user_name varchar(30),
        user_age int(3) 
);
                    
                
效果:创建表的同时,将user_id设置为主键,并且自增
注意:每张表只允许有一列自增,且该列必须为主键


4. 创建表时,带[备注]属性

                    
语法:
create table 表名 (
        列名1 数据类型 comment '备注字',
        列名2 数据类型,
        列名3 数据类型,
        ......,
        列名n 数据类型
);
                        
                        
案例:
create table user_info (
        user_id int(11) comment '用户编号',
        user_name varchar(30),
        user_age int(3) 
);
                    
                
效果:创建表的同时,将user_id设置一个备注为“用户编号”
注意:备注字需要用引号包裹


5. 创建表时,带[存储引擎和编码]属性

                    
语法:
create table 表名 (
        列名1 数据类型,
        列名2 数据类型,
        列名3 数据类型,
        ......,
        列名n 数据类型
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;
                        
                        
案例:
create table user_info (
        user_id int(11),
        user_name varchar(30),
        user_age int(3) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;
                    
                
效果:将该表的的存储引擎设置为InnoDB,将字符编码设置为utf8


6. 综合使用

                    
案例:
create table user_info (
        user_id int(11) auto_increment comment  '用户编号',
        user_name varchar(30) unique comment  '用户姓名',
        user_age int(3) default '18' not null comment  '用户年龄',
        primary key(user_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
                    
                


7. 查看全部表

                    
语法:show tables;

解释:返回当前库里所有的表名称
                    
                

8. 查看表结构

                    
语法:desc 表名;
案例:desc user_info;

解释:返回user_info表的表结构信息
                    
                

9. 删除指定表

                
语法:drop table 表名;
案例:drop table user_info;

解释:删除user_info表