数据库 SQL建表

Profile Picture
Published on Mar 18, 2020🌏 Public

DDL数据定义语言

SQL中的数据定义语言主要为建立、删除数据库,建表、修改表结构、删除表。

建表

图形界面: 在数据库的Tables上右键点击CreateTable,进入如下界面:

  • Column Name:列的名称
  • DataType:该列的数据类型
  • PK(Primary Key):主键,主键的值不能重复
  • NN(Not Null):不允许为Null值
  • UQ(Unique):唯一,列中的值不可重复,
  • UN(Unsigned):无符号数字,只对数字类型有用
  • (×) ZF(ZeroFill):只对数字起效,不足的位数用0不足,用不到
  • (x) Binary:存储二进制数据
  • AI(Auto Increment):自增,对数字有用,一般用在主键自动升序号
  • G(Generated):经过计算生成的列,这种列不需要人工设置值。如果一个列勾选了它,就需要设置一个表达式

SQL建表

Create Table 表名(
    列名1  列1数据类型  各种约束,
    列名2  列2数据类型  各种约束,
    列名3  列3数据类型  各种约束
)
create table `user2`(
	`Id` int(11) auto_increment not null primary key,
    `Name` varchar(16),
    `IdCard` VARCHAR(18) unique,
    `Sex` tinyint(4) default 0,
    `Mobile` VARCHAR(16),
    `Desc` VARCHAR(128) Generated always as (concat(`Name`,'-',`IdCard`,'-',`Mobile`)) stored,
    `Time` DATETIME(6) default now(6)
)

删表

drop table  `user2`;

添加新的列(扩展)

alter table 表名 add column 列名 列类型 各种约束

alter table `user2` add column `A` varchar(16) unique ;

删除已有的列(扩展)

alter table 表名 drop column 列名

alter table `user2` drop column `A`

修改列(扩展)

只改列定义,不改列名:

alter table 表名 modify column 列名 列类型 各种约束

alter table `user2` modify column  `A` int not null ;

还要改列名:

alter table 表名 change column 旧列名 新列名 列类型 各种约束

alter table `user2` change column `A` `B` int not null ;

注意的是修改列的时候,主键、unique、外键不会被删除,如果不需要了需要自己手动去删除掉。

--删除unique,'A'不是列名,是索引的名字
alter table `user2` drop  index `A`;

练习

  1. 练习建立user2表,跟user1实现相同的效果
  2. 根据下表去建立数据表格,使用SQL语句编写

登录信息数据表:

列名数据类型约束
Idint主键、自增、不为空
UserIdint外键,连接User的Id,记录登录的用户Id
LoginTimedatetime(3)登录时间,不为空,默认为当前时间
Ipvarchar(128)登录的IP,可能是IPV4或IPV6地址
Resulttinyint成功还是失败,成功为1,失败为0