SQL数据定义语言详解

1. create database创建数据库语句

CREATE DATABASE 语句

CREATE DATABASE 用于创建数据库。

SQL CREATE DATABASE 语法

CREATE DATABASE database_name

SQL CREATE DATABASE 实例

现在我们希望创建一个名为 “my_db” 的数据库。

我们使用下面的 CREATE DATABASE 语句:

CREATE DATABASE my_db

可以通过 CREATE TABLE 来添加数据库表。

2. create table创建表语句

CREATE TABLE 语句

CREATE TABLE 语句用于创建数据库中的表。

SQL CREATE TABLE 语法

CREATE TABLE 表名称

(

列名称1 数据类型,

列名称2 数据类型,

列名称3 数据类型,

)

数据类型(data_type)规定了列可容纳何种数据类型。下面的表格包含了SQL中最常用的数据类型:

数据类型 | 描述 |

| — | — |

|

- - integer(size)

int(size)

smallint(size)

tinyint(size)

| 仅容纳整数。在括号内规定数字的最大位数。 |

|

- - decimal(size,d)

numeric(size,d)

| 容纳带有小数的数字。

“size” 规定数字的最大位数。“d” 规定小数点右侧的最大位数。 |

| char(size) | 容纳固定长度的字符串(可容纳字母、数字以及特殊字符)。

在括号中规定字符串的长度。 |

| varchar(size) | 容纳可变长度的字符串(可容纳字母、数字以及特殊的字符)。

在括号中规定字符串的最大长度。 |

| date(yyyymmdd) | 容纳日期。 |

SQL CREATE TABLE 实例

本例演示如何创建名为 “Person” 的表。

该表包含 5 个列,列名分别是:“Id_P”、“LastName”、“FirstName”、“Address” 以及 “City”:

CREATE TABLE Persons

(

Id_P int,

LastName varchar(255),

FirstName varchar(255),

Address varchar(255),

City varchar(255)

)

Id_P 列的数据类型是 int,包含整数。其余 4 列的数据类型是 varchar,最大长度为 255 个字符。

空的 “Persons” 表类似这样:

Id_P | LastName | FirstName | Address | City |

| — | — | — | — | — |

可使用 INSERT INTO 语句向空表写入数据。

SQL CREATE TABLE其他用法

基于已有数据表创建新表并复制所有数据

create table student1 as select * from student; (CTAS建表方式)

基于已有数据表创建新表并复制部分数据

create table student2 as select * from student where gender=‘女’;

基于已有数据库创建新表仅复制表结构不包括行数据

create table student3 as select * from student where 1=2;

create table student4 like student; (MYSQL专有语法)

3. alter table修改表结构

ALTER TABLE 语句

ALTER TABLE 语句用于在已有的表中添加、修改或删除列。

SQL ALTER TABLE 语法

如需在表中添加列,请使用下列语法:

ALTER TABLE table_name

ADD column_name datatype

要删除表中的列,请使用下列语法:

ALTER TABLE table_name

DROP COLUMN column_name

**注释:**某些数据库系统不允许这种在数据库表中删除列的方式 (DROP COLUMN column_name)。

要改变表中列的数据类型,请使用下列语法:

ALTER TABLE table_name

ALTER COLUMN column_name datatype

原始的表 (用在例子中的):

Persons 表:

Id | LastName | FirstName | Address | City |

| — | — | — | — | — |

| 1 | Adams | John | Oxford Street | London |

| 2 | Bush | George | Fifth Avenue | New York |

| 3 | Carter | Thomas | Changan Street | Beijing |

SQL ALTER TABLE 实例

现在,希望在表 “Persons” 中添加一个名为 “Birthday” 的新列。

我们使用下列 SQL 语句:

ALTER TABLE Persons

ADD Birthday date

请注意,新列 “Birthday” 的类型是 date,可以存放日期。数据类型规定列中可以存放的数据的类型。

新的 “Persons” 表类似这样:

Id | LastName | FirstName | Address | City | Birthday |

| — | — | — | — | — | — |

| 1 | Adams | John | Oxford Street | London |   |

| 2 | Bush | George | Fifth Avenue | New York |   |

| 3 | Carter | Thomas | Changan Street | Beijing |   |

改变数据类型实例

现在希望改变 “Persons” 表中 “Birthday” 列的数据类型。

我们使用下列 SQL 语句:

ALTER TABLE Persons

ALTER COLUMN Birthday year

请注意,“Birthday” 列的数据类型是 year,可以存放 2 位或 4 位格式的年份。

DROP COLUMN 实例

接下来,我们删除 “Person” 表中的 “Birthday” 列:

ALTER TABLE Person

DROP COLUMN Birthday

Persons 表会成为这样:

Id | LastName | FirstName | Address | City |

| — | — | — | — | — |

| 1 | Adams | John | Oxford Street | London |

| 2 | Bush | George | Fifth Avenue | New York |

| 3 | Carter | Thomas | Changan Street | Beijing |

4. drop database删除数据库

DROP DATABASE 语句用于删除数据库:

DROP DATABASE 数据库名称

5. drop table删除表

DROP TABLE 语句用于删除表(表的结构、属性以及索引也会被删除):

DROP TABLE 表名称

6. drop index删除索引

可以使用 DROP INDEX 命令删除表格中的索引。

用于 Microsoft SQLJet (以及 Microsoft Access) 的语法:

DROP INDEX index_name ON table_name

用于 MS SQL Server 的语法:

DROP INDEX table_name.index_name

用于 IBM DB2 和 Oracle 语法:

DROP INDEX index_name

用于 MySQL 的语法:

ALTER TABLE table_name DROP INDEX index_name

7. truncate table清空表数据

如果仅仅需要除去表内的数据,但并不删除表本身,那么我们该如何做呢?

请使用 TRUNCATE TABLE 命令(仅仅删除表格中的数据):

TRUNCATE TABLE 表名称

8. rename table修改表名

不同语句修改表明参考以下相应命令:

1. MYSQL

rename table table1 to table2;

2. SQL SERVER

EXEC sp_rename ‘table1’, ‘table2’;

3. Oracle

alter table table1 rename to table2

4. db2

rename table table1 to table2;

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空