创建和管理表

第十章: 创建和管理表

1.基础知识

1.1一条数据的存储规则

MySQL数据库从大到小依次是数据库函数,数据库,数据表,数据表的行与列

1.2标识符命名规则

  • 数据库名 表名不得超过30个字符,变量名限制为29个

  • 必须只能包括A-Z,a-z,0-9,**_**共63个字符

  • 数据库名,表名,字段名等对象名中间不能包括空格

  • 同一个软件中,数据库不能同名;同一个库中,表不能同名;同一个表中,字段不能同名

  • 必须保证你的字段没有和保留字,数据库系统或常用方法冲突,如果坚持使用,请在SQL语句中使用 ++着重号++引起来

  • 保持字段名和类型的一致性:在命名字段并为其指定数据类型的时候一定要保证一致性,假如数据结构在一个表里是整数,在另一个表里可就变成字符型了

2.创建和管理数据库

2.1 创建数据库

  • 方式1:创建数据库
sql 复制代码
CREATE DATABASE 数据库名
  • 方式2: 创建数据库并指定字符集
sql 复制代码
CREATE DATABASE 数据库名 CHARACTER SET 字符集
  • 方式3: 判断数据库是否已经存在,不存在则创建数据库(推荐)
sql 复制代码
CREATE DATABASE IF NOT EXISTS 数据库名

注意: DATABASE 不能改名. 一些可视化工具可以改名,他是新建库,把所有表福之道新库,再删旧库完成的.

2.2 管理数据库

  • 查看当前连接中的数据库都有哪些

    sql 复制代码
    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:(白手起家)
sql 复制代码
create table myemp1;
  • 方式二:(继承家产)
sql 复制代码
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.添加一个字段

sql 复制代码
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.修改一个字段 : 数据类型(不太可能),长度,默认值

sql 复制代码
alter table emp1
modify emp_name varchar(25);
#修改字段的默认值
alter table emp1
modify emp_name varchar(35) default 'zhangsan';

3.重命名字段

sql 复制代码
#重命名字段
alter table emp1
change emp_name emp_name2 varchar(45);

4.删除一个字段

sql 复制代码
alter table emp1
drop column emp_name2;

3.3重命名表

  • 方式1
sql 复制代码
rename table emp1
to emp11
  • 方式二
sql 复制代码
alter table emp1
rename to emp11

3.4删除表

不光将表结构删除掉,表结构也删除了

sql 复制代码
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的说明

  1. DDL的操作一旦执行,就不可以回滚

  2. DML的操作默认情况下,一旦执行,也是不可以回滚的. 但是如果在执行DML之前,执行了 SET automommit = FALSE,则DML操作就可以实现回滚

  3. MySQL8.0的新特性 : DDL的原子化

    1. 原子化: 要么都完成,要么都不完成(原子不可分)

    sql 复制代码
    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
相关推荐
鸥梨菌Honevid8 分钟前
QT解析文本框数据——概述
数据库·qt·mysql
今天又得骑车了31 分钟前
一、MySQL 8.0 之《EXPLAIN ANALYZE 执行计划》
数据库·mysql·database
野犬寒鸦1 小时前
MyBatis-Plus 中使用 Wrapper 自定义 SQL
java·数据库·后端·sql·mybatis
我爱一条柴ya2 小时前
【AI大模型】RAG系统组件:向量数据库(ChromaDB)
数据库·人工智能·pytorch·python·ai·ai编程
北北~Simple2 小时前
第一次搭建数据库
服务器·前端·javascript·数据库
鸢想睡觉2 小时前
【数据库基础 1】MySQL环境部署及基本操作
数据库·mysql
没有口袋啦2 小时前
《数据库》MySQL备份回复
数据库
c7_ln2 小时前
MYSQL C_API使用全解
c语言·数据库·mysql
karry01302 小时前
高并发导致重复key问题--org.springframework.dao.DuplicateKeyException
java·数据库·ide
叫我菜菜就好2 小时前
【node后端】搭建项目(Express+Ts+Typeorm+Mysql一步到位)
mysql·oracle·express