MYSQL笔记2

创建表:

格式:

create table 表名(表选项)

表定义选项格式为:

列名1 列类型1 约束, 列名2 列类型2 约束,......

默认的情况是,表被创建到当前的数据库中。若表已存在、没有当前数据库或者数据库不存在,则会出现错误

使用 crate table 创建表时,必须指定以下信息:

要创建的表的名称不区分大小写,不能使用SQL语言中的关键字,如DROP、ALTER、INSER等。

必须指定数据表中每个列(字段)的名称和数据类型,如果创建多个列,要用逗号隔开

示例1:创建数据库并新建表

数据表属于数据库,在创建数据表之前,应使用语句"use <数据库>"指定操作在哪个数据库中进行,如果没有选择数据库,就会抛出 No database selected 的错误

mysql> select database(); # 查看当前数据库

mysql> create database mydb2_stuinfo; # 创建数据库

Query OK, 1 row affected (0.02 sec)

mysql> use mydb2_stuinfo; # 使用数据库

Database changed

mysql> create table student1(id int, name varchar(30), sex char(2), age int unsigned, score float, addr varchar(50));

Query OK, 0 rows affected (0.02 sec)

mysql> show tables;

+-------------------------+

| Tables_in_mydb2_stuinfo |

查看表:

show语句:显示当前数据库中已有的数据表

格式:show table [from 数据库名] [like wild]

describe语句:查看数据表中各列的信息

格式:{describe|desc}表名[列名]; # or show columns from 表名称;

mysql> desc student1;

+-------+--------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+-------+--------------+------+-----+---------+-------+

| id | int | YES | | NULL | |

| name | varchar(30) | YES | | NULL | |

| sex | char(2) | YES | | NULL | |

| age | int unsigned | YES | | NULL | |

| score | float | YES | | NULL | |

| addr | varchar(50) | YES | | NULL | |

+-------+--------------+------+-----+---------+-------+

6 rows in set (0.00 sec)

mysql> show columns from student1;

+-------+--------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+-------+--------------+------+-----+---------+-------+

| id | int | YES | | NULL | |

| name | varchar(30) | YES | | NULL | |

| sex | char(2) | YES | | NULL | |

| age | int unsigned | YES | | NULL | |

| score | float | YES | | NULL | |

| addr | varchar(50) | YES | | NULL | |

+-------+--------------+------+-----+---------+-------+

6 rows in set (0.00 sec)

字段意义分析:

Field :字段名称

type:字段类型

null:是否允许为空

key:索引类型

default:默认值

extra:填充

使用\G可以查看更全面的表定义信息:
mysql> show create table student1\G
*************************** 1. row ***************************
Table: student1
Create Table: CREATE TABLE `student1` (
`id` int DEFAULT NULL,
`name` varchar(30) DEFAULT NULL,
`sex` char(2) DEFAULT NULL,
`age` int unsigned DEFAULT NULL,
`score` float DEFAULT NULL,
`addr` varchar(50) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)

删除表

格式: drop table [if exists] 表名:

注意:

用户必须拥有执行 drop table 命令的权限,否则数据表不会被删除

推荐使用if exists字句,即先判断是否存在,存在则删除,如:

mysql> drop table if exists tb1;

Query OK, 0 rows affected (0.01 sec)

修改表:

更改表名(重命名):

语法1:

alter table 表名 rename 新表名;

语法2:

rename table 表名 to 新表名;

添加新列:

alter table 表名 add 新列名 列类型 [after|first] 列名;

after:在指定列之后插入新列

first:在第一列插入新列

注意:无before关键字

例:增加一列password

mysql> alter table student1 add password char(8);

Query OK, 0 rows affected (0.01 sec)

Records: 0 Duplicates: 0 Warnings: 0

注意:数据库操作后得到的反馈,表明操作的结果。这个信息表示:

Records: 2: 表示成功导入或处理的记录总数是2条。

Duplicates: 0: 表示在操作过程中没有发现重复的记录。

Warnings: 0: 表示在操作过程中没有产生任何警告。

删除列:

格式:alter table 表名 drop 列名;

修改列名:

格式: alter table 表名 change 旧列名 新列名 列类型;

修改列类型:

格式:alter table 表名 modifyn 列名 列类型;

修改列位置:

格式:alter table 表名 modify 列名 列类型 after 某列;

复制表的结构:

方法一:在create table语句的末尾添加like子句,可以将源表的表结构复制到新表中,语法格式如下:

create table 新表名 like 源表 #(结构)

方法二:在create table语句的末尾添加一个select语句,可以实现表结构的复制,甚至可以将源表的表记录拷贝到新表中,下面的语法格式将源表的结构和记录都拷贝到新表中:

create table 新表名 select * from 源表 #(结构和内容)
方法三:如果已经存在一张结构一致的表,复制数据:

insert into 表名 select * from 来源表; #(同结构和类型可以插入数据)

数据库字典

数据字典:类似于系统编目或花名册,它保存数据库服务器上的元数据信息(数据库的整体属性信息)

元数据(meta data):即"data about data" 关于数据的数据,理解为描述数据的数据,内容包括:数据库的属性信息、数据表的属性信息、字段的属性信息、视图的属性信息、用户信息、统计类信息等。

information_schema数据库是MySQL系统自带的数据库,它提供了数据库元数据的访问方式

show databases;

+--------------------+

| information_schema |

| mydb1_test |

| mydb2_stuinfo |

| mydb3_employee |

| mydb4_product |

| mysql |

| performance_schema |

| sys |

+--------------------+

8 rows in set (0.00 sec)

information_schema就像是MySQL实例的一个百科全书,记录了数据库当中大部分我们需要了结的信息,比如字符集,权限相关,数据库实体对象信息,外检约束,分区,压缩表,表信息,索引信息,参数,优化,锁和事物等等。

通过information_schema我们可以窥透整个MySQL实例的运行情况,可以了结MySQL实例的基本信息,甚至优化调优,维护数据库等,可以说是真正的一部百科全书。

mysql> use information_schema ;

mysql> show tables;

常用表解释

tables-存放数据库里所有的数据表、以及每个表所在数据库。

schemata-存放数据库里所有的数据库信息

views-存放数据库里所有的视图信息。

columns-存放数据库里所有的列信息。

triggers-存放数据库里所有的触发器。

routines-存放数据库里所有存储过程和函数。

key_column_usage-存放数据库所有的主外键

table_constraints-存放数据库全部约束。

statistics-存放了数据表的索引。

......

删除的注意事项:
1.删除数据库表之前,一定要备份数据,以免数据丢失。
2.在删除数据库表之前,要确保该表没有被其他的表所引用,否则可能会破坏外键约束。
3.在删除数据库表之前,要确保该表的数据已经备份,并且不再需要使用。
4.在删除数据库表之前,要确保该表的数据已经被清空,否则会破坏外键约束。
5.在删除数据库表之前,要确保该表的所有索引都已经被删除。如果还存在索引,可能会导致删除失败。
6.在删除数据库表之前,要确保该表的所有相关程序已经停止运行,以免影响其他程序的正常运行。

相关推荐
一江寒逸19 小时前
零基础从入门到精通MongoDB(附加篇):面试八股文全集
数据库·mongodb·面试
Xpower 1719 小时前
算法学习笔记 Day 1:迁移学习与域自适应(DANN/CORAL)
笔记·学习·算法
星晨雪海19 小时前
Redis 分布式 ID 生成器
数据库·redis·分布式
后季暖19 小时前
agent学习笔记4
笔记·学习
有味道的男人19 小时前
抖音关键词搜索,视频详情api
linux·数据库·音视频
丁丁点灯o19 小时前
Oracle中金额数字转换为大写汉字
数据库·oracle
fly spider19 小时前
MySQL之Buffer Pool
数据库·mysql
程序员老邢19 小时前
【技术底稿 13】内网 Milvus 2.3.0 向量数据库全流程部署(商助慧 AI 底座,Attu 可视化)
java·数据库·人工智能·ai·语言模型·milvus
凯尔萨厮19 小时前
Spring学习笔记(基于注解)
笔记·学习·spring
XDHCOM19 小时前
ORA-38456: 属性集状态不一致,Oracle报错修复对比,远程处理方案选择
数据库·oracle