创建和管理表
第十章: 创建和管理表
1.基础知识
1.1一条数据的存储规则
MySQL数据库从大到小依次是数据库函数
,数据库
,数据表
,数据表的行与列
1.2标识符命名规则
-
数据库名 表名不得超过30个字符,变量名限制为29个
-
必须只能包括A-Z,a-z,0-9,_共63个字符
-
数据库名,表名,字段名等对象名中间不能包括空格
-
同一个软件中,数据库不能同名;同一个库中,表不能同名;同一个表中,字段不能同名
-
必须保证你的字段没有和保留字,数据库系统或常用方法冲突,如果坚持使用,请在SQL语句中使用 着重号引起来
-
保持字段名和类型的一致性:在命名字段并为其指定数据类型的时候一定要保证一致性,假如数据结构在一个表里是整数,在另一个表里可就变成字符型了
2.创建和管理数据库
2.1 创建数据库
-
方式1:创建数据库
CREATE DATABASE 数据库名
-
方式2: 创建数据库并指定字符集
CREATE DATABASE 数据库名 CHARACTER SET 字符集
-
方式3: 判断数据库是否已经存在,不存在则创建数据库(推荐)
CREATE DATABASE IF NOT EXISTS 数据库名
注意: DATABASE 不能改名. 一些可视化工具可以改名,他是新建库,把所有表福之道新库,再删旧库完成的.
2.2 管理数据库
-
查看当前连接中的数据库都有哪些
show databases;
-
切换数据库
use mytest2;
-
查看当前数据库中保存的数据表
show tables
-
查看当前使用的数据库
select database(); from dual;
-
查看指定数据库下保存的数据表
show tables from mysql;
2.3修改数据库
-
更改数据库的字符集
alter database mytest2 character set 'utf8'
2.4 删除数据库
建议第二种
3 . 创建数据表
3.1 如何创建数据表
-
方式1:(白手起家)
create table myemp1;
-
方式二:(继承家产)
create table emp3
as
select employees.employee_id,employees.last_name,departments.department_name
from employees join departments
on employees.department_id = departments.department_id;
查询语句中字段的别名,乐意作为新创建的表的字段名称
此时的查询语句可以结构比较丰富
3.2修改表
1.添加一个字段
alter table emp1
add slaary double(10,2);
alter table emp1
add phone_number varchar(20) first;
alter table emp1
add email varchar(45) after emp_name;
2.修改一个字段 : 数据类型(不太可能),长度,默认值
alter table emp1
modify emp_name varchar(25);
#修改字段的默认值
alter table emp1
modify emp_name varchar(35) default 'zhangsan';
3.重命名字段
#重命名字段
alter table emp1
change emp_name emp_name2 varchar(45);
4.删除一个字段
alter table emp1
drop column emp_name2;
3.3重命名表
-
方式1
rename table emp1
to emp11
-
方式二
alter table emp1
rename to emp11
3.4删除表
不光将表结构删除掉,表结构也删除了
drop table if exists 数据表
3.5清空表
删除表中的数据,但所有表结构保留
truncate table emp1
4.DCL中的COMMIT 和 ROLLBACK
COMMIT : 提交数据.一旦执行COMMIT ,则数据就永远保存在了数据库中,意味着数据不可以回滚
ROLLBACK: 回滚数据,一旦执行rollback,则可以实现数据的回滚. 回滚到最近的一次COMMIT之后
5.对比 TRUNCATE TABLE 和 DELETE FROM
-
相同点: 都可以实现表中所有数据的删除,同时保留表结构
-
不同点:
-
TRUNCATE TABLE : 一旦执行此操作, 表数据全部清除. 同时,数据是不可以回滚的.
-
DELETE FROM : 一旦执行此操作,表数据可以全部清除,而数据是可以回滚的
-
6.DDL 和 DML的说明
-
DDL的操作一旦执行,就不可以回滚
-
DML的操作默认情况下,一旦执行,也是不可以回滚的. 但是如果在执行DML之前,执行了
SET automommit = FALSE
,则DML操作就可以实现回滚 -
MySQL8.0的新特性 : DDL的原子化
-
原子化: 要么都完成,要么都不完成(原子不可分)
-
create database mytest; use mytest; create table book1( book_id int, book_name varchar(255) ); show tables; drop table book1,book2; show tables;#在8.0中 由于没有book2语句执行失败,不会删除book1
-