SQL语言--- DDL

举报
基本资料 发表于 2021/02/02 09:39:26 2021/02/02
【摘要】 SQL语言DDL——(数据定义语言)是用来定义数据结构,完成数据库对象的创建(CREATE)、修改(ALTER)、删除(DROP)数据库对象包括:数据库实例、数据表 、视图、索引、约束、存储过程创建数据库语法:CREATE DATABASE 数据库名称查看已有的数据库:SHOW DATABASES使用已创建的数据库:USE 数据库名称创建数据库时,同时指定字符集、校对集:CREATE DAT...
SQL语言
DDL——(数据定义语言)是用来定义数据结构,完成数据库对象的创建(CREATE)、修改(ALTER)、删除(DROP)
数据库对象包括:数据库实例、数据表 、视图、索引、约束、存储过程

创建数据库
语法:CREATE DATABASE 数据库名称
查看已有的数据库:SHOW DATABASES
使用已创建的数据库:USE 数据库名称

创建数据库时,同时指定字符集、校对集:CREATE DATABASE 数据库名 DEFAULT CHARACTER SET 字符集 COLLATE 校对集
实例: create database shujvku default character set utf8 collate utf8_general_ci
查看MySQL支持的字符集命令:SHOW CHARACTER SET
查看MySQL字符集支持的校对集命令:SHOW COLLATION

创建数据表
语法:CREATE TABLE 表名(属性名称 数据类型[约束],……)
查看已有的数据表命令:SHOW TABLES(ORACLE中,SELECT * FROM DBA_TABLES)
查看已创建的数据表属性命令:DESC 表名

MySQL数据库中创建数据表的同时,也可以指定表类型和字符集
语法:CREATE TABLE 表名(……)ENGINE=表类型 DEFAULT CHARSET=字符集
表类型:在MySQL数据库中常用的表类型有2个:InnoDB、MyISAM,默认情况下创建的表类型是InnoDB



MySQL数据库支持的数据类型:整型、浮点型、字符串、日期和时间
整形常用 int
浮点型常用 float(m,d)
字符串常用 varchar(n) 输入值时需要加引号
日期常用 date
时间常用 time
日期时间常用 datetime

数据表约束主要有:
1、主键约束(PRIMARY KEY),自动创建索,引义为主键的属性不允许为空,定义为主键的属性不允许输入重复值,一个表只能有一个主键
通过数据表中的一个或多个属性能够标识表中的唯一一行记录,这一个或多个属性称为该表的主键。

2、外键约束(FOREIGN KEY)
建立和强调两个表之间的关联,确保数据的完整性和一致性
例如:A表中的属性是另外一个B表中能够唯一确定一行记录的键(主键),这个属性就称为A表的外键,其中B表被称为主表或外表,A表称为从表
例子:
create table shujv1
(id int not null primary key,
name varchar(20),
)
create table shujv2
(id int not null,
name varchar(20),
age int not null,
foreign key(age) references shujv1(id) on delete cascade on update cascade
)
REFERENCES关联主表shujv1中的主键属性id
ON DELETE、ON UPDATE指明父表中对主键进行删除、更新操作,不指定则表示不能进行删除、更新操作
CASCADE表明子表中外键字段值也会被更新或删除,除了CASCADE,还可以使用SET NULL(父表更新或删除时,子表字段值设置为NULL)、NO ACTION(父表更新或删除时,子表不进行任何操作)


3、唯一约束(UNIQUE)
唯一约束:确保不是主键的属性不会出现重复数据,定义唯一约束时,也会自动创建唯一索引
唯一约束与主键约束的区别:
一个表只能定义一个主键约束,但是可以定义超过1个唯一性约束
主键约束不允许属性值为空,而唯一性约束的属性允许为空

4、非空约束(NOT NULL)、空值约束(NULL)
确保属性列中的数据不能为空,如果没有明确指定非空约束,则默认允许为空。空值和0的字符串’’含义不同

5、默认值约束(DEFAULT)
即向表中插入数据时,如果用户没有明确给出属性的值,数据库会自动为该属性添加默认值。
一般用于定义参数的值

6、AUTO_INCREMENT
当属性列定义为AUTO_INCREMENT时,能够为新插入的行赋值为上一次插入的值+1MySQL要求AUTO_INCREMENT只能用于作为主键的列

数据表中的属性可以同时定义多个约束,注意:
1、如果同一个属性有默认值约束和其他约束,默认值要写在其他约束前面
2、如果同一个属性有多个约束,中间使用空格分隔开

修改数据库(数据库对应的字符集和校对集)
使用alter命令来完成数据库的修改,一般是修改数据库的字符集和校对集
语法:ALTER DATABASE 数据库名称 DEFAULT CHARACTER SET 字符集 COLLATE 校对集


修改数据表

新增属性
语法: ALTER TABLE 表名 ADD 属性名称 数据类型[约束]
例子: ALTER TABLE shujv1 ADD age int NOT NULL

修改属性(数据类型)
语法: ALTER TABLE 表名 MODIFY 属性名称 数据类型[约束]
语法: ALTER TABLE 表名 CHANGE 属性名称 属性名称 数据类型[约束]
例子: ALTER TABLE shujv1 MODIFY name VARCHAR(30)
ALTER TABLE shujv1 CHANGE name name VARCHAR(30)

修改属性名称
语法: ALTER TABLE 表名 CHANGE 属性原名称 属性新名称 数据类型[约束]
例子: ALTER TABLE shujv1 CHANGE name name_new VARCHAR(30)

删除属性
语法:ALTER TABLE 表名 DROP 属性名称
如果表中只有一个属性,不允许删除
例子:ALTER TABLE shujv1 DROP name

新增属性约束
语法:ALTER TABLE 表名 ADD CONSTRAINT 约束别名 约束
例子:
ALTER TABLE test_table ADD CONSTRAINT PRIMARY KEY(id)
ALTER TABLE test_table ADD CONSTRAINT fk FOREIGN KEY test_table(name) REFERENCES test_table2(name)

删除属性约束
语法:ALTER TABLE 表名 DROP 约束
例子: ALTER TABLE test_table DROP PRIMARY KEY
ALTER TABLE test_table DROP FOREIGN KEY fk

修改表名
语法:ALTER TABLE 表名 RENAME TO 新表名
语法:RENAME TABLE 原表名 TO 新表名
例子:
ALTER TABLE shujv1 RENAME TO shujv3
RENAME TABLE shujv3 TO shujv1

删除数据库
语法:DROP DATABASE 数据库名称
例子: DROP DATABASE shujv

删除数据表
语法:DROP TABLE 表名
例子: DROP TABLE shujv1

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。