数据库 SQL建表
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`;
练习
- 练习建立user2表,跟user1实现相同的效果
根据下表去建立数据表格,使用SQL语句编写
登录信息数据表:
列名 | 数据类型 | 约束 |
---|---|---|
Id | int | 主键、自增、不为空 |
UserId | int | 外键,连接User的Id,记录登录的用户Id |
LoginTime | datetime(3) | 登录时间,不为空,默认为当前时间 |
Ip | varchar(128) | 登录的IP,可能是IPV4或IPV6地址 |
Result | tinyint | 成功还是失败,成功为1,失败为0 |