sql常用语句之DDL

一、什么是sql

SQL(Structured Query Language):即结构化查询语言,是在关系型数据库(诸如Mysql、SQL Server、Oracle等)里进行相关操作的标准化语言,可以根据sql的作用分为以下几种类型:

DDL(Data Definition Language): 数据定义语言
DML(Data Manipulation Language): 数据操纵语言
TCL(Transaction Control Language): 事务控制语言
DQL(Data Query Language): 数据查询语言
DCL(Data Control Language): 数据控制语言

二、DDL介绍

DDL(Data Definition Language)主要用于对数据库对象进行操作的过程,主要由create(添加)、alter(修改)、drop(删除)和 truncate(删除) 四个关键字完成。

三、什么是数据库对象

数据库对象是数据库的组成部分,常见的有以下几种:
1、表(Table )
        数据库中的表与我们日常生活中使用的表格类似,它也是由行(Row) 和列(Column)组成的。列由同类的信息组成,每列又称为一个字段,每列的标题称为字段名。行包括了若干列信息项。一行数据称为一个或一条记录,它表达有一定意义的信息组合。一个数据库表由一条或多条记录组成,没有记录的表称为空表。每个表中通常都有一个主关键字,用于惟一地确定一条记录。
2、索引(Index)
        索引是根据指定的数据库表列建立起来的顺序。它提供了快速访问数据的途径,并且可监督表的数据,使其索引所指向的列中的数据不重复。
3、视图(View)
        视图看上去同表似乎一模一样,具有一组命名的字段和数据项,但它其实是一个虚拟的表,在数据库中并不实际存。在视图是由查询数据库表产生的,它限制了用户能看到和修改的数据。由此可见,视图可以用来控制用户对数据的访问,并能简化数据的显示,即通过视图只显示那些需要的数据信息。
4、图表(Diagram)
        图表其实就是数据库表之间的关系示意图。利用它可以编辑表与表之间的关系。
5、缺省值(Default)
        缺省值是当在表中创建列或插入数据时,对没有指定其具体值的列或列数据项赋予事先设定好的值。
6、规则(Rule)
        规则是对数据库表中数据信息的限制。它限定的是表的列。
7、触发器(Trigger)
        触发器是一个用户定义的SQL事务命令的集合。当对一个表进行插入、更改、删除时,这组命令就会自动执行。
8、存储过程(Stored Procedure)
        存储过程是为完成特定的功能而汇集在一起的一组SQL 程序语句,经编译后存储在数据库中的SQL 程序。
9、用户(User)
        所谓用户就是有权限访问数据库的人。

4、DDL的常用语句

4.1、创建数据库

#创建一个名为test的数据库
#create database 库名;
create database test;
#创建一个名为test的数据库并指定字符集和编码格式
create database test default charset utf8 collate utf8_general_ci;

4.2、删除数据库

#删除test数据库
drop database test;

4.3、查看当前链接所有的库

#查看所有的库
show databases;

4.4、选择操作的数据库

#切换到test数据库下
#use 库名;
use test

4.5、查看库下所有的表

#查看该库下所有的表
show tables;

4.6、创建表 

#创建一个表,并指定id为自增主键
create table test01 (
   id  bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
   name varchar(64) NOT NULL UNIQUE KEY COMMENT '姓名',
   sex varchar(4) NOT NULL DEFAULT '1' COMMENT '性别,1男2女',
   birthday timestamp(4) DEFAULT NULL COMMENT '生日',
   modified_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
   create_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
  PRIMARY KEY ( id )
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='信息表';

4.7、删除表

#删除表test01,并清除表中数据
drop table test01;
#清除表test01中的数据,保留表格式
truncate table test01;

4.8、复制表 

#复制test01的表结构及约束到copyfromtest01,不会复制数据
#create table 新表名 like 原表名
create table copyfromtest01 like test01;
#复制test01的表结构及数据到copyfromtest02,不会复制约束
#create table 新表名 as 查询sql
create table copyfromtest02 as select * from test01;

4.9、修改表名

#修改表名
#alter table 原表名 rename 新表名;
alter table test01 rename test02;

4.10、查看建表语句

#查看test的建表语句
show create table test \G;

4.11、给表新增字段

#给test01新增字段
#alter table 表名 add 字段名 类型属性
alter table test01 add `index` varchar(64) DEFAULT NULL COMMENT '索引';

4.12、删除表中字段

#删除表test01中的name字段
#alter table 表名 drop 字段名;
alter table test01 drop name;

4.13、给表新增索引

#给test01新增主键索引
#alter table 表名 add 索引+字段;
alter table test01 add PRIMARY KEY (`id`);
#给test01的name字段添加到test02的name外键索引
alter table test01 add foreign key (`name`) references test02(`name`);

4.14、删除表中的索引

#删除test01中name的主键索引
alter table test01 drop PRIMARY KEY
#删除test01中的索引
alter table 表名 drop index 索引名
#删除test01中的外键索引
#alter table 表名 drop foreign key 索引名
alter table test01 drop foreign key `name`

4.15、修改表的默认值

#修改test01中sex的默认值为null
alter table test01 alter sex default null;
#删除test01中sex的默认值
alter table test01 alter sex drop default;

4.16、修改表中约束

#禁用test01中name的约束
alter table test01 name disable keys
#启用test01中name的约束
alter table test01 name enable keys

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值