本帖最后由 镖师 于 2023-7-12 15:21 编辑
创建/使用数据库
create database 数据库名;
create database 数据库名 character set 字符集;
create database if not exists 数据库名; -- 判断数据库是否存在,不存在则创建;
show databases; -- 查看当前所有的数据库
select database(); -- 查看当前正在使用的数据库
show tables from 数据库名; -- 查看指定库下所有的表
show create database 数据库名; -- 查看数据库的创建信息
use 数据库名; -- 使用/切换 数据库
修改数据库
更改字符集
alter database 数据库名 character set 字符集; -- 字符集包括 gbk utf8等
删除数据库
drop database 数据库名;
drop database if exists 数据库名; -- 推荐
创建表
crreate table IF NOT EXISTS emp (
emp_id INT auto_increment, -- int类型,自增
emp_name varchar(20),
salary double,
birthday date,
primary key (emp_id) -- 主键
);
desc emp;
查看表结构
MySQL支持使用 DESCRIBE/DESC 语句查看数据表结构,也支持使用 SHOW CREATE TABLE 语句查看数据表结构。
SHOW CREATE TABLE 表名;
使用 SHOW CREATE TABLE 语句不仅可以查看表创建时的详细语句,还可以查看存储引擎和字符编码。
修改表
- 向已有的表中添加列
- 修改现有表中的列(包括 数据类型、长度、默认值)
- 删除现有表中的列
- 重命名现有表中的列
追加一个列
alter table 表名 add [column] 字段名 字段类型 [first | after 字段名];
alter table dept80 add job_id varchat(15);
修改一个列
alter table 表名 modify [column] 字段名1 字段类型 [default 默认值] [first | after 字段名2];
alter table dept80 modify last_name varchar(30);
alter table dept80 modify salary double(9, 2) default 1000;
重命名一个列
alter table 表名 change [column] 旧列名 新列名 新数据类型;
alter table dept80 change department_name dept_name varchar(15);
删除一个列
alter table 表名 drop [column] 字段名;
alter table dept80 drop column job_id;
重命名表
方式1:rename table emp to myemp;
方式2:alter table dept rename [to] detail_dept;
删除表
- 在MySQL中,当一张数据表`没有与其他任何数据表形成关联关系`时,可以将当前数据表直接删除。
- 数据和结构都被删除
- 所有正在运行的相关事务被提交
- 所有相关索引被删除
DROP TABLE [IF EXISTS] 数据表1 [, 数据表2, …, 数据表n];
- DROP TABLE 语句 **不能回滚**
清空表
TRUNCATE TABLE detail_dept;
TRUNCATE语句**不能回滚**,而使用 DELETE 语句删除数据,可以回滚
DCL(TCL)中的 COMMIT 和 ROLLBACK
- COMMIT:提交数据。一旦执行COMMIT,则数据就被永久的保存在了数据库中,意味着数据不可以回滚。
- ROLLBACK:回滚数据。一旦执行ROLLBACK,则可以实现数据的回滚。回滚到最近的一次COMMIT之后。
记住:
DDL 的所有操作,一旦执行,就不可以回滚;
DML 的操作默认情况下,一旦执行,也是不可以回滚的,但是如果在执行DML前,执行了 SET autocommit = false,则执行的DML操作就可以实现回滚commit;
set autocommit = false;
delete from 表名;
ROLLBack;
TRUNCATE TABLE 不能回滚、Delete From 能回滚,生产上,要用哪个?
不建议使用 TRUNCATE TABLE ,虽然它速度快、占用系统资源少;
阿里开发规范:
【参考】TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少,但 TRUNCATE 无事务且不触发 TRIGGER,有可能造成事故,故不建议在开发代码中使用此语句。
说明:TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同。
|