MYSQL初阶学习笔记——DDL语言
#DDL语言:对数据库中的某些对象(例如,database,table)进行管理
/*
DDL数据定义语言 data define language
库和表的管理
创建、修改、删除
创建 create
修改 alter
删除 drop
*/
#一、库的创建
#1.库的创建
/*
语法:
create database [if not exists] 库名;
*/
#案例:创建库books
CREATE DATABASE IF NOT EXISTS books;
#2.库的修改
##库名更改存在丢失数据风险,因此已废用
#更改库的字符集
ALTER DATABASE books CHARACTER SET gbk;
#3.库的删除
DROP DATABASE IF EXISTS books;
#二、表的管理
#1.表的创建(重)
/*
create table 表名(
列名 列的类型【(长度) 约束】,
列名 列的类型【(长度) 约束】,
列名 列的类型【(长度) 约束】,
列名 列的类型【(长度) 约束】,
………………
)
*/
USE books;
#案例:创建表book
CREATE TABLE book(
id INT,#编号
bName VARCHAR(20),#书名,最大二十个字符
price DOUBLE,#价格
authorId INT,#作者编号
publishDate DATETIME#出版日期
);
DESC book;
#案例:创建表author
CREATE TABLE author(
id INT,
au_name VARCHAR(20),
nation VARCHAR(10)
);
DESC author;
#2.表的修改
/*
alter table 表名 add|drop|modify|change|rename column 列名 【列类型 约束】;
增 |删除|改类型|改列名|改表名
*/
#a.修改列名
ALTER TABLE book CHANGE COLUMN publishDate puDate DATETIME;
#b.修改列的类型和约束
ALTER TABLE book MODIFY COLUMN puDate TIMESTAMP;
#c.添加新列
ALTER TABLE author ADD COLUMN annual DOUBLE ;#【first | after (字段名)】/添加至第一列或 某字段名后一列
#d.删除列
ALTER TABLE author DROP COLUMN annual;
#e.修改表名
ALTER TABLE author RENAME TO book_author;
#3.表的删除
DROP TABLE book_author;
SHOW TABLES;
#通用的写法:
DROP DATABASE IF EXISTS 旧库名;
CREATE DATABASE 新库名;
DROP TABLE IF EXISTS 旧表名;
CREATE TABLE 新表名();
#4.表的复制
INSERT INTO author
VALUE(1,'xx','xx')
,(2,'lm','ch')
,(3,'jenny','us');
SELECT * FROM author;
#a.复制表的结构,不复制数据
CREATE TABLE copy1 LIKE author;
SELECT * FROM copy1;
#b.复制表的结构+数据
CREATE TABLE copy2
SELECT * FROM author;
SELECT * FROM copy2;
#c.复制表的部分数据,几列或几行
CREATE TABLE copy3
SELECT id,au_name
FROM author
WHERE au_name LIKE '%x';
SELECT * FROM copy3;
#d.复制某些字段,即复制部分结构
CREATE TABLE copy4
SELECT id,au_name
FROM author
WHERE 0;
SELECT * FROM copy4;
#==============Test===============
#1. 创建表dept1
/*
NAME NULL? TYPE
id INT(7)
NAME VARCHAR(25)
*/
USE test;
CREATE TABLE dept1(
id INT(7),
NAME VARCHAR(25)
);
#2. 将表departments中的数据插入新表dept2中
CREATE TABLE dept2
SELECT department_name,department_id
FROM myemployees.`departments`;
#3. 创建表emp5
/*
NAME NULL? TYPE
id INT(7)
First_name VARCHAR (25)
Last_name VARCHAR(25)
Dept_id INT(7)
*/
CREATE TABLE emp5(
id INT(7),
first_name VARCHAR(25),
last_name VARCHAR(25),
dept_id INT(7)
);
#4. 将列Last_name的长度增加到50
ALTER TABLE emp5 MODIFY COLUMN last_name VARCHAR(50);
DESC emp5;
#5. 根据表employees创建employees2
USE myemployees;
CREATE TABLE employees2
SELECT last_name,job_id,salary
FROM employees;
#6. 删除表emp5
USE test;
DROP TABLE emp5;
#7. 将表employees2重命名为emp5
USE myemployees;
ALTER TABLE employees2 RENAME TO emp5;
#8.在表dept和emp5中添加新列test_column,并检查所作的操作
USE test;
ALTER TABLE dept1 ADD COLUMN test_column VARCHAR(10);
USE myemployees;
ALTER TABLE demp5 ADD COLUMN test_column VARCHAR(10);
#9.直接删除表emp5中的列 job_id
ALTER TABLE emp5 DROP COLUMN job_id;
/*
DDL数据定义语言 data define language
库和表的管理
创建、修改、删除
创建 create
修改 alter
删除 drop
*/
#一、库的创建
#1.库的创建
/*
语法:
create database [if not exists] 库名;
*/
#案例:创建库books
CREATE DATABASE IF NOT EXISTS books;
#2.库的修改
##库名更改存在丢失数据风险,因此已废用
#更改库的字符集
ALTER DATABASE books CHARACTER SET gbk;
#3.库的删除
DROP DATABASE IF EXISTS books;
#二、表的管理
#1.表的创建(重)
/*
create table 表名(
列名 列的类型【(长度) 约束】,
列名 列的类型【(长度) 约束】,
列名 列的类型【(长度) 约束】,
列名 列的类型【(长度) 约束】,
………………
)
*/
USE books;
#案例:创建表book
CREATE TABLE book(
id INT,#编号
bName VARCHAR(20),#书名,最大二十个字符
price DOUBLE,#价格
authorId INT,#作者编号
publishDate DATETIME#出版日期
);
DESC book;
#案例:创建表author
CREATE TABLE author(
id INT,
au_name VARCHAR(20),
nation VARCHAR(10)
);
DESC author;
#2.表的修改
/*
alter table 表名 add|drop|modify|change|rename column 列名 【列类型 约束】;
增 |删除|改类型|改列名|改表名
*/
#a.修改列名
ALTER TABLE book CHANGE COLUMN publishDate puDate DATETIME;
#b.修改列的类型和约束
ALTER TABLE book MODIFY COLUMN puDate TIMESTAMP;
#c.添加新列
ALTER TABLE author ADD COLUMN annual DOUBLE ;#【first | after (字段名)】/添加至第一列或 某字段名后一列
#d.删除列
ALTER TABLE author DROP COLUMN annual;
#e.修改表名
ALTER TABLE author RENAME TO book_author;
#3.表的删除
DROP TABLE book_author;
SHOW TABLES;
#通用的写法:
DROP DATABASE IF EXISTS 旧库名;
CREATE DATABASE 新库名;
DROP TABLE IF EXISTS 旧表名;
CREATE TABLE 新表名();
#4.表的复制
INSERT INTO author
VALUE(1,'xx','xx')
,(2,'lm','ch')
,(3,'jenny','us');
SELECT * FROM author;
#a.复制表的结构,不复制数据
CREATE TABLE copy1 LIKE author;
SELECT * FROM copy1;
#b.复制表的结构+数据
CREATE TABLE copy2
SELECT * FROM author;
SELECT * FROM copy2;
#c.复制表的部分数据,几列或几行
CREATE TABLE copy3
SELECT id,au_name
FROM author
WHERE au_name LIKE '%x';
SELECT * FROM copy3;
#d.复制某些字段,即复制部分结构
CREATE TABLE copy4
SELECT id,au_name
FROM author
WHERE 0;
SELECT * FROM copy4;
#==============Test===============
#1. 创建表dept1
/*
NAME NULL? TYPE
id INT(7)
NAME VARCHAR(25)
*/
USE test;
CREATE TABLE dept1(
id INT(7),
NAME VARCHAR(25)
);
#2. 将表departments中的数据插入新表dept2中
CREATE TABLE dept2
SELECT department_name,department_id
FROM myemployees.`departments`;
#3. 创建表emp5
/*
NAME NULL? TYPE
id INT(7)
First_name VARCHAR (25)
Last_name VARCHAR(25)
Dept_id INT(7)
*/
CREATE TABLE emp5(
id INT(7),
first_name VARCHAR(25),
last_name VARCHAR(25),
dept_id INT(7)
);
#4. 将列Last_name的长度增加到50
ALTER TABLE emp5 MODIFY COLUMN last_name VARCHAR(50);
DESC emp5;
#5. 根据表employees创建employees2
USE myemployees;
CREATE TABLE employees2
SELECT last_name,job_id,salary
FROM employees;
#6. 删除表emp5
USE test;
DROP TABLE emp5;
#7. 将表employees2重命名为emp5
USE myemployees;
ALTER TABLE employees2 RENAME TO emp5;
#8.在表dept和emp5中添加新列test_column,并检查所作的操作
USE test;
ALTER TABLE dept1 ADD COLUMN test_column VARCHAR(10);
USE myemployees;
ALTER TABLE demp5 ADD COLUMN test_column VARCHAR(10);
#9.直接删除表emp5中的列 job_id
ALTER TABLE emp5 DROP COLUMN job_id;