目录
1.mysql中,数据存储过程分为四步
2.数据库命名规则
3.创建数据库
4.管理数据库的方法
5.修改数据库(一般不改,最多改字符集)
6.删除数据库
7.如何创建数据表
8.修改表
9.重命名表
10.删除表(注意⚠️无法撤销)
11.清空表
12.DCL中commit 和 rollback
13.对比 truncate table 和 delete from
14.DDL 和 DML 的说明
15.在删除时选择truncate table还是delete?
1.mysql中,数据存储过程分为四步
创建数据库、确认字段、创建数据表、插入数据
2.数据库命名规则
1. 数据库名、表名不得超过30个字符,变量名限制为29个
2.必须只能包含 A–Z, a–z, 0–9, _共63个字符
3.数据库名、表名、字段名等对象名中间不要包含空格
4.同一个MySQL中,数据库不能同名;同一个库中,表不能重名;同一个表中,字段不能重名
5.必须保证你的字段没有和保留字、数据库系统或常用方法冲突。如果坚持使用,请在SQL语句中使用`(着重号)引起来
3.创建数据库
1.create database 数据库名
创建的数据库使用的是默认的字符集
2.create database 数据库 character set ‘字符集’
显示的指明了要创建的数据库的字符集
3.create database if not exists 数据库名 character set ‘utf8’(推荐使用这种)
如果要创建的数据库已经存在,则创建不成功,但不会报错。
CREATE DATABASE IF NOT EXISTS test01_office CHARACTER SET 'utf8';
4.管理数据库的方法
1.查看当前连接的数据库:show databases
2.切换数据库:use 数据库名
3.查看当前数据库表:show tables
4.查看当前使用的数据库:select database() from dual
5.查看置顶数据库下的保存表:show tables from 数据库名
SHOW DATABASES;
USE mydata;
SHOW TABLES;
SELECT DATABASE() FROM DUAL;
SHOW TABLES FROM mydata;
5.修改数据库(一般不改,最多改字符集)
1.alter database 数据库名 character set
2.查看数据库字符集:show create database 数据库名
ALTER DATABASE mydata CHARACTER SET 'utf8';
SHOW CREATE DATABASE mydata;
6.删除数据库
1.drop database 数据库名
2.推荐:drop database if exists 数据库名
如果要删除的数据库存在,删除成功;如果不存在,不会报错
DROP DATABASE IF EXISTS mydata;
7.如何创建数据表
前提:需要用户具备创建表的权限
方式一:
1.create table if not exists 表名
2.使用varchar时需要指明长度,用以定义字符
3.查看表结构:desc 表名
4.如果创建表时没有指明使用的字符集,则默认使用表所在的数据库的字符集
CREATE TABLE IF NOT EXISTS employees(
empNum INT,
lastName VARCHAR(50),
firstName VARCHAR(50),
mobile VARCHAR(25),
`code` INT,
jobTitle VARCHAR(50),
birth DATE,
note VARCHAR(255),
sex VARCHAR(5)
);
DESC employees;
方式二:基于现有的表,同时导入数据
1.create table 表名 as 查询语句
2.查询语句中字段的别名,可以作为新创建的表的字段的名称
3.此时查询语句结构比较丰富,使用前面各种select
CREATE TABLE IF NOT EXISTS dept02
AS
SELECT *
FROM atguigudb.departments;
DESC emp02;
8.修改表
1.添加一个字段:alter table 表名 add 字段名
此时:first/after 等可以指定位置
ALTER TABLE emp02
ADD salary2 DOUBLE(10,2) AFTER email;
2.修改一个字段:数据类型、长度:alter table 表名 modify 字段名 数据类型
ALTER TABLE emp02
MODIFY salary2 DOUBLE(20,4);
3.重命名一个字段:alter table 表名 change 字段名 修改名 数据类型
ALTER TABLE emp02
CHANGE salary2 my_salary DOUBLE(20,4);
4.删除一个字段:after table 表名 drop column 字段名
ALTER TABLE emp01 DROP COLUMN department_id;
DESC emp01;
9.重命名表
1.rename table 表名 to 新表名——推荐
RENAME TABLE emp02
TO emp22;
2.alter table 表名 rename to 新表名
10.删除表(注意⚠️无法撤销)
删除表结构+表数据,释放表空间:drop table if exists 表名
DROP DATABASE IF EXISTS mydata;
11.清空表
清空表,清空表中数据,但保留表结构:truncate table 表名;
TRUNCATE TABLE mydata;
12.DCL中commit 和 rollback
1.commit:提交数据;一旦执行commit,数据就被永久的保存在了数据库中,无法回滚
2.rollback:回滚数据;一旦执行rollback,就可以实现数据的回滚,回滚到最近的一次commit之后
13.对比 truncate table 和 delete from
相同点:
都可以实现对表中所有的数据的删除,同时保留表结构
不同点:
truncate table:一旦执行此操作,表数据全部清除;数据不可以回滚
delete from:一旦执行此操作,表数据全部清除(不带where);数据可以实现回滚
14.DDL 和 DML 的说明
1.DDL的操作一旦执行,就不可以回滚;指令SET autocommit= FALSE无效。(因为在执行完DDL之后一定会执行一次commit,而此操作commit操作不受SET autocommit= FALSE影响)
2.DML的操作默认情况,一旦执行,也是不可回滚。但是如果执行DML之前,执行了SET autocommit= FALSE,则执行的DML操作就可以实现回滚
15.在删除时选择truncate table还是delete?
使用delete:因为truncate table比delete速度快,且使用的系统和事务日志资源少,但Truncate无事务且不触发trigger,有可能造成事故,因此在开发中不建议使用此语句。
另外:truncate在功能上与不带where子句的delete语句相同。