MySQL数据库基础_DDL语句
** (Data Definition Language):数据定义语言**
★其中主要包括库和表的管理以及对表中列的操作
三个关键词:
创建: create
修改: alter
删除: drop
文章目录
一、库的管理
1、库的创建★
语法:
CREAT DATABASE [if not exists] 库名;
(if not exists 为容错性处理,可不写,但一般建议写上)
#举例:创建库Books
CREATE DATABASE IF NOT EXISTS books ;
库中已经有了books库
2、库的修改
更改库的库名为新库名
RENAME DATABASE books TO 新库名;
#更改库的字符集(默认utf8) 改为 gbk
ALTER DATABASE books CHARACTER SET gbk;
3、库的删除
DROP DATABASE IF EXISTS books;
二、表的管理
1.表的创建 ★
语法:
语法:
CREATE TABLE 表名(
列名 列的类型【(长度) 约束】,
列名 列的类型【(长度) 约束】,
列名 列的类型【(长度) 约束】,
...
列名 列的类型【(长度) 约束】
);
#举例:创建表Book,根据上面表创建的语法:
CREATE TABLE book(
id INT,#id为编号 INT为列的类型
bName VARCHAR(20),#bName为图书名 VARCHAR(长度)为列的类型
price DOUBLE,#price为价格 DOUBLE为列的类型
authorId INT,#authorId为作者编号 类型为INT
publishDate DATETIME#publishDate为出版日期 类型为DATETIME
);
DESC book;#查看表book的结构
#举例:创建表author
CREATE TABLE IF NOT EXISTS author(
id INT,
au_name VARCHAR(20),
nation VARCHAR(10)
);
DESC author;#查看表author的结构
2.表的修改:指对表中列的添加、修改、和删除
语法
ALTER TABLE 表名 ADD|DROP|MODIFY|CHANGE COLUMN 列名 【列类型 约束】;
这里引用上面两个已经创建好的books库两个表book和author来示范列的操作
①修改列名
#修改表book的publishdate列的名字为pubDate,后面要加上原本列的类型
ALTER TABLE book CHANGE COLUMN publishdate pubDate DATETIME;
②修改列的类型或约束
#修改book表的pubdate列的类型为TIMESTAMP;
ALTER TABLE book MODIFY COLUMN pubdate TIMESTAMP;
③添加新列
#给author表中添加新的一列,列名为annual,类型为DOUBLE;
ALTER TABLE author ADD COLUMN annual DOUBLE;
④删除列
#删除author表中的annual列
ALTER TABLE author DROP COLUMN annual;
修改表名
#修改author表的名字为book_author
ALTER TABLE author RENAME TO book_author;
SHOW TABLES FROM books;#查看books库中的所有表
author表变为book_author表
3.表的删除
#删除book_author表,如果存在的话(如果知道就不用写IF EXISTS)
DROP TABLE IF EXISTS book_author;
★★★一般建议通用的写法:
#删除旧库( IF EXISTS 为容错性处理,一般加上)
DROP DATABASE IF EXISTS 旧库名;
CREATE DATABASE 新库名;#创建新库
DROP TABLE IF EXISTS 旧表名;#删除旧表
CREATE TABLE 表名();#创建新表
4.表的复制★
#先给表book_author插入一些值
INSERT INTO book_author VALUES
(1,'哈利波特','英国'),
(2,'赫敏格兰杰','英国'),
(3,'罗恩韦斯莱','英国'),
(4,'邓布利多','英国');
SELECT * FROM book_author;#查询book_author表的数据
1.仅仅复制表的结构
#创建一个新表名为copy和book_author表一样的结构,但没有数据
CREATE TABLE copy LIKE book_author;
SELECT * FROM copy;#查询copy表的数据
只有结构没有数据;
2.复制表的结构+数据
CREATE TABLE copy2 #创建新表copy2
SELECT * FROM book_author;#把book_author表的结构和数据都复制给copy2
#只复制部分数据(只复制编号和姓名)
CREATE TABLE copy3#创建新表copy3
SELECT id,au_name
FROM book_author #从book_author表中复制列id,au_name
WHERE nation='英国';#除了nation列
#仅仅复制某些列(只复制编号和姓名列)
CREATE TABLE copy4 #创建新表copy4
SELECT id,au_name
FROM book_author
WHERE 0;#只从book_author表中复制id,au_name列的结构,但没有数据
感谢xdm看到这里,继续加油!