1、表的创建
创建表之前一般需要在特定的库中创建表,先创建一个库,之后的表都在该库中创建。创建数据库的语法:
CREATE DATABASE <数据库的名字>
这里创建名字为Tem_base的库:
CREATE DATABASE Tem_Base
这是比较简单的写法,其它暂不讨论,然后便可以在该库下创建表
创建表的语法格式:
CREATE TABLE Table_Name(
列名1 数据类型 该列的约束,
列名2 数据类型 该列的约束,
...
列名n 数据类型 该列的约束,
该表的约束1,
...
该表的约束n
)
列名:就是每列的名字,如这里的SID、SNAME、SAGE、SSEX;数据类型:数据类型有很多比如int、char,date等,暂且不谈;该列的约束:对该列的数据的要求,暂且不谈;表约束:对表的数据的要求,暂且不谈
下面便可以创建表:
CREATE TABLE Student( SID varchar(10) not null, Sname varchar(10), Sage datetime, Ssex varchar(10)); CREATE TABLE Course( CID varchar(10) not null, Cname varchar(10), TID varchar(10)); CREATE TABLE Teacher( TID varchar(10) not null, Tname nvarchar(10)); CREATE TABLE SC( SID varchar(10) not null, CID varchar(10), score decimal(18,1));
分别创建了Student、Course、Teacher、SC四个表
2.1、命名规则:我们只能使用半角英文字母、数字、下划线(_)作为数据库、表和
2.2、列的名称,且名称必须以半角英文字母开头,同一个数据库中不能创建两个相同名称的表,同一个表中也不可能有同名的列,但列名可以与表名相同
2、数据类型:
用来声明该列的数据类型的,所有的列都必须指定数据类型,包括数字型、字符型和日期型等,下面一一介绍比较常用的:
2.1、Int(Integer(整数)):INT (或INTEGER)数据类型存储从-2的31次方 (-2 ,147 ,483 ,648) 到2的31次方-1 (2 ,147 ,483,647) 之间的所有正负整数。每个INT 类型的数据按4 个字节存储,其中1 位表示整数值的正负号,其它31 位表示整数值的长度和大小;如1,2,100,50等;
2.2、SMALLINT :SMALLINT 数据类型存储从-2的15次方( -32, 768) 到2的15次方-1( 32 ,767 )之间的所有正负整数。每个SMALLINT 类型的数据占用2 个字节的存储空间,其中1 位表示整数值的正负号,其它15 位表示整数值的长度和大小。
2.3、FLOAT:FLOAT数据类型可精确到第15 位小数,其范围为从-1.79E -308 到1.79E +308。 每个FLOAT 类型的数据占用8 个字节的存储空间。 FLOAT数据类型可写为FLOAT[ n ]的形式。n 指定FLOAT 数据的精度。n 为1到15 之间的整数值。
2.4、char(定长字符串):如char(10),表示该列的字符串的长度不能大于10,超出的部分会舍弃,不足的部分会用空格补充;
2.5、varchar(可变长字符串):varchar(20),超出最大长度会舍弃,不足的部分不会用空格补充
2.6、Date(日期):存储日期
3、约束的类型:
3.1、主键约束(primary key): 唯一性,非空性:
创建学生编号为主键:
SID varchar(10) primary key
创建学生编号为主键,并命名为pk_id:
constraint pk_id primary key (SID ) 创建学生编号为主键,并命名为pk_id
为已存在的列创建主键:
alter table table_name add primary key(column_name)
删除主键约束:
alter table table_name drop primary key
删除主键约束:
alter table table_name drop constraint 主键约束名
3.2、唯一约束(unique):唯一性,可以空,每个约束下每个值只能有一个,但可以有多个列为唯一约束:
列级:
SID varchar(10) unique
表级:
CONSTRAINT un_id unique (sid)
增加表中的约束
alter table table_name add unique(column_name)
删除约束 alter table able_name drop constaint 主键名 删除约束
3.3、检查约束(check):对该列数据的范围、格式的限制(如:年龄、性别等)
创建Ssex列约束,只能为‘男‘或者‘女‘
Ssex varchar(10)) check(Ssex=‘男‘ or Ssex=‘女‘)
向已有的列加入check约束
alter table table_name add check(列名>0)
删除约束
alter table table_name drop constraint check约束名
3.4、默认约束(default):该数据的默认值
Ssex varchar(10)) default ‘男’
向已有列名中插入默认值
alter table table_name add 列名 set default ‘数值‘
删除默认约束
alter table table_name drop constraint 约束名
3.5、非空约束(not null):确定该列数据是否为空
Sname varchar(10) not null
3.6、外键约束(foreign key):需要建立两表间的关系并引用主表的列
a、一个表中的foreign key 指向另一个表的primary key
b、foreign key约束用于预防破坏表之间连接的动作
c、foreign key约束也能防止非法数据插入外键列,因为它必须是指向的那个表的值之一
创建column_name为主表名的外键
foreign key (column_name) references 主表名(主键列名)
创建column_name为主表名的外键
column_name int foreign key references 主表名(主键列名)
为已存在的列创建外键
add foreign key (列名) references 主表名(主键列名)
删除外键约束
alter table table_name drop constraint 外键约束名
3.7、自增列(auto_increment):该列每次添加数据都会自增,(不做讨论)
原文地址:https://www.cnblogs.com/chenbao1012/p/11811157.html