首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

数据库基础之SQL创建和操作表

点击蓝字关注我吧

【本文详细介绍了数据库的基础知识之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 INT PRIMARY 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_fk FOREIGN 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 INT NOT NULL PRIMARY 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 INT UNIQUE ,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 KEY AUTO_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 NULL DEFAULT 'WHAT', language VARCHAR(20) DEFAULT 'cn', english VARCHAR(20) DEFAULT 'ZERO', math FLOAT DEFAULT 0, computer FLOAT DEFAULT 0);INSERT INTO `student7` VALUES('',10,'DataHouse', 'kr', 'one','','');INSERT INTO `student7` VALUES('',11,'DataWarehouse', '', '','','');

我知道你在看

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200605A0CJM600?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券