创建和管理表

第十章: 创建和管理表

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
相关推荐
gmaajt2 分钟前
html怎么转astro island模式_Astro Islands如何隔离HTML组件
jvm·数据库·python
四维迁跃2 分钟前
CSS如何使用Less的Merge功能合并多个属性值_通过逗号或空格组织css参数
jvm·数据库·python
m0_741481782 分钟前
C#怎么实现全文搜索 C#如何集成Elasticsearch或Lucene.Net实现全文检索功能【数据库】
jvm·数据库·python
Elastic 中国社区官方博客3 分钟前
Elasticsearch:智能搜索 - AI builder,workflow 及 skills
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
u0109147604 分钟前
如何通过后端 API 同时向两个 Webhook 发送表单数据
jvm·数据库·python
步辞7 分钟前
CSS如何对表单输入框获取焦点时实现标签上浮过渡
jvm·数据库·python
瀚高PG实验室10 分钟前
类型转换导致SQL不走索引的案例
数据库·sql·瀚高数据库
qq_4327036610 分钟前
c++怎么在不使用STL的情况下利用Win32 API进行低级文件IO【底层】
jvm·数据库·python
池佳齐13 分钟前
软考高级系统架构设计师备考(二十七):软件工程—系统运行与软件维护
数据库·系统架构
qq_372906931 小时前
mysql用户无法访问存储过程权限提示_MySQL EXECUTE赋权方案
jvm·数据库·python