SQL语句之数据定义语言(DDL)详解

操作对象:数据库

1)创建数据库

MariaDB [(none)]> help create database
Name: ‘CREATE DATABASE‘
Description:
Syntax:
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
[create_specification] ...

create_specification:
[DEFAULT] CHARACTER SET [=] charset_name(指定字符集)
| [DEFAULT] COLLATE [=] collation_name(指定排序规则)

查看系统默认支持的字符集和排序规则:

MariaDB [(none)]> show character set;

MariaDB [(none)]> show collation;

我们可以在创建数据库的时候,指定字符集和排序规则,如果不指定,则默认使用mysql服务器级别指定的字符集和排序规则

案例:

创建discuz数据库

MariaDB [(none)]> create database discuz default character set utf8;
Query OK, 1 row affected (0.00 sec)

2)修改数据库

MariaDB [(none)]> help alter database
Name: ‘ALTER DATABASE‘
Description:
Syntax:
ALTER {DATABASE | SCHEMA} [db_name]
alter_specification ...(修改数据库的字符集和排序规则)
ALTER {DATABASE | SCHEMA} db_name
UPGRADE DATA DIRECTORY NAME

alter_specification:
[DEFAULT] CHARACTER SET [=] charset_name
| [DEFAULT] COLLATE [=] collation_name

(注意:一般工作中,很少用到)

3)删除数据库

MariaDB [(none)]> help drop database
Name: ‘DROP DATABASE‘
Description:
Syntax:
DROP {DATABASE | SCHEMA} [IF EXISTS] db_name

案例:

MariaDB [(none)]> drop database discuz;
Query OK, 0 rows affected (0.00 sec)

操作对象:表

1)创建表

三种方式创建表

MariaDB [(none)]> help create table
Name: ‘CREATE TABLE‘
Description:
Syntax:
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
(create_definition,...)
[table_options]
[partition_options]

Or:

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
[(create_definition,...)]
[table_options]
[partition_options]
select_statement

Or:

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
{ LIKE old_tbl_name | (LIKE old_tbl_name) }

create_definition:
  col_name column_definition

column_definition:
  data_type [NOT NULL | NULL] [DEFAULT default_value]
[AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]
[COMMENT ‘string‘]
[COLUMN_FORMAT {FIXED|DYNAMIC|DEFAULT}]
[STORAGE {DISK|MEMORY|DEFAULT}]
[reference_definition]

reference_definition:
REFERENCES tbl_name (index_col_name,...)
[MATCH FULL | MATCH PARTIAL | MATCH SIMPLE]
[ON DELETE reference_option]
[ON UPDATE reference_option]

table_option:
ENGINE [=] engine_name
| AUTO_INCREMENT [=] value
| AVG_ROW_LENGTH [=] value
| [DEFAULT] CHARACTER SET [=] charset_name
| CHECKSUM [=] {0 | 1}
| [DEFAULT] COLLATE [=] collation_name
| COMMENT [=] ‘string‘
| CONNECTION [=] ‘connect_string‘
| DATA DIRECTORY [=] ‘absolute path to directory‘
| DELAY_KEY_WRITE [=] {0 | 1}
| INDEX DIRECTORY [=] ‘absolute path to directory‘
| INSERT_METHOD [=] { NO | FIRST | LAST }
| KEY_BLOCK_SIZE [=] value
| MAX_ROWS [=] value
| MIN_ROWS [=] value
| PACK_KEYS [=] {0 | 1 | DEFAULT}
| PASSWORD [=] ‘string‘
| ROW_FORMAT [=] {DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT}
| TABLESPACE tablespace_name [STORAGE {DISK|MEMORY|DEFAULT}]
| UNION [=] (tbl_name[,tbl_name]...)

总之:

create table 表名 (字段1 datatype 修饰符,字段2 datatype 修饰符......)table_option

例1

MariaDB [testdb]> create table tbl1 (id int not null,name varchar(100) not null,age tinyint);
Query OK, 0 rows affected (0.09 sec)

例2

MariaDB [testdb]> create table products (prod_id char(10) not null,vend_id char(10) not null,prod_name varchar(254) not null,prod_price decimal(8,2) not null,prod_desc varchar(1000));
Query OK, 0 rows affected (0.07 sec)

查看表结构

MariaDB [testdb]> desc products;
+------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+---------------+------+-----+---------+-------+
| prod_id | char(10) | NO | | NULL | |
| vend_id | char(10) | NO | | NULL | |
| prod_name | varchar(254) | NO | | NULL | |
| prod_price | decimal(8,2) | NO | | NULL | |
| prod_desc | varchar(1000) | YES | | NULL | |
+------------+---------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

2)删除表

MariaDB [testdb]> help drop table
Name: ‘DROP TABLE‘
Description:
Syntax:
DROP [TEMPORARY] TABLE [IF EXISTS]
tbl_name [, tbl_name] ...
[RESTRICT | CASCADE]

MariaDB [testdb]> drop table tbl1;
Query OK, 0 rows affected, 1 warning (0.03 sec)

3)修改表

MariaDB [testdb]> help alter table
Name: ‘ALTER TABLE‘
Description:
Syntax:
ALTER [ONLINE | OFFLINE] [IGNORE] TABLE tbl_name
[alter_specification [, alter_specification] ...]
[partition_options]

alter_specification:
table_options
| ADD [COLUMN] col_name column_definition
[FIRST | AFTER col_name ]
| ADD [COLUMN] (col_name column_definition,...)
| ADD {INDEX|KEY} [index_name]
[index_type] (index_col_name,...) [index_option] ...
| ADD [CONSTRAINT [symbol]] PRIMARY KEY
[index_type] (index_col_name,...) [index_option] ...
| ADD [CONSTRAINT [symbol]]
UNIQUE [INDEX|KEY] [index_name]
[index_type] (index_col_name,...) [index_option] ...
| ADD FULLTEXT [INDEX|KEY] [index_name]
(index_col_name,...) [index_option] ...
| ADD SPATIAL [INDEX|KEY] [index_name]
(index_col_name,...) [index_option] ...
| ADD [CONSTRAINT [symbol]]
FOREIGN KEY [index_name] (index_col_name,...)
reference_definition
| ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}
| CHANGE [COLUMN] old_col_name new_col_name column_definition
[FIRST|AFTER col_name]
| MODIFY [COLUMN] col_name column_definition
[FIRST | AFTER col_name]
| DROP [COLUMN] col_name
| DROP PRIMARY KEY
| DROP {INDEX|KEY} index_name
| DROP FOREIGN KEY fk_symbol
| MAX_ROWS = rows
| DISABLE KEYS
| ENABLE KEYS
| RENAME [TO|AS] new_tbl_name
| ORDER BY col_name [, col_name] ...
| CONVERT TO CHARACTER SET charset_name [COLLATE collation_name]
| [DEFAULT] CHARACTER SET [=] charset_name [COLLATE [=] collation_name]
| DISCARD TABLESPACE
| IMPORT TABLESPACE
| FORCE
| ADD PARTITION (partition_definition)
| DROP PARTITION partition_names
| TRUNCATE PARTITION {partition_names | ALL}
| COALESCE PARTITION number
| REORGANIZE PARTITION [partition_names INTO (partition_definitions)]
| ANALYZE PARTITION {partition_names | ALL}
| CHECK PARTITION {partition_names | ALL}
| OPTIMIZE PARTITION {partition_names | ALL}
| REBUILD PARTITION {partition_names | ALL}
| REPAIR PARTITION {partition_names | ALL}
| PARTITION BY partitioning_expression
| REMOVE PARTITIONING

index_col_name:
col_name [(length)] [ASC | DESC]

index_type:
USING {BTREE | HASH}

index_option:
KEY_BLOCK_SIZE [=] value
| index_type
| WITH PARSER parser_name
| COMMENT ‘string‘

table_options:
table_option [[,] table_option] ... (see CREATE TABLE options)

partition_options:
(see CREATE TABLE options)

为表增加一个字段

MariaDB [testdb]> ALTER TABLE products ADD vend_phone CHAR(20);

时间: 2024-08-22 10:24:04

SQL语句之数据定义语言(DDL)详解的相关文章

mysql学习笔记之六(数据定义语言DDL)

SQL语言包括四类种主要程序设计语言类别的语句:数据定义语言(DDL),数据操作语言(DML)及数据控制语言(DCL)还有事务控制语言(TCL). ※  数据定义语言(DDL),例如:CREATE.DROP.ALTER等语句. ※  数据操作语言(DML),例如:INSERT(插入).UPDATE(修改).DELETE(删除)语句. ※  数据查询语言(DQL),例如:SELECT语句.(一般不会单独归于一类,因为只有一个语句). ※  数据控制语言(DCL),例如:GRANT.REVOKE等语

数据存储——SQLite数据库存储——SQL语句——DML数据操作语言、内置函数聚合函数

一.连接查询之内连接 select   a.字段,b.字段   from   表1   a,表2   b    where   a.字段=b.字段  And ... 二.DML 数据操作语言 1.增  insert  into values 1-insert  into 表名  values (跟所有字段一一对应的值的列表) 2-insert  into 表名(字段列表)  values (跟字段列表一一对应的值的列表) 3-insert  into 表名  select  对应的字段列表  f

数据定义语言DDL - 建库建表

数据库文件构成:主文件(MDF).次要文件(NDF).日志文件(LDF) 其中主文件和日志文件是必须的,次要文件可以有多个(存放在不同分区以提高速度),也可以没有 创建数据库文件主要用到5个属性: name.filename.size.maxsize.filegrowth use master go if exists (select * from sysdatabases where name='db') drop database db go create database db on pr

【MySQL笔记】数据定义语言DDL

1.创建基本表 create table <表名> (<列名><数据类型>[列级完整性约束条件] [,<列名><数据类型>[列级完整性约束条件] ......... [,<表级完整性约束条件>]); 例: create table student( Sno char(5) not null unique, Sname char(20) unique, Ssex char(1), Sage int, Sdept char(15) );

数据定义语言DDL - 视图索引

视图是虚拟表,主要用于方便使用和安全性,如: 按照条件筛选和过滤行 保护敏感数据 降低复杂程度 抽象逻辑数据库 在使用视图时需要注意: 视图中可以包含多张表 视图可以基于视图再次创建 视图也允许增删改 如果排序ORDER BY,则必须使用TOP关键字 不能出现INTO关键字 不能出现变量 创建视图的语法 create view view_detail as select g.id as gid, g.name as gname, c.id as cid, c.name as cname from

DDL(数据定义语言)

1.Oracle中常见的数据类型分类:(A) 1.number(x,y) 数字类型,x表示最大长度,y表示精度对应java中除char外所有基本数据类型(byte.short.int.long.float.double.boolean) 2.varchar2(x) 可变字符串,x表示最大长度.对应java中String 3.char(x) 定长字符串,x表示最大长度. 对应java中String 4.long 长字符串,最大2G.对应java中String 5.Date,日期(年月日时分秒)对应

DDL(Data Definition Language)数据定义语言基础

数据定义语言DDL(Data Definition Language)是SQL语言的三个主要组成部分之一(另外两个分别是数据操作语言DML(Data Mainpulation Language)和数据控制语言(Data Control Language)). 1:创建用户Create User 创建用户使用如下的语法 Create user 用户名 identified by 密码 [default tablespace 缺省表空间] [temporary tablespace 临时表空间].如

oracle sql 基础(四):数据定义语言(创建和管理表、视图)

数据定义语言 (Data Definition Language, DDL) 是SQL语言集中负责数据结构定义与数据库对象定义的语言,由CREATE.ALTER与DROP三个语法所组成.数据库对象包括表.视图.索引.同义词.序列等(TABLE/VIEW/INDEX/SYN/SEQUENCE).我们先对创建和管理表和视图进行一个介绍. 一.创建和管理表 数据表是数据库中一个非常重要的对象,是其他对象的基础.可分为用户表和数据字典两类. 1.创建表(CREATE TABLE) CREATE TABL

Hive 官方手册翻译 -- Hive DDL(数据定义语言)

Hive DDL(数据定义语言) Confluence Administrator创建, Janaki Lahorani修改于 2018年9月19日 原文链接 https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL 翻译:Google Google翻译,金山软件 金山词霸 校对:南大通用 范振勇 (2018.9.26) 一.概述 这里是HiveQL DDL语句的文档,其中包括: CREATE 数据库/SCHEMA,表