首页 > 数据库 >SQL DDL语句

SQL DDL语句

时间:2023-11-20 11:12:04浏览次数:89  
标签:语句 存储 name DDL 主键 SQL 字符串 TABLE ALTER

Data Defination Language,数据定义语言。这类 SQL 语句用于定义或修改数据库结构。主要的 DDL 操作包括 CREATE(创建新表或数据库)、ALTER(修改现有数据库对象的结构)和 DROP(删除表、视图或其他数据库对象)。

表操作

创建表 CREATE TABLE

创建数据表的时候,不但需要指定表名字和列名,还需要指定每列的数据类型以及其它的一些属性信息。

语法格式:

CREATE TABLE TB_NAME (列名 属性, ... ,列名 属性)

数据类型

常见的数据类型有这些:

整型

1、 INT 或 INTEGER: 用于存储整数

2、 SMALLINT: 较小范围的整数

3、 BIGINT: 较大范围的整数

4、 TINYINT: 非常小的整数,例如用于存储年龄或天数


浮点型

1、 FLOAT: 浮点数,用于存储带小数的数值,精度较低

2、 DOUBLE: 双精度浮点数,比 FLOAT 有更高的精度

3、 DECIMAL 或 NUMERIC: 定点数,用于存储精确的数值,如货币

字符型

1、 char(n): 存储的是一个固定长度的字符串,无论存储的字符串长度是多少都会占用n个字符空间。

例如: 定义一个 char(10) 类型的字段,无论存储的字符串长度是多少,它都会占用 10 个字符的空间。


2、 varchar(n): 存储的是一个可变长度的字符串,n表示字符串的最大长度

例如: varchar(100) 字段存储一个长度为 50 的字符串时,只会占用约 50 个字符的空间。


3、 nchar(n): 同样也是存储一个固定长度的字符串,但它用于存储 Unicode 数据,n表示最大字符串的长度。占用的空间通常是 char 的两倍,因为 Unicode 字符通常需要更多的存储空间。n 表示字符串的最大长度。这里的长度是指字符的数量,不是字节的数量。


4、 nvarchar(n): 存储的是一个可变长度的 Unicode 字符串。和nchar一样,适用于多语言环境。n 表示字符串的最大可能字符数。

例如: 当数据包含多种语言,如英文、中文、日文和德文等,使用 nchar 或 nvarchar 是更好的选择。这是因为这些数据类型专门设计用于存储 Unicode 字符串,能够有效地处理多种不同的字符集和国际化字符。


日期和时间

1、 DATE: 仅存储日期

2、 TIME: 仅存储时间

3、 DATETIME 或 TIMESTAMP: 存储日期和时间


布尔型

1、 BOOLEAN: 存储真(TRUE)或假(FALSE)值


二进制数据

1、BINARY(n): 存储固定长度的二进制数据

2、 VARBINARY(n): 存储可变长度的二进制数据

3、 BLOB: 二进制大对象,用于存储大量的二进制数据,如图片或音频


枚举和集合

1、 ENUM: 允许从预定义的值列表中选择一个值

2、SET: 允许从预定义的值列表中选择多个值


例如: 定义枚举这种数据类型时,需要指定与定义的值

sex ENUM('M', 'F')

约束属性

1、 主键:属于表中某条记录的唯一标识符,主键可以由一个字段,也可以由多个字段组成,分别成为单字段主键或多字段主键。主键使用 primary key 关键字指定。

2、 外键:用于建立两个表之间的关联关系。一个表中的外键指向另一个表的主键,建立外键的表为“从表”,外键依赖的表为“主表”。通过 foreign key 关键字指定外键。

3、 唯一性:用于确保列中的所有值都是唯一的。和主键的区别在于 唯一性的数值允许为空。 通过 UNIQUE 关键字指定。

其它属性

1、 非空:用于确保列中的每条记录都必须有一个值,通过 NOT NULL 关键字指定

2、 默认值:当插入记录时,如果没有为列提供值,将自动使用默认值。通过 DEFAULT 关键字指定。

3、 自动递增:一般是结合主键使用的,适用于整数类型。通过 AUTO_INCREMENT 关键字可以指定某列值可以自动更新,默认起始值和自增都是1

例如: 创建一张表

CREATE TABLE students (
    ID int PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50),
    age TINYINT,
    sex ENUM('M', 'F')
);

删除表 DROP TABLE

删除一张表,只需要指定表的表名就可以了

DROP TABLE
    TABLE_NAME

修改表 ALTER TABLE

几乎所有的数据库管理系统(DBMS)都支持 ALTER TABLE 语句,这是用来修改已存在的表的结构的标准 SQL 命令。然而,具体的 ALTER TABLE 语句的语法和支持的操作确实在不同的 DBMS 之间有所差异。这些差异可能包括如何添加、删除或修改列,如何更改数据类型,以及如何添加或修改约束等。


这里以为常用的MySQL数据库为例:


添加列

ALTER TABLE
    table_name
ADD
    column_name data_type;

删除列

ALTER TABLE
    table_name
DROP COLUMN
    column_name;

修改列类型

ALTER TABLE
    table_name
ALTER COLUMN
    column_name new_data_type;

修改列名

命令修改列名时,需要重新指定该列的属性,包括数据类型和任何其他属性

ALTER TABLE
    table_name
CHANGE COLUMN
    old_column_name new_column_name column_definition;

库操作

创建库 CREATE DATABASE

CREATE DATABASE database_name;

虽然 CREATE DATABASE 是 SQL 的标准部分,不同的数据库系统可能会在这个基本命令之上提供额外的选项和特性。

删除库 DROP DATABASE

DROP DATABASE database_name;

说明:

1、这个操作会永久删除数据库及其所有内容,这个操作是不可逆的

2、在 SQL 标准中,没有专门的命令来修改已经存在的数据库的属性,如其名称或其他设置。不同的数据库管理系统(DBMS)可能提供了修改数据库特定属性的能力,但这些通常是特定于该系统的扩展,并不是 SQL 标准的一部分。

标签:语句,存储,name,DDL,主键,SQL,字符串,TABLE,ALTER
From: https://www.cnblogs.com/heyongshen/p/17843322.html

相关文章

  • MySQL和Oracle 对比
    MySQL和Oracle是两种常见的关系型数据库管理系统(RDBMS),它们在功能、性能和适用场景等方面有一些区别。以下是MySQL和Oracle之间的一些比较:开源vs.商业:MySQL是一种开源数据库,可以免费使用,而Oracle是一种商业数据库,需要购买许可证才能使用。这使得MySQL在初创公司和小型项目中更......
  • MySQL最大连接数
    MySQL最大连接数MySQL最大连接数通常MySQL的最大连接数默认是151最大可以达到16384。查看mysql最大连接数:showvariableslike'%max_connections%’;查看当前实际最大使用连接数:showglobalstatuslike'Max_used_connections';实际连接数是最大连接数的85%较为合......
  • Spark SQL快速入门
    SparkSQL快速入门1、概述sparkSQL是Apache用于处理结构化数据的模块。其中包含SQL、DataFrameAPI、DataSetAPI,意味着开发人员可以在不同的API之间来回切换,从而使数据处理更加灵活。SparkSQL(Sparkonhive)数据兼容方面SparkSQL不但兼容HIve,还可以从RDD、Parquet文......
  • GreatSQL社区与Amazon、Facebook、Tencent共同被MySQL致谢
    一、来自MySQL官方的感谢在2023-10-25MySQL官方发布的8.2版本ReleaseNotes中,GreatSQL社区核心开发者RichardDang和HaoLu,分别收到了来自MySQL官方的贡献感谢,与Amazon、Facebook(Meta)、Tencent等一并出现在感谢清单中。详见:MySQL8.2ReleaseNotes/Chang......
  • SQL DML语句
    DataManipulationLanguage数据操纵语言,用于数据的增加、删除、更新等操作。包括INSERT(向表中插入新数据)、UPDATE(修改表中的数据)和DELETE(从表中删除数据)。插入数据INSERT插入一行数据插入数据的时候,不指定列名直接使用VALUES指定数据,表示为表中的每一列提供一个值,值的顺......
  • 设置pgsql使用SSL加密(自签名证书)
    1、切换至postgres用户supostgres2、进入到pgsql的安装目录cd/home/data/postgresql-11.63、生成自签名证书opensslreq-new-x509-days365-nodes-outserver.crt-keyoutserver.key依次输入国家:CN哪个州:Asia城市:SHANGHAI公司:SH部门:SH服务器名称:SH邮箱:可不写如图......
  • LNMP一键安装包安装的mysql远程连接不上的问题
    正常的做法: 以root用户登录mysql:grant all privileges on*.* to创建的用户名@"%"identified by "密码";flushprivileges;例如:mysql>grant all privileges on*.* tozhangsan@"%"identified by "123456";......
  • Oracle、达梦:获取数据库对象、获取对象的DDL-数据定义语言
    一、获取据库对象(Oracle、达梦)ALL_OBJECTS表数据库所有对象表:包括表、视图、物化视图、函数……等--查询所有对象SELECT*fromALL_OBJECTS--筛选条件-OWENR:哪个数据库。-OBJECT_TYPE类型:SELECTOBJECT_NAME,OBJECT_TYPEfromALL_OBJECTSWHEREOWNER='M......
  • oracle日期常用sql
    selectto_date('2023-11-03','YYYY-MM-DD')+(LEVEL-1)*INTERVAL'15'MINUTEfromdualconnectbylevel<=96;----获取间隔15分钟的时间段selectto_char(TRUNC(to_date('2023','YYYY'),'YYYY')+(LEVLE-1),'YY......
  • pymssql 报20002错误解决办法:DB-Lib error message 20002, severity 9
    python版本:3.6 win32版本(因为一些特殊原因必须使用3.6)pymssql版本:2.2.0   连接数据库:importpymssql**defInitMssql(self):try:host=self.IniConfig.get('default','dbhost',"host***")user=self.IniC......