侧边栏壁纸
博主头像
coydone博主等级

记录学习,分享生活的个人站点

  • 累计撰写 306 篇文章
  • 累计创建 51 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

数据定义语言DDL

coydone
2022-01-03 / 0 评论 / 0 点赞 / 308 阅读 / 1,763 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-04-06,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

库和表的管理

创建:create

修改:alter

删除:drop

库的管理

创建库

语法:create database [if not exists]库名;

#案例:创建库Books
CREATE DATABASE IF NOT EXISTS books ;

#创建数据库并指定字符集
CREATE DATABASE 数据库名 CHARACTER SET 字符集;

使用数据库

#查看当前所有的数据库
SHOW DATABASES; #有一个S,代表多个数据库

#查看当前正在使用的数据库
SELECT DATABASE(); #使用的一个 mysql 中的全局函数

#查看指定库下所有的表
SHOW TABLES FROM 数据库名;

#查看数据库的创建信息
SHOW CREATE DATABASE 数据库名;
或者:
SHOW CREATE DATABASE 数据库名\G

#使用/切换数据库
USE 数据库名;

修改库

RENAME DATABASE books TO 新库名; #新版不支持
#更改库的字符集
ALTER DATABASE books CHARACTER SET gbk;

删除库

DROP DATABASE IF EXISTS books;

表的管理

创建表

#语法:
create table 表名(
    列名 列的类型【(长度) 约束】,
    ...
    列名 列的类型【(长度) 约束】
)
# 查看表结构
DESC 表名;
#案例:创建表author
CREATE TABLE IF NOT EXISTS author(
    id INT,
    au_name VARCHAR(20),
    nation VARCHAR(10)
	-- 主键
	PRIMARY KEY (id)
)

复制表

#仅仅复制表的结构
CREATE TABLE copy LIKE author;

#复制表的结构+数据
CREATE TABLE copy2 
SELECT * FROM author;

#基于现有的表创建,同时导入数据
CREATE TABLE emp1 AS SELECT * FROM employees;

#只复制部分数据
CREATE TABLE copy3
SELECT id,au_name
FROM author 
WHERE nation='中国';

#仅仅复制某些字段
CREATE TABLE copy4 
SELECT id,au_name
FROM author
WHERE 0;  #0表示false 1表示true

CREATE TABLE emp2 AS SELECT * FROM employees WHERE 1=2; --创建的emp2是空表

修改表

# 语法:
alter table 表名 add|drop|modify|change column 列名[DEFAULT 默认值]
[FIRST|AFTER 字段名
2];

如追加一个列:ALTER TABLE dept80
 ADD job_id varchar(15);

#①修改列名
ALTER TABLE book CHANGE COLUMN publishdate pubDate DATETIME;
#②修改列的类型或约束
ALTER TABLE book MODIFY COLUMN pubdate TIMESTAMP;
#③添加新列
ALTER TABLE author ADD COLUMN annual DOUBLE; 
#④删除列
ALTER TABLE book_author DROP COLUMN  annual;
#⑤修改表名
ALTER TABLE author RENAME TO book_author; # TO可以省略
RENAME TABLE emp
 TO myemp;

删除表

DROP TABLE [IF EXISTS] book_author;
# 查看当前数据库的所有表, DROP TABLE 语句不能回滚
SHOW TABLES;

#通用的写法:
DROP DATABASE IF EXISTS 旧库名; #删除库
CREATE DATABASE 新库名; #创建库

DROP TABLE IF EXISTS 旧表名; #删除表

清空表

TRUNCATE TABLE语句:删除表中所有的数据,释放表的存储空间。

TRUNCATE语句不能回滚,而使用 DELETE 语句删除数据,可以回滚。

TRUNCATE TABLE detail_dept;

TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少,但 TRUNCATE 无事务且不触发 TRIGGER,有可能造成事故,故不建议在开发代码中使用此语句。说明:TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同。

0

评论区