MySQL 数据库 增删查改、克隆、外键 等操作总结

目录
  • SQL 字段数据类型
  • 查看数据库信息语句
  • SQL 语句
    • 创建、删除 数据库 数据表
    • 向表中添加、删除 记录、查询记录
    • 修改表名,添加、修改、删除 字段,添加唯一约束
    • 查看、删除、添加 表中的索引
    • 扩展功能,字段值自增等
  • 数据表高级操作
    • 克隆表,将数据表的数据记录生成到新的表中
    • 删除记录后主键记录重头开始自增
    • 创建临时表
  • 创建外键约束,保证数据的完整性和一致性
  • MySQL 六种约束

数据库中有数据表,数据表中有一条一条的记录。

可以用Navicat 等远程连接工具链接数据库,不过数据库需要开启授权。

SQL 字段数据类型

  • int:整型,默认长度是11
  • float:单精度浮点,4字节32位
  • double:双精度浮点,8字节64位
  • char:不可变长的字符类型,读取速度快,耗空间,长度不足会补空格。
  • varchar:可变长的字符类型,但读取数据比 char 低,容易产生内存碎片
  • text :文本
  • image:图片

decimal(6,2) :定义6个有效长度数字,小数点后面有两位

char 最多支持 255 个字符,char 如果存入数据的实际长度比指定长度要小,会补空格至指定长度;如果存入的数据的实际长度大于指定长度,低版本的 Mysql 会被截取前 255个 字符,高版本会报错。

注 varchar 类型:在4.0版本以下,varchar(20),指的是20字节;5.0版本以上,varchar(20),指的是20字符。

查看数据库信息语句

首先登陆MySQL,也可以用SQL工具如 Navicat 远程连接,前提是要在Linux Mysql 中用 grant 进行授权,允许远程登录。

#授予root用户可以在所有终端远程登录,使用的密码是123456
grant all privileges on *.* to 'root'@'%' identified by '123456';

#对所有数据库和所有表有操作权限 with grant option
grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;

Navicat 连接参数

为了练习在Linux 中操作,下面的都是在 Linux 命令框中直接敲的。

Linux 中登录Mysql
mysql -u root -p密码
1.查看当前服务器中的数据库
SHOW DATABASES;
2.查看数据库中包含的表
USE 数据库名    #注意:数据库名区分大小写
SHOW TABLES;
3.查看表的结构(设计、字段)
DESCRIBE [数据库名.]表名
或
DESC 表名
4. 查看创建表的命令
SHOW CREATE TABLE 表名
5.查询结果行转列查看 \G
SELECT * FROM USER_INFO\G;
6. 查看当前所在数据库
select database()

SQL 语句

SQL语句用于 维护管理数据库,包括 数据查询、访问控制、数据更新、对象管理、备份等功能。

SQL语言 功能
DDL 数据定义语言,用于 创建、删除数据库对象,如库、表、索引等
DML 数据操纵语言,用于 对表中的数据进行管理
DQL 数据查询语言,用于 从数据表中查找符合条件的数据记录
DCL 数据控制语言,用于 设置或者更改数据库用户或角色权限

创建、删除 数据库 数据表

创建新的数据库

CREATE DATABASE 数据库名;
例如:CREATE DATABASE SCHOOL;

在数据库中新建表

CREATE TABLE 表名 (字段1 数据类型,字段2 数据类型[,...][,PRIMARY KEY (主键名)]);
#主键一般选择能代表唯一性的字段不允许取空值(NULL),一个表只能有一个主键。
例:USE SCHOOL;
CREATE TABLE STUDENT (ID int(10) NOT NULL,NAME varchar(20),AGE int(3),SEX char(2),PRIMARY KEY (ID));

删除表

DROP TABLE [数据库名.]表名;				#如不用USE进入库中,则需加上数据库名

删除数据库

DROP DATABASE 数据库名;   #会连库中的表一起删除
删除操作要小心,删除前记得被备份

向表中添加、删除 记录、查询记录

#先创建 STARBUCKS 数据库,再创建 USER_INFO 表,添加一些字段
CREATE DATABASE STARBUCKS;
USE STARBUCKS;
DROP TABLE IF EXISTS `USER_INFO`;
CREATE TABLE `USER_INFO`  (
  `ID` int(32) NOT NULL,
  `NAME` varchar(20) DEFAULT NULL,
  `TYPE` varchar(32) DEFAULT NULL,
  `ADD_TIME` varchar(20) DEFAULT NULL,
  `IS_USED` char(5) DEFAULT NULL,
  PRIMARY KEY (`ID`)
)

向表中添加记录

INSERT INTO 表名(字段1,字段2[,...]) VALUES(字段1的值,字段2的值,...);
例:
#一条一条全字段添加
INSERT INTO USER_INFO(ID,NAME,TYPE,ADD_TIME,IS_USED) VALUES (1001, '咖啡机', '机器齐全', '2021-06-22', 'D0001');
INSERT INTO USER_INFO VALUES (1002, '奶茶机', '设备', '2021-06-23', 'D0001');
#或一条命令添加多条
INSERT INTO USER_INFO (ID,NAME,TYPE,ADD_TIME,IS_USED) VALUES (1003, '牛奶', '食品', '2021-06-24', 'D0002'),
(1004, '包装机', '设备', '2021-06-20', 'D0001'),
(1005, '糖块', '食品', '2021-06-25', 'D0001'),
(1006, '吸管', '设备', '2021-06-20', 'D0001'),
(1007, '奶油', '食品', '2021-06-25', 'D0002');

SELECT 查询语句

SELECT 字段名1,字段名2[,...] FROM 表名 [WHERE 条件表达式];
#从0行开始共几行
SELECT * FROM 表名 limit 行数
#根据行数范围取记录数
SELECT * FROM 表名 limit 开始行数(不包括),从开始行数开始的共几行

UPDATE 更新
注意WHERE 加更新的条件,不然会更新所有

UPDATE 表名 SET 字段名1=字段值1[,字段名2=字段值2] [WHERE 条件表达式];
如 UPDATE USER_INFO SET TYPE='仪器' WHERE ID=1001;

DELETE 删除记录
注意WHERE 加删除记录的条件,不然会删除所有

DELETE FROM 表名 [WHERE 条件表达式];
例:delete from class2 where id=4;

修改表名,添加、修改、删除 字段,添加唯一约束

修改表名

ALTER TABLE 旧表名 RENAME 新表名;
例:ALTER TABLE USER_INFO RENAME USER_MESG;
SHOW TABLES;

表中添加字段

ALTER TABLE 表名 ADD 字段名 varchar(50) default '默认值';
#default 表示此字段设置默认值;可与 NOT NULL 配合使用,默认值立即生效
例:
ALTER TABLE USER_MESG ADD STATUS VARCHAR(20) DEFAULT '在用';

删除表中字段

ALTER TABLE 表名 DROP 字段名;

修改字段(列)名,添加唯一键约束

ALTER TABLE 表名 CHANGE 旧列名 新列名 数据类型 [unique key];
例:
ALTER TABLE USER_MESG CHANGE NAME DEV_NAME VARCHAR(30) UNIQUE KEY;
#验证唯一键约束,添加重名的约束字段
INSERT INTO USER_MESG VALUES (1008,'牛奶','饮料','2021-06-28','D0001','已过期');
#触发唯一键约束,新增失败
UNIQUE KEY 唯一键:可以用有空值,不能出现重复值,也不能为 NULL,

查看、删除、添加 表中的索引

#查看表有哪些索引
 SHOW INDEXES FROM 表名;

单独新增 去除唯一键约束

#给字段 DEV_NAM 增加唯一键约束
ALTER TABLE USER_MESG ADD UNIQUE INDEX (DEV_NAME);
#给字段 DEV_NAM 去除唯一键约束
#查看索引表中,字段 DEV_NAME 对应的 索引名 Key_name,根据索引名删除索引
ALTER TABLE USER_MESG DROP INDEX 索引名;

扩展功能,字段值自增等

use school;
CREATE TABLE IF NOT EXISTS AREA_INFO (                                                                                                         -> AREA_ID int(4) ZEROFILL PRIMARY KEY AUTO_INCREMENT,    #指定主键的另一种方式
-> AREA_NAME VARCHAR(20) NOT NULL UNIQUE KEY,
->  IS_USED CHAR(5) NOT NULL);
#---------------命令解释--------------------------------
#if not exists:表示检测要创建的表是否已存在,如果不存在就继续创建
#int(4) zerofill:表示若数值不满4位数,则前面用“0”填充,例0001
#auto_increment:表示此字段为自增长字段,即每条记录自动递增1,默认从1开始递增;自增长字段数据不可以重复;
#自增长字段必须是主键;字段类型必须是 int 类型,如添加的记录数据没有指定此字段的值且添加失败也会自动递增一次
#unique key:表示此字段唯一键约束,此字段数据不可以重复;一张表中只能有一个主键, 但是一张表中可以有多个唯一键
#not null:表示此字段不允许为NULL

数据表高级操作

克隆表,将数据表的数据记录生成到新的表中

方法一:使用 like

#先克隆表结构
#在插入所有数据
CREATE TABLE AREA_CLONE1 LIKE AREA_INFO;     #通过 LIKE 方法,复制 AREA_INFO 表结构生成 AREA_CLONE1 表
INSERT INTO AREA_CLONE1 SELECT * FROM AREA_INFO;

如果两张表结构一样,可将一张表的查询结果集返回给 另一张表
INSERT INTO 表1 SELECT * FROM 表2

方法二:直接克隆

#直接将源表的查询结果给创建的新表
CREATE TABLE 克隆表名(SELECT * FROM 源表名);
SHOW CREATE TABLE 克隆表名\G;					#获取数据表的表结构、索引等信息

注意:直接克隆无法复制原表的 主键、自动增长、约束、索引等配置。 用 LIKE 可以。

删除记录后主键记录重头开始自增

DELETE FROM 表名;
#DELETE清空表后,返回的结果内有删除的记录条目;DELETE工作时是一行一行的删除记录数据的;如果表中有自增长字段,使用DELETE FROM 删除所有记录后,再次新添加的记录会从原来最大的记录 ID 后面继续自增写入记录。
truncate table 表名;
#TRUNCATE 清空表后,没有返回被删除的条目;TRUNCATE 工作时是将表结构按原样重新建立,因此在速度上 TRUNCATE 会比 DELETE 清空表快;使用 TRUNCATE TABLE 清空表内数据后,ID 会从 1 开始重新记录。
#相当于直接格式化表

创建临时表

临时表是在当前连接中生效的表。

  • 临时表创建成功之后,使用 SHOW TABLES 命令是看不到创建的临时表的;
  • 临时表会在连接退出后被销毁。 如果在退出连接之前,也可以可执行增删改查等操作,比如使用 DROP TABLE 语句手动直接删除临时表。
CREATE TEMPORARY TABLE 表名 (字段1 数据类型,字段2 数据类型[,...][,PRIMARY KEY (主键名)]);
例:
CREATE TEMPORARY TABLE TEM_TABLE (ID int(4) PRIMARY KEY, REMARK VARCHAR(20));
INSERT INTO TEM_TABLE VALUES(1001,'临时表');
SELECT * from TEM_TABLE;

执行 quit 退出连接后,再次登录,就操作不了临时表了

创建外键约束,保证数据的完整性和一致性

外键的定义:如果同一个属性字段X 在表一中是主键,而在表二中不是主键,则字段X称为表二的外键。
主键表和外键表的理解:
(1)以公共关键字作主键的表为主键表(父表、主表)
(2)以公共关键字作外键的表为外键表(从表、外表)
注意:
1. 与外键关联的主表的字段必须设置为主键。
2. 要求从表不能是临时表,主从表的字段具备相同的数据类型、字符长度和约束。

#创建主表HOBBY
CREATE TABLE HOBBY (HOBID int(4),HOBNAME VARCHAR(50));
#创建从表HOBBY_DETAIL
CREATE TABLE HOBBY_DETAIL (ID int(4) PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(10),AGE int(3),HOBID int(4));
#为主表HOBBY 添加一个主键约束。主键名建议以“PK_”开头。
ALTER TABLE HOBBY ADD CONSTRAINT PK_HOBID PRIMARY KEY (HOBID);
#为从表HOBBY_DETAIL 表添加外键,并将 HOBBY_DETAIL 表的 hobid 字段和 HOBBY 表的 hobid 字段建立外键关联。
#外键名建议以“FK_”开头。
ALTER TABLE HOBBY_DETAIL ADD CONSTRAINT FK_HOB FOREIGN KEY (HOBID) REFERENCES HOBBY (HOBID);
DESC HOBBY_DETAIL ;
#插入新的数据记录时,要先主表再从表
INSERT INTO HOBBY VALUES(1,'Football');
INSERT INTO HOBBY_DETAIL VALUES(1,'Messi',32,1);

#删数数据记录时,要先从表再主表,也就是说删除主键表时必须先删除其他与之关联的表。
DROP TABLES HOBBY_DETAIL ;
DROP TABLES HOBBY ;
#查看和删除外键约束
SHOW CREATE TABLE HOBBY_DETAIL ;
ALTER TABLES HOBBY_DETAIL DROP foreign key FK_HOB ;  #FK_HOB 是之前添加的外键名
ALTER TABLES HOBBY_DETAIL DROP key FK_HOB ;
DESC HOBBY_DETAIL ;

去除外键后就可以删除表了
DROP TABLES HOBBY_DETAIL ;
DROP TABLES HOBBY ;

MySQL 六种约束

  • 主键约束(primary key)
  • 外键约束(foreign key)
  • 非空约束(not null)
  • 唯一性约束(unique [key|index])
  • 默认值约束(default)
  • 自增约束(auto_increment)

key 列值的含义:

如果键是 PRI,则列是主键或多列主键中的列之一。如果键是 UNI,则该列是唯一索引的第一列。(唯一索引允许多个空值,但可以通过检查NULL字段来判断该列是否允许空。)如果键为 MUL,则该列是非唯一索引的第一列,其中允许在列中多次出现给定值。

到此这篇关于MySQL 数据库 增删查改、克隆、外键 等操作的文章就介绍到这了,更多相关MySQL 数据库 增删查改内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • JDBC如何访问MySQL数据库,并增删查改

    导入驱动包,加载具体的驱动类 导包: 新建一个Java Project文件,在此文件夹下新建Folder文件命名lib(此文件夹下放一些导入的包) 将mysql-connector-java-xxxx.jar拖进来,右键Build Path→Add to Build Path:(这里我用的是mysql-connector-java-8.0.20.jar) 加载具体的驱动类: Class.forName("com.mysql.cj.jdbc.Driver"); 与数据库建立连接conne

  • MySQL中对于索引的基本增删查改操作总结

    创建索引 MySQL创建索引的语法如下: CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name [USING index_type] ON table_name (index_col_name,...) 其中对应的语法变量信息如下: [UNIQUE|FULLTEXT|SPATIAL] 中括号中的这三个关键字表示创建的索引类型,它们分别表示唯一索引.全文索引.空间索引三种不同的索引类型.如果我们不指定任何关键字,则默认为普通索引. index_name

  • MySQL的增删查改语句用法示例总结

    1.创建列 alter table tablename add colname type not null default '0′; 例: alter table mmanapp_mmanmedia add appid_id integer not null default 372; 2.删除列 alter table tablename drop column colname; 例: alter table mmanapp_mmanmedia drop column appid_id; 3.在

  • PyMySQL实现增删查改的简单使用

    我们在使用MySQL的时候,可以在MySQL的客户终端来操作数据库中的表,同时,也可以使用navicat等可视化的工具来操作数据表.但是,这只是操作个别数据,如果我们想要插入10万条数据,那肯定就不能这么做了. 我们可以通过程序写一个循环来自动插入,因此,PyMySQL就是使用python语言来直接操作数据库的一个接口. 明确了这一点,我们再开始介绍PyMySQL包: 1.PyMySQL的使用步骤: 2.案例: 2.1 查询数据库中的表的信息: # 需求:查询数据库person中info表的信息

  • python 实现mysql增删查改示例代码

    本地安装配置phpstduy 安装这个数据库管理工具 一会我们要手动创建数据库 数据表 字段 当然也可以代码创建 1.增 import pymysql ''' host 主机名 这里是你的ip地址 user 数据库账号 password 数据库密码 port 端口 mysql数据库端口 db 数据库名 基本语句 cursor = conn.cursor()#初始化一个游标对象 sql = "数据库操作语句" cursor.execute(sql)#执行该语句 conn.commit()

  • MySQL 数据库 增删查改、克隆、外键 等操作总结

    目录 SQL 字段数据类型 查看数据库信息语句 SQL 语句 创建.删除 数据库 数据表 向表中添加.删除 记录.查询记录 修改表名,添加.修改.删除 字段,添加唯一约束 查看.删除.添加 表中的索引 扩展功能,字段值自增等 数据表高级操作 克隆表,将数据表的数据记录生成到新的表中 删除记录后主键记录重头开始自增 创建临时表 创建外键约束,保证数据的完整性和一致性 MySQL 六种约束 数据库中有数据表,数据表中有一条一条的记录. 可以用Navicat 等远程连接工具链接数据库,不过数据库需要开

  • Spring Boot中使用Spring-data-jpa实现数据库增删查改

    在实际开发过程中,对数据库的操作无非就"增删改查".就最为普遍的单表操作而言,除了表和字段不同外,语句都是类似的,开发人员需要写大量类似而枯燥的语句来完成业务逻辑. 为了解决这些大量枯燥的数据操作语句,我们第一个想到的是使用ORM框架,比如:Hibernate.通过整合Hibernate之后,我们以操作Java实体的方式最终将数据改变映射到数据库表中. 为了解决抽象各个Java实体基本的"增删改查"操作,我们通常会以泛型的方式封装一个模板Dao来进行抽象简化,但是这

  • C# Access数据库增删查改的简单方法

    引用集:using System.Data.OleDb; 复制代码 代码如下: static string exePath = System.Environment.CurrentDirectory;//本程序所在路径 //创建连接对象OleDbConnection conn = new OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;data source=" + exePath + @"\文件名.mdb");

  • Python操作mysql数据库实现增删查改功能的方法

    本文实例讲述了Python操作mysql数据库实现增删查改功能的方法.分享给大家供大家参考,具体如下: #coding=utf-8 import MySQLdb class Mysql_Oper: def __init__(self,host,user,passwd,db): self.host=host self.user=user self.passwd=passwd self.database=db def db_connecet(self): try: #连接 conn=MySQLdb.

  • Yii2——使用数据库操作汇总(增删查改、事务)

    本文介绍了 Yii2--使用数据库操作汇总(增删查改.事务),具体如下: 对象操作 查询 //1.简单查询 $admin=Admin::model()->findAll($condition,$params); $admin=Admin::model()->findAll("username=:name",array(":name"=>$username)); $infoArr= NewsList::model()->findAll(&quo

  • Java操作Mongodb数据库实现数据的增删查改功能示例

    本文实例讲述了Java操作Mongodb数据库实现数据的增删查改功能.分享给大家供大家参考,具体如下: 首先,我们在windows下安装mongodb数据库,安装教程可查看前面一篇文章:http://www.jb51.net/article/85605.htm 代码如下: package io.mogo; import java.util.Map; import org.apache.commons.lang3.StringUtils; import com.mongodb.BasicDBObj

  • 使用springboot整合mybatis-plus实现数据库的增删查改示例

    1.准备数据库中的表及表中的数据 /* SQLyog Ultimate v12.09 (64 bit) MySQL - 5.6.11 : Database - mp ********************************************************************* */ /*!40101 SET NAMES utf8 */; /*!40101 SET SQL_MODE=''*/; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQ

  • MongoDB入门教程之细说MongoDB数据库的增删查改操作

    看过上一篇,相信大家都会知道如何开启mongodb了,这篇就细说下其中的增删查改,首先当我们用上一篇同样的方式打开mongodb,突然 傻眼了,擦,竟然开启不了,仔细观察"划线区域"的信息,发现db文件夹下有一个类似的"lock file"阻止了mongodb的开启,接下来我们要做的就 是干掉它,之后,开启成功,关于mongodb的管理方式将在后续文章分享.  一: Insert操作 上一篇也说过,文档是采用"K-V"格式存储的,如果大家对JSO

随机推荐