sql语句如何自动创建数据库 (数据库sql server基础知识)

【本文详细介绍了数据库的基础知识之SQL创建和操作表,欢迎读者朋友们阅读、转发和收藏!】

1 基本概念

1.1 创建表方法

创建表是指在已存在的数据库中建立新表。这是建立数据库最重要的一步,是进行其他操作的基础。

1.1.1 创建表的语法形式

CREATE TABLE表名(
属性名数据类型[完整性约束条件],
属性名数据类型[完整性约束条件],
......
属性名数据类型[完整性约束条件],
)[表类型] [表字符集];

SQL 是不区分大小写

命名规范:

1. 命名富有意义 ( 英文或英文组合 )

2. 自定义名称使用小写

3. MySQL 语句使用大写

CREATE TABLE IF NOT EXISTS data_house(
  id INT,
  name VARCHAR(20);
  gender BOOLEAN,
) Engine = MyISAM;

上面 SQL 语句的含义是:如果不存在 text1 表,就创建它,包含 3 个字段 id 、 name 和 gender ,它们的类型分别是整形、字符型和布尔型,创建的表的类型是 MyISAM 。

完整性约束条件表

  • PRIMARY KEY 标识该属性为该表的主键,可以唯一的标识对应的元组
  • FOREIGN KEY 标识该属性为该表的外键,是与之联系的某表的主键
  • NOT NULL 标识该属性不能为空
  • UNIQUE 标识该属性的值是唯一的
  • AUTO_INCREMENT 标识该属性的值自动增加,这是 MySQL 的 SQL 语句的特色 (null,0)
  • DEFAULT 标识该属性设置默认值 (not null defualt 0,not null default 0.0,not null default '')

1.1.2 设置表的主键

主键是表的一个特殊字段。该字段能惟一地标识该表中的每条信息。主键和记录的关系,如同身份证和人的关系。主键用来标识每个记录,每个记录的主键值都不同。身份证是用来标明人的身份,每个人都具有惟一的身份证号。设置表的主键指在创建表时设置表的某个字段为该表的主键。

主键的主要目的是帮组 MySQL 以最快的速度查找到表中的某一条信息。

主键必须满足的条件:

1. 主键必须是唯一的,表中任意两条记录的主键字段的值不能相同;

2. 主键的值是非空值;

3. 主键可以是单一的字段,也可以是多个字段组合。

1. 单字段的主键:

CREATE TABLE student1 (
  stu_id INTPRIMARY KEY,
  stu_name VARCHAR(20) NOT NULL,
  stu_gender BOOLEAN
) Engine = InnoDB;

2. 多字段主键 :

CREATE TABLE student2 (
  stu_id INT,
  course_id INT,
  grade FLOAT,
  PRIMARY KEY(stu_id, course_id)
)Engine = InnoDB;

1.1.3 设置表的外键

外键是表的一个特殊字段。如果字段 sno 是一个表 A 的属性,且依赖于表 B 的主键。那么,称表 B 为父表,表 A 为子表, sno 为表 A 的外键。通过 sno 字段将父表 B 和子表 A 建立关联关系。设置表的外键指在创建表设置某个字段为外键。

设置外键的原则:必须依赖于数据库中已存在的父表的主键;外键可以为空值。

外键的作用 : 是建立该表与其父表的关联关系。父表中删除某条信息时,子表中与之对应的信息也必须有相应的改变。例如, stu_id 就 student 表的主键, stu_id 是 grade 表的外键。当 stu_id 为 '123' 同学退学了,需要从 student 表中删除该学生的信息。那么, grade 表中 stu_id 为 '123' 的所有信息也应该同时删除。

CONSTRAINT外键别名FOREIGN KEY (属性1.1,属性1.2...属性1.n);
REFERENCES表名(属性2.1,属性2.2,...,属性2.n)

CREATE TABLE student3 (
id INT PRIMARY KEY,
stu_id INT,
course_id INT,
#设置外键
CONSTRAINT C_fkFOREIGN KEY(stu_id, course_id) REFERENCES student2(stu_id, course_id)
) Engine = InnoDB;

1.1.4 设置表的非空约束

非空性是指字段的值不能为空值 (NULL) 。非空约束将保证所有记录中该字段都有值。如果用户新插入的记录中,该字段为空值,则数据库系统会报错。例如,在 id 字段加上非空约束, id 字段的值就不能为空。如果插入记录的 id 字段的值为空,该记录将不能插入。设置表的非空约束是指在创建表时为表的某些特殊字段加上 NOT NULL 约束条件。设置非空约束的基本语法规则如下:

属性名 数据类型 NOT NULL

CREATE TABLE student4 (
  id INTNOT NULLPRIMARY KEY,
  name VARCHAR(20)NOT NULL,
  stu_id INT,
  CONSTRAINT d_fk FOREIGN KEY(stu_id) REFERENCES student2(stu_id)
);

1.1.5 设置表的惟一性约束

惟一性是指所有记录中该字段的值不能重复出现。设置表的惟一性约束是指在创建表时为表的某些特殊字段加上 UNIQUE 约束条件。唯一性约束将保证所有记录中该字段的值不能重复出现。例如,在 id 字段加上惟一性约束,所以记录中 id 字段上不能出现相同的值。例如,在表的 id 字段加上惟一性约束,那么每条记录的 id 值都是惟一的,不能出现重复的情况。如果一条的记录的 id 值都是惟一的,不能出现重复的情况。如果一条的记录的 id 为 '0001' ,那么该表中就不能出现另一条记录的 id 为 '0001' 。设置惟一性约束的基本语法规则如下:

属性名 数据类型 UNIQUE

CREATE TABLE student5 (
id INT NOT NULL PRIMARY KEY,
stu_id INTUNIQUE,
name VARCHAR(20) NOT NULL
);
INSERT INTO `student5` values(1, 10, 'DataHouse'), (2, 11, 'Lucy');
INSERT INTO `student5` values(2, 10, 'DataWarehouse');

1.1.6 设置表的属性值自动增加

AUTO_INCREMENT 是 MYSQL 数据库中一个特殊的约束条件。其主要用于为表中插入的新记录自动生成惟一的 ID 。一个表只能有一个字段使用 AUTO_INCREMENT 约束,且该字段必须为主键的一部分。 AUTO_INCREMENT 约束的字段可以是任何整数类型 (TINYINT 、 SMALLINT 、 INT 、 BIGINT 等 ) 。默认情况下,该字段的值是从 1 开始自增。

设置属性值字段增加的基本语法规则如下:

属性名 数据类型 AUTO_INCREMENT

CREATE TABLE student6 (
  id INT NOT NULL PRIMARY KEYAUTO_INCREMENT,
  stu_id INT UNIQUE,
  name VARCHAR(20) NOT NULL
);
INSERT INTO `student6` values('', 10, 'DataHouse'), ('', 11, 'Lucy');
INSERT INTO `student6` values('', 12, 'DataWarehouse');

1.1.7 设置表的履的默认值

在创建表时可以指定表中字段的默认值。如果插入一条新的记录时没有为这个字段赋值,那么数据库系统会自动为穿上字段插入默认值。默认值通过 DEFAULT 关键字来设置的。

属性名 数据类型 DEFAULT 默认值

CREATE TABLE student7 (
  id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
  stu_id INT UNIQUE,
  name VARCHAR(20) NOT NULLDEFAULT'WHAT',
  language VARCHAR(20)DEFAULT'cn',
  english VARCHAR(20)DEFAULT'ZERO',
  math FLOATDEFAULT0,
  computer FLOATDEFAULT0
);
INSERT INTO `student7` VALUES('',10,'DataHouse', 'kr', 'one','','');
INSERT INTO `student7` VALUES('',11,'DataWarehouse', '', '','','');