Mysql---表管理
表 是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)。
- 第二范式要求实体中没一行的所有非主属性都必须完全依赖于主键;即:非主属性必须完全依赖于主键。
- 完全依赖:主键可能由多个属性构成,完全依赖要求不允许存在非主属性依赖于主键中的某一部分属性。
- 若存在哪个非主属性依赖于主键中的一部分属性,那么要将发生部分依赖的这一组属性单独新建一个实体,并且在旧实体中用外键与新实体关联,并且新实体与旧实体间是一对多的关系。
第二范式在第一范式的基础之上更进一层。第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)。也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。
比如要设计一个订单信息表,因为订单中可能会有多种商品,所以要将订单编号和商品编号作为数据库表的联合主键
第三范式
- 满足第三范式必须先满足第二范式。
- 第三范式要求:实体中的属性不能是其他实体中的非主属性。因为这样会出现冗余。即:属性不依赖于其他非主属性。
- 如果一个实体中出现其他实体的非主属性,可以将这两个实体用外键关联,而不是将另一张表的非主属性直接写在当前表中。
第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。
比如在设计一个订单数据表的时候,可以将客户编号作为一个外键和订单表建立相应的关系。而不可以在订单表中添加关于客户其它信息(比如姓名、所属公司等)的字段。
修改表
语法格式:![](/assets/blank.gif)
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---表管理相关推荐
- MySQL表管理(文件)
MySQL数据表的管理(文件) 1.进入数据库(进入文件夹) use 数据库名字; use gx_day14; 2.查看当前数据库下的所有 表(文件) show tables; 3.创建表(文件文件) ...
- mysql怎么维护_Navicat for MySQL 如何管理和维护表
Navicat for MySQL 主要用于管理和开发MySQL数据库,支持单一程序,可同时连接到MySQL和MariaDB.该工具为数据库管理.开发和维护提供了直观而强大的图形界面,给MySQL或M ...
- mysql administrator 备份 表_【转】如何使用 MySQL Administrator 管理/备份/还原 My SQL 数据库...
如何使用 MySQL Administrator 管理/备份/还原 My SQL 数据库 MySQL Administrator 是什么软件? MySQL Administrator 是一个专门用于管 ...
- MySQL基本管理(库管理与表管理)
目录 数据库基本管理 连接MySQL数据库 连接方式 数据存储流程 mysql管理环境 MySQL基本操作 库管理命令 表管理命令 记录管理命令 练习:数据库基本管理 数据库基本管理 连接MySQL数 ...
- MySQL 数据库和表管理
MySQL 基础之数据库和表管理 数据库中的默认库 INFORMATION_SCHEMA提供对数据库元数据的访问 ,有关MySQL服务器的信息,例如数据库或表的名称,列的数据类型或访问权限.有时用于此 ...
- SSM框架(spring+springmvc+mybatis)+Mysql实现的社区物业管理系统(功能包含分角色,报修管理、抄表管理、车位管理、房屋管理、业主管理、投诉管理、报修统计分析等)
博客目录 SSM框架(spring+springmvc+mybatis)+Mysql实现的社区物业管理系统 实现功能截图 系统功能 使用技术 代码 完整源码 SSM框架(spring+springmv ...
- MySQL学习总结(2) --- 数据表管理(增删改查)、使用DQL查询数据(SELECT)
MySQL学习总结(2) - 数据表管理(增删改查).使用DQL查询数据(SELECT) 1. 数据管理(增删改查) 数据库数据管理方法: a.通过SQLyog等管理工具管理数据库数据 b. 通过DM ...
- [MYSQL / Mariadb]数据库学习-库、表管理
数据库基础的库.表管理 数据库基础 库管理 MySQL中加上system,可以执行Linux命令 一行写多个命令 表管理 建表 例: 查表架构 创建表记录 查表的创建命令和属性 加\G,可分行显示 修 ...
- 【⑩MySQL】:表管理,让数据管理不再困难
前言 ✨欢迎来到小K的MySQL专栏,本节将为大家带来MySQL表/数据库创建和管理的讲解✨ 目录 前言 1. 基础知识 2. 创建和管理数据库 3.创建表 4. 修改表 5. 删除表 6.总结 1. ...
- mysql 账户管理_如何用MySQL 命令来实现账户管理
今天我们要学习的是如何用MySQL 命令的方式来对账号进行管理,我们大家都知道在实际应用中MySQL 命令可以完成多种任务,以下的文章主要是对用MySQL 命令的方式来对账号进行管理的具体内容介绍. ...
最新文章
- 激活函数GELU()
- python 基础——变量
- ERP系统开发平台 (C#语言,支持多数据库)
- SAP ABAP应用服务器返回给前端的304 not modified是怎么设置的
- dotnet 找不到控制生成器_真的有自媒体原创文章生成器吗?
- android切换线程的方法,android 主线程切换方法
- 锁屏界面_强迫症必爱!iPhone怎样隐藏锁屏界面的手电筒、相机图标?
- Julia :vscode jupyter中更新Julia kernel版本
- SQL Server2005下载地址
- 【C语言】C语言从入门到精通 | 第3章 数据类型(一)— 自学笔记
- 微软启动Menlo计划;英特尔手机处理器上市(每日关注20100505)
- php eclipse 插件安装,Eclipse的PHP插件PHPEclipse安装和使用
- SpringCloud Alibaba Nacos作为配置中心(三)----------yml格式配置文件
- linux配置dhcp服务器authoritative参数作用
- PHP绘制正方形印章,ps绘制一款正方形的个人印章的方法
- 浅谈领域驱动设计(DDD:Domain-Driven Design)
- 扩展正则表达式之加号
- MotionEvent 初探
- [知识普及贴]中国人不可不知道的知识(怕以后找不到了~~) [经典,值得收藏]
- Regmap API 实验