DDL语言
Posted rijiyuelei
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DDL语言相关的知识,希望对你有一定的参考价值。
数据库定义语言
库和表的管理
一、库的管理
创建、修改、删除
二、表的管理
创建、修改、删除
创建:create 修改:alter 删除:drop database 库 table 表
一、库的管理
库的创建:create database 库名
#案例:创建库Books CREATE DATABASE Books #为了提高容错性 CREATE DATABASE IF NOT EXISTS Books /* 如果库已经存在了就不创建,并且也不报错。 如果库不存在就创建 */
IF EXISTS仅仅在表的删除和表的创建时使用
exists : 强调的是是否返回结果集,不要求知道返回什么
exists (sql 返回结果集为真) 有
not exists (sql 不返回结果集为真)没有
#通用的写法 DROP DATABASE IF EXISTS 旧的库名 CREATE DATABASE 新的库名 DROP TABLE IF EXISTS 旧的表名 CREATE TABLE 新的表名
库名的修改
/* 一般不修改,修改数据会出现问题 */ /* 需要修改: 1.停止mysql服务 2.修改文件夹名 3.启动MySQL服务 */
更改库的字符集 CHARACTER字符集
ALTER DATABASE books CHARACTER SET gbk;
库的删除
DROP DATABASE books; DROP DATABASE IF EXISTS books;
二、表的管理
表的创建
create table 表名( 列名 列的类型【长度 约束】, 列名 列的类型【长度 约束】, 列名 列的类型【长度 约束】, ... 列名 列的类型【长度 约束】
案例:创建book表
CREATE TABLE book( id INT,#编号 bName VARCHAR(20),#书名的最大长度 20个字符 price DOUBLE,#价格 authorId INT,#作者编号,实现分类存储减少冗余 publishDate datetime #出版日期 );
案例,创建author表
CREATE TABLE author (
id INT,
au_name VARCHAR(20),
nation VARCHAR(20)
)
查看表的结构
DESC book; DESC author;
表的修改
语法 ALTER TABLE 表名 add|drop|modify|change COLUMN 列名 新的列名 类型【约束】 ①修改列名 after table 表名 change column 旧列名 新列名 类型; ②修改列的类型或约束 after table 表名 modify column 列名 新类型【新约束】 ③添加新列 after table 表名 add column 列名 类型【(first|after 字段名)控制添加的位置】默认就是在最后 ④删除列 after table 表名 drop column 列名; ⑤修改表名 after table 表名 rename 【to】 新表名
#①修改列名 ALTER TABLE book CHANGE COLUMN publishDate pubDate datetime #②修改列的类型或约束 ALTER TABLE book MODIFY COLUMN pubDate TIMESTAMP; #③添加新列 ALTER TABLE author ADD COLUMN annual DOUBLE; #④删除列 ALTER TABLE author DROP COLUMN annual; #⑤修改表名 ALTER TABLE author RENAME TO book_author;
表的删除
DROP TABLE book_author;
表的复制
INSERT INTO author VALUES(1,‘村上春树‘,‘日本‘), (2,‘莫言‘,‘中国‘), (3,‘冯唐‘,‘中国‘), (4,‘金庸‘,‘中国‘);
1.仅仅复制表的结构
create table 表名 like 旧表 CREATE TABLE copy LIKE author;
2.复制表的结构+数据
create table 表名 select 查询列表 from 旧表【where筛选】 CREATE TABLE copy2 SELECT * FROM author;
3.复制表的结构+部分数据
CREATE TABLE copy3 SELECT id,au_name FROM author WHERE nation=‘中国‘;
4.复制表的某些字段(列),不要数据
CREATE TABLE copy4 SELECT id,au_name FROM author WHERE 0;
添加新列
after table 表名 ADD column 列名 类型【(first|after 字段名)控制添加的位置】默认就是在最后。很少使用
CREATE TABLE test2( t1 INT, t2 INT, t3 INT ); DESC test2 ALTER TABLE test2 ADD COLUMN ddd INT FIRST; ALTER TABLE test2 ADD COLUMN ddd2 INT AFTER t2;
ALTER TABLE test2 ADD COLUMN ddd3 INT last;不支持,默认就是在最后
#2将表department中的数据插入新表dept2中
CREATE TABLE dept2 SELECT department_id,department_name FROM myemployees.departments; /* 可以跨库复制表的结构 库名.表名 */
以上是关于DDL语言的主要内容,如果未能解决你的问题,请参考以下文章