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;
增加字段的sql语句
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

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。