表 是mysql服务用来存储数据的文件

库 存放表的目录

语法:

库名是有命名规则? (要记牢)

仅可以使用数字、字母、下划线、不能纯数字

区分字母大小写,

具有唯一性

不可使用指令关键字、特殊字符


建库的基本命令   create  database  库名;
mysql> CREATE DATABASE gamedb ;
mysql> CREATE DATABASE GAMEDB ;mysql> CREATE DATABASE GAMEDB ;  #已存在 会报错
mysql> CREATE DATABASE IF NOT EXISTS gamedb ;  如果不存在就建库 正常mysql> show  databases;  # 查看有哪些库mysql> drop database gamedb;   # 删除库
Query OK, 0 rows affected (0.00 sec)mysql> drop database gamedb;
ERROR 1008 (HY000): Can't drop database 'gamedb'; database doesn't existmysql> drop database if exists gamedb; 如果库存在就删除
Query OK, 0 rows affected, 1 warning (0.00 sec)mysql>

建表命令格式   (要记牢)

create  table  库名.表名(
表头名1  数据类型,
表头名2  数据类型,
表头名3  数据类型,
表头名4  数据类型
);

mysql> create database 学生库;
mysql> use  学生库;
mysql> create table 学生库.学生信息表(姓名 char(10) , 班级 char(9) , 性别 char(4) , 年龄 int );
mysql> show tables;
+---------------------+
| Tables_in_学生库    |
+---------------------+
| 学生信息表          |
+---------------------+
1 row in set (0.00 sec)mysql> desc 学生库.学生信息表;
+--------+----------+------+-----+---------+-------+
| Field  | Type     | Null | Key | Default | Extra |
+--------+----------+------+-----+---------+-------+
| 姓名   | char(10) | YES  |     | NULL    |       |
| 班级   | char(9)  | YES  |     | NULL    |       |
| 性别   | char(4)  | YES  |     | NULL    |       |
| 年龄   | int(11)  | YES  |     | NULL    |       |
+--------+----------+------+-----+---------+-------+
4 rows in set (0.00 sec)mysql> mysql> drop table 学生库.学生信息表;mysql> drop database 学生库;使用英文命名重新建表
mysql> create database  studb;
Query OK, 1 row affected (0.00 sec)mysql> create table studb.stu(name char(10) , class char(9) , gender char(4) , age int );
Query OK, 0 rows affected (0.29 sec)mysql> desc studb.stu;
+--------+----------+------+-----+---------+-------+
| Field  | Type     | Null | Key | Default | Extra |
+--------+----------+------+-----+---------+-------+
| name   | char(10) | YES  |     | NULL    |       |
| class  | char(9)  | YES  |     | NULL    |       |
| gender | char(4)  | YES  |     | NULL    |       |
| age    | int(11)  | YES  |     | NULL    |       |
+--------+----------+------+-----+---------+-------+
4 rows in set (0.00 sec)mysql>

E-R关系模型

实体——关系模型

 建表范式

第一范式

  • 第一范式(1NF)要求数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值。
  • 若某一列有多个值,可以将该列单独拆分成一个实体,新实体和原实体间是一对多的关系。
  • 在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。

第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式。

第一范式的合理遵循需要根据系统的实际需求来定。比如某些数据库系统中需要用到“地址”这个属性,本来直接将“地址”属性设计成一个数据库表的字段就行。但是如果系统经常会访问“地址”属性中的“城市”部分,那么就非要将“地址”这个属性重新拆分为省份、城市、详细地址等多个部分进行存储,这样在对地址中某一部分操作的时候将非常方便。这样设计才算满足了数据库的第一范式

第二范式

  • 满足第二范式(2NF)必须先满足第一范式(1NF)。
  • 第二范式要求实体中没一行的所有非主属性都必须完全依赖于主键;即:非主属性必须完全依赖于主键。
  • 完全依赖:主键可能由多个属性构成,完全依赖要求不允许存在非主属性依赖于主键中的某一部分属性。
  • 若存在哪个非主属性依赖于主键中的一部分属性,那么要将发生部分依赖的这一组属性单独新建一个实体,并且在旧实体中用外键与新实体关联,并且新实体与旧实体间是一对多的关系。

第二范式在第一范式的基础之上更进一层。第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)。也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。

比如要设计一个订单信息表,因为订单中可能会有多种商品,所以要将订单编号和商品编号作为数据库表的联合主键

第三范式

  • 满足第三范式必须先满足第二范式。
  • 第三范式要求:实体中的属性不能是其他实体中的非主属性。因为这样会出现冗余。即:属性不依赖于其他非主属性。
  • 如果一个实体中出现其他实体的非主属性,可以将这两个实体用外键关联,而不是将另一张表的非主属性直接写在当前表中。

第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。

比如在设计一个订单数据表的时候,可以将客户编号作为一个外键和订单表建立相应的关系。而不可以在订单表中添加关于客户其它信息(比如姓名、所属公司等)的字段。

修改表

语法格式:

mysql> alter table studb.stu rename studb.stuinfo;  修改表名
mysql> alter table studb.stuinfo drop age ;  删除字段
mysql> use studb;
Database changed
mysql> show tables;
+-----------------+
| Tables_in_studb |
+-----------------+
| stuinfo         |
+-----------------+
1 row in set (0.00 sec)mysql> desc stuinfo;
+--------+----------+------+-----+---------+-------+
| Field  | Type     | Null | Key | Default | Extra |
+--------+----------+------+-----+---------+-------+
| name   | char(10) | YES  |     | NULL    |       |
| class  | char(9)  | YES  |     | NULL    |       |
| gender | char(4)  | YES  |     | NULL    |       |
+--------+----------+------+-----+---------+-------+
3 rows in set (0.00 sec)mysql> alter table studb.stuinfo add  mail  char(30) ; 添加在末尾添加在指定位置 mysql> alter table  studb.stuinfo add  number  char(9) first , add  school char(10) after name;mysql> desc studb.stuinfo; 查看表结构
+--------+----------+------+-----+---------+-------+
| Field  | Type     | Null | Key | Default | Extra |
+--------+----------+------+-----+---------+-------+
| number | char(9)  | YES  |     | NULL    |       |
| name   | char(10) | YES  |     | NULL    |       |
| school | char(10) | YES  |     | NULL    |       |
| class  | char(9)  | YES  |     | NULL    |       |
| gender | char(4)  | YES  |     | NULL    |       |
| mail   | char(30) | YES  |     | NULL    |       |
+--------+----------+------+-----+---------+-------+mysql> alter table  studb.stuinfo   修改字段类型-> modify-> mail varchar(50) not null default "plj@tedu.cn";mysql> desc studb.stuinfo;
+--------+-------------+------+-----+-------------+-------+
| Field  | Type        | Null | Key | Default     | Extra |
+--------+-------------+------+-----+-------------+-------+
| number | char(9)     | YES  |     | NULL        |       |
| name   | char(10)    | YES  |     | NULL        |       |
| school | char(10)    | YES  |     | NULL        |       |
| class  | char(9)     | YES  |     | NULL        |       |
| gender | char(4)     | YES  |     | NULL        |       |
| mail   | varchar(50) | NO   |     | plj@tedu.cn |       |
+--------+-------------+------+-----+-------------+-------+mysql> alter table studb.stuinfo change  class class_name char(9) ; 修改表头名
mysql> desc studb.stuinfo;查看修改
+------------+-------------+------+-----+-------------+-------+
| Field      | Type        | Null | Key | Default     | Extra |
+------------+-------------+------+-----+-------------+-------+
| number     | char(9)     | YES  |     | NULL        |       |
| name       | char(10)    | YES  |     | NULL        |       |
| school     | char(10)    | YES  |     | NULL        |       |
| class_name | char(9)     | YES  |     | NULL        |       |
| gender     | char(4)     | YES  |     | NULL        |       |
| mail       | varchar(50) | NO   |     | plj@tedu.cn |       |
+------------+-------------+------+-----+-------------+-------+mysql> alter table  studb.stuinfo  drop school , drop 班级 ,drop email ;    一起删除多个表头
Query OK, 0 rows affected (0.59 sec)
Records: 0  Duplicates: 0  Warnings: 0mysql> desc  studb.stuinfo; 查看
+--------+----------+------+-----+---------+-------+
| Field  | Type     | Null | Key | Default | Extra |
+--------+----------+------+-----+---------+-------+
| number | char(9)  | YES  |     | NULL    |       |
| name   | char(10) | YES  |     | NULL    |       |
| gender | char(4)  | YES  |     | NULL    |       |
| age    | int(11)  | YES  |     | NULL    |       |
+--------+----------+------+-----+---------+-------+
4 rows in set (0.00 sec)mysql> 使用modify  修改表头的位置
mysql> alter  table studb.stuinfo  modify age int  after name ;
Query OK, 0 rows affected (0.47 sec)
Records: 0  Duplicates: 0  Warnings: 0mysql> desc studb.stuinfo;
+--------+----------+------+-----+---------+-------+
| Field  | Type     | Null | Key | Default | Extra |
+--------+----------+------+-----+---------+-------+
| number | char(9)  | YES  |     | NULL    |       |
| name   | char(10) | YES  |     | NULL    |       |
| age    | int(11)  | YES  |     | NULL    |       |
| gender | char(4)  | YES  |     | NULL    |       |
+--------+----------+------+-----+---------+-------+
4 rows in set (0.00 sec)

复制表:

复制表  (拷贝已有的表  类型系统命令 cp  的功能 )仅仅复制表头命令格式:(只复制表结构)表头和数据复制都复制的命令格式复制表  (拷贝已有的表  和系统命令 cp  的功能一样 )  作用: 备份已有的表  表头和数据复制都复制的 命令格式create  table  库名.表名   select  *  from  库名.表名 ;例子:拷贝 tarena库下的user表到   studb库里 表名不变
mysql> use studb;
mysql> show tables;
+-----------------+
| Tables_in_studb |
+-----------------+
| stuinfo         |
+-----------------+
1 row in set (0.00 sec)mysql> create table studb.user select  * from tarena.user;
mysql> show tables;
+-----------------+
| Tables_in_studb |
+-----------------+
| stuinfo         |
| user            |
+-----------------+mysql> select  * from studb.user; 查看数据了仅仅复制表头命令格式:(只复制表结构)命令格式  CREATE  TABLE 库.表   LIKE  库.表
例子
mysql> use studb;
Database changed
mysql> show tables;
+-----------------+
| Tables_in_studb |
+-----------------+
| stuinfo         |
| user            |
+-----------------+
2 rows in set (0.00 sec)mysql> create table studb.user2  like tarena.user;  仅仅复制表头
Query OK, 0 rows affected (0.24 sec)mysql> show tables;
+-----------------+
| Tables_in_studb |
+-----------------+
| stuinfo         |
| user            |
| user2           |
+-----------------+
3 rows in set (0.00 sec)mysql> select  * from studb.user2;
Empty set (0.00 sec)mysql> desc studb.user2;
+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| id       | int(11)     | NO   | PRI | NULL    | auto_increment |
| name     | char(20)    | YES  |     | NULL    |                |
| password | char(1)     | YES  |     | NULL    |                |
| uid      | int(11)     | YES  |     | NULL    |                |
| gid      | int(11)     | YES  |     | NULL    |                |
| comment  | varchar(50) | YES  |     | NULL    |                |
| homedir  | varchar(80) | YES  |     | NULL    |                |
| shell    | char(30)    | YES  |     | NULL    |                |
+----------+-------------+------+-----+---------+----------------+
8 rows in set (0.00 sec)mysql>

管理表记录

插入表记录 向表添加新行

修改表记录  对行里 列的值做记录

删除表记录

查询表记录

管理表记录 : 对表中存储的行做管理 ,操作包括  查看select   插入 insert into   更新 update  删除 delete
用来做练习的表结构
添加行   insert  into修改   update
删除行  delete mysql> desc studb.stuinfo;
+--------+----------+------+-----+---------+-------+
| Field  | Type     | Null | Key | Default | Extra |
+--------+----------+------+-----+---------+-------+
| number | char(9)  | YES  |     | NULL    |       |
| name   | char(10) | YES  |     | NULL    |       |
| age    | int(11)  | YES  |     | NULL    |       |
| gender | char(4)  | YES  |     | NULL    |       |
+--------+----------+------+-----+---------+-------+
4 rows in set (0.00 sec)mysql> select  * from  studb.stuinfo;
Empty set (0.00 sec)mysql> mysql> insert into studb.stuinfo  values("nsd211101" , "bob" , 19 , "girl");mysql> insert into studb.stuinfo  -> values-> ("nsd211102" , "jim",21,"boy"),("nsd211103","lucy",18,"girl");mysql> select  * from studb.stuinfo;
+-----------+------+------+--------+
| number    | name | age  | gender |
+-----------+------+------+--------+
| nsd211101 | bob  |   19 | girl   |
| nsd211102 | jim  |   21 | boy    |
| nsd211103 | lucy |   18 | girl   |
+-----------+------+------+--------+
3 rows in set (0.00 sec)mysql> insert into  studb.stuinfo(number,name) values("nsd211104","john");mysql> select  * from studb.stuinfo;
+-----------+------+------+--------+
| number    | name | age  | gender |
+-----------+------+------+--------+
| nsd211101 | bob  |   19 | girl   |
| nsd211102 | jim  |   21 | boy    |
| nsd211103 | lucy |   18 | girl   |
| nsd211104 | john | NULL | NULL   |
+-----------+------+------+--------+
4 rows in set (0.00 sec)mysql> insert into  studb.stuinfo(number,name) values("nsd211105","jerry"),("nsd211106","lilei");mysql> select  * from studb.stuinfo;                                     +-----------+-------+------+--------+
| number    | name  | age  | gender |
+-----------+-------+------+--------+
| nsd211101 | bob   |   19 | girl   |
| nsd211102 | jim   |   21 | boy    |
| nsd211103 | lucy  |   18 | girl   |
| nsd211104 | john  | NULL | NULL   |
| nsd211105 | jerry | NULL | NULL   |
| nsd211106 | lilei | NULL | NULL   |
+-----------+-------+------+--------+
6 rows in set (0.00 sec)mysql> insert into studb.stuinfo set number="nsd211107" , age=23 , gender="boy";mysql> select  * from  studb.stuinfo;
+-----------+-------+------+--------+
| number    | name  | age  | gender |
+-----------+-------+------+--------+
| nsd211101 | bob   |   19 | girl   |
| nsd211102 | jim   |   21 | boy    |
| nsd211103 | lucy  |   18 | girl   |
| nsd211104 | john  | NULL | NULL   |
| nsd211105 | jerry | NULL | NULL   |
| nsd211106 | lilei | NULL | NULL   |
| nsd211107 | NULL  |   23 | boy    |
+-----------+-------+------+--------+
7 rows in set (0.00 sec)mysql> insert into studb.stuinfo(number,name) (select number,name from studb.stuinfo where name in ("bob","jim","lucy") );mysql> select  * from studb.stuinfo;
+-----------+-------+------+--------+
| number    | name  | age  | gender |
+-----------+-------+------+--------+
| nsd211101 | bob   |   19 | girl   |
| nsd211102 | jim   |   21 | boy    |
| nsd211103 | lucy  |   18 | girl   |
| nsd211104 | john  | NULL | NULL   |
| nsd211105 | jerry | NULL | NULL   |
| nsd211106 | lilei | NULL | NULL   |
| nsd211107 | NULL  |   23 | boy    |
| nsd211101 | bob   | NULL | NULL   |
| nsd211102 | jim   | NULL | NULL   |
| nsd211103 | lucy  | NULL | NULL   |
+-----------+-------+------+--------+
10 rows in set (0.00 sec)

修改表记录:

                 更新  :修改行中列的数据  使用update 批量修改  (不加筛选条件修改) 命令格式: update  库名.表名   set  字段名 =  值 ,  字段名 =  值 ;批量修改
mysql> update studb.stuinfo  set age=30,gender="no";
mysql> select  * from studb.stuinfo;
+-----------+-------+------+--------+
| number    | name  | age  | gender |
+-----------+-------+------+--------+
| nsd211101 | bob   |   30 | no     |
| nsd211102 | jim   |   30 | no     |
| nsd211103 | lucy  |   30 | no     |
| nsd211104 | john  |   30 | no     |
| nsd211105 | jerry |   30 | no     |
| nsd211106 | lilei |   30 | no     |
| nsd211107 | NULL  |   30 | no     |
| nsd211101 | bob   |   30 | no     |
| nsd211102 | jim   |   30 | no     |
| nsd211103 | lucy  |   30 | no     |
+-----------+-------+------+--------+
10 rows in set (0.00 sec)仅修改与条件匹配
mysql> update  studb.stuinfo  set name="bob" where number="nsd211107";mysql> select  * from studb.stuinfo;
+-----------+-------+------+--------+
| number    | name  | age  | gender |
+-----------+-------+------+--------+
| nsd211101 | bob   |   30 | no     |
| nsd211102 | jim   |   30 | no     |
| nsd211103 | lucy  |   30 | no     |
| nsd211104 | john  |   30 | no     |
| nsd211105 | jerry |   30 | no     |
| nsd211106 | lilei |   30 | no     |
| nsd211107 | bob   |   30 | no     |
| nsd211101 | bob   |   30 | no     |
| nsd211102 | jim   |   30 | no     |
| nsd211103 | lucy  |   30 | no     |
+-----------+-------+------+--------+
10 rows in set (0.00 sec)

删除表记录:

删除  : 删除表中行  使用delete 仅删除符合条件的行   (删除命令有筛选条件)  delete   from  库.表  where  筛选条件;删除表里的所有行(删除命令有筛选条件)       delete   from  库.表;只删除与条件匹配的行
mysql> delete from  studb.stuinfo where name="bob";
Query OK, 3 rows affected (0.03 sec)mysql> select  * from studb.stuinfo;
+-----------+-------+------+--------+
| number    | name  | age  | gender |
+-----------+-------+------+--------+
| nsd211102 | jim   |   30 | no     |
| nsd211103 | lucy  |   30 | no     |
| nsd211104 | john  |   30 | no     |
| nsd211105 | jerry |   30 | no     |
| nsd211106 | lilei |   30 | no     |
| nsd211102 | jim   |   30 | no     |
| nsd211103 | lucy  |   30 | no     |
+-----------+-------+------+--------+
7 rows in set (0.00 sec)删除所有行
mysql> delete from studb.stuinfo;
Query OK, 7 rows affected (0.02 sec)mysql> select  * from studb.stuinfo;
Empty set (0.00 sec)

Mysql---表管理相关推荐

  1. MySQL表管理(文件)

    MySQL数据表的管理(文件) 1.进入数据库(进入文件夹) use 数据库名字; use gx_day14; 2.查看当前数据库下的所有 表(文件) show tables; 3.创建表(文件文件) ...

  2. mysql怎么维护_Navicat for MySQL 如何管理和维护表

    Navicat for MySQL 主要用于管理和开发MySQL数据库,支持单一程序,可同时连接到MySQL和MariaDB.该工具为数据库管理.开发和维护提供了直观而强大的图形界面,给MySQL或M ...

  3. mysql administrator 备份 表_【转】如何使用 MySQL Administrator 管理/备份/还原 My SQL 数据库...

    如何使用 MySQL Administrator 管理/备份/还原 My SQL 数据库 MySQL Administrator 是什么软件? MySQL Administrator 是一个专门用于管 ...

  4. MySQL基本管理(库管理与表管理)

    目录 数据库基本管理 连接MySQL数据库 连接方式 数据存储流程 mysql管理环境 MySQL基本操作 库管理命令 表管理命令 记录管理命令 练习:数据库基本管理 数据库基本管理 连接MySQL数 ...

  5. MySQL 数据库和表管理

    MySQL 基础之数据库和表管理 数据库中的默认库 INFORMATION_SCHEMA提供对数据库元数据的访问 ,有关MySQL服务器的信息,例如数据库或表的名称,列的数据类型或访问权限.有时用于此 ...

  6. SSM框架(spring+springmvc+mybatis)+Mysql实现的社区物业管理系统(功能包含分角色,报修管理、抄表管理、车位管理、房屋管理、业主管理、投诉管理、报修统计分析等)

    博客目录 SSM框架(spring+springmvc+mybatis)+Mysql实现的社区物业管理系统 实现功能截图 系统功能 使用技术 代码 完整源码 SSM框架(spring+springmv ...

  7. MySQL学习总结(2) --- 数据表管理(增删改查)、使用DQL查询数据(SELECT)

    MySQL学习总结(2) - 数据表管理(增删改查).使用DQL查询数据(SELECT) 1. 数据管理(增删改查) 数据库数据管理方法: a.通过SQLyog等管理工具管理数据库数据 b. 通过DM ...

  8. [MYSQL / Mariadb]数据库学习-库、表管理

    数据库基础的库.表管理 数据库基础 库管理 MySQL中加上system,可以执行Linux命令 一行写多个命令 表管理 建表 例: 查表架构 创建表记录 查表的创建命令和属性 加\G,可分行显示 修 ...

  9. 【⑩MySQL】:表管理,让数据管理不再困难

    前言 ✨欢迎来到小K的MySQL专栏,本节将为大家带来MySQL表/数据库创建和管理的讲解✨ 目录 前言 1. 基础知识 2. 创建和管理数据库 3.创建表 4. 修改表 5. 删除表 6.总结 1. ...

  10. mysql 账户管理_如何用MySQL 命令来实现账户管理

    今天我们要学习的是如何用MySQL 命令的方式来对账号进行管理,我们大家都知道在实际应用中MySQL 命令可以完成多种任务,以下的文章主要是对用MySQL 命令的方式来对账号进行管理的具体内容介绍. ...

最新文章

  1. 激活函数GELU()
  2. python 基础——变量
  3. ERP系统开发平台 (C#语言,支持多数据库)
  4. SAP ABAP应用服务器返回给前端的304 not modified是怎么设置的
  5. dotnet 找不到控制生成器_真的有自媒体原创文章生成器吗?
  6. android切换线程的方法,android 主线程切换方法
  7. 锁屏界面_强迫症必爱!iPhone怎样隐藏锁屏界面的手电筒、相机图标?
  8. Julia :vscode jupyter中更新Julia kernel版本
  9. SQL Server2005下载地址
  10. 【C语言】C语言从入门到精通 | 第3章 数据类型(一)— 自学笔记
  11. 微软启动Menlo计划;英特尔手机处理器上市(每日关注20100505)
  12. php eclipse 插件安装,Eclipse的PHP插件PHPEclipse安装和使用
  13. SpringCloud Alibaba Nacos作为配置中心(三)----------yml格式配置文件
  14. linux配置dhcp服务器authoritative参数作用
  15. PHP绘制正方形印章,ps绘制一款正方形的个人印章的方法
  16. 浅谈领域驱动设计(DDD:Domain-Driven Design)
  17. 扩展正则表达式之加号
  18. MotionEvent 初探
  19. [知识普及贴]中国人不可不知道的知识(怕以后找不到了~~) [经典,值得收藏]
  20. Regmap API 实验

热门文章

  1. 测试账号在线生成工具
  2. 快速上手EF+WebApi开发
  3. wood计算机二级考试,全国计算机等级考试一级MSOFFICE上机考试指导(二)
  4. 常规-分组-深度分离-分组深度分离卷积-参数量-计算量-dilation-python实现
  5. 代码敲累了,推荐几个免费电影资源网站
  6. NOI Online 2022
  7. 微信测试号申请以及微信授权登录
  8. ChatGPT写新闻-ChatGPT写文章
  9. CTFSHOW 新生杯web
  10. 成为运维界的「福尔摩斯」,你还需要3个帮手!