编程菌zfn 潜水
  • 1发帖数
  • 1主题数
  • 0关注数
  • 0粉丝
开启左侧

MySQL 数据库 增删查改、克隆、外键 等操纵

[复制链接]
编程菌zfn 发表于 2021-8-13 14:09:24 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
目次
1、SQL 字段数据类型
2、查看数据库信息语句
3、SQL 语句

  • 创建、删除 数据库 数据表
  • 向表中添加、删除 记录、查询记录
  • 修改表名,添加、修改、删除 字段,添加唯一约束
  • 查看、删除、添加 表中的索引
  • 扩展功能,字段值自增等
4、数据表高级操作

  • 克隆表,将数据表的数据记录生成到新的表中
  • 删除记录后主键记录重头开始自增
  • 创建暂时表
5、创建外键约束,保证数据的完整性和一致性
6、MySQL 六种约束
<hr>数据库中有数据表,数据表中有一条一条的记录。
可以用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用户可以在所有终端长途登录,使用的暗码是123456grant all privileges on *.* to &#39;root&#39;@&#39;%&#39; identified by &#39;123456&#39;;#对所有数据库和所有表有操作权限 with grant optiongrant all privileges on *.* to &#39;root&#39;@&#39;%&#39; identified by &#39;123456&#39; with grant option;Navicat 连接参数

                               
登录/注册后可看大图

为了练习在Linux 中操作,下面的都是在 Linux 命令框中直接敲的。
Linux 中登录Mysqlmysql -u root -p暗码1.查看当前服务器中的数据库  SHOW DATABASES;2.查看数据库中包含的表USE 数据库名    #注意:数据库名区分巨细写SHOW TABLES;3.查看表的结构(设计、字段)DESCRIBE [数据库名.]表名或DESC 表名4. 查看创建表的命令SHOW CREATE TABLE 表名5.查询效果行转列查看 \GSELECT * FROM USER_INFO\G;6. 查看当前所在数据库select database()

                               
登录/注册后可看大图


                               
登录/注册后可看大图

SQL 语句

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



                               
登录/注册后可看大图

创建、删除 数据库 数据表

创建新的数据库
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, &#39;咖啡机&#39;, &#39;呆板齐全&#39;, &#39;2021-06-22&#39;, &#39;D0001&#39;);INSERT INTO USER_INFO VALUES (1002, &#39;奶茶机&#39;, &#39;设备&#39;, &#39;2021-06-23&#39;, &#39;D0001&#39;);#或一条命令添加多条INSERT INTO USER_INFO (ID,NAME,TYPE,ADD_TIME,IS_USED) VALUES (1003, &#39;牛奶&#39;, &#39;食品&#39;, &#39;2021-06-24&#39;, &#39;D0002&#39;),(1004, &#39;包装机&#39;, &#39;设备&#39;, &#39;2021-06-20&#39;, &#39;D0001&#39;),(1005, &#39;糖块&#39;, &#39;食品&#39;, &#39;2021-06-25&#39;, &#39;D0001&#39;),(1006, &#39;吸管&#39;, &#39;设备&#39;, &#39;2021-06-20&#39;, &#39;D0001&#39;),(1007, &#39;奶油&#39;, &#39;食品&#39;, &#39;2021-06-25&#39;, &#39;D0002&#39;);

                               
登录/注册后可看大图

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=&#39;仪器&#39; 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;1234

                               
登录/注册后可看大图


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

                               
登录/注册后可看大图

删除表中字段
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,&#39;牛奶&#39;,&#39;饮料&#39;,&#39;2021-06-28&#39;,&#39;D0001&#39;,&#39;已过期&#39;);#触发唯一键约束,新增失败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,&#39;暂时表&#39;);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,&#39;Football&#39;);INSERT INTO HOBBY_DETAIL VALUES(1,&#39;Messi&#39;,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,则该列是非唯一索引的第一列,其中允许在列中多次出现给定值。

精彩评论8

XunRuiCMS 发表于 2021-8-16 00:11:58 | 显示全部楼层
值得学习
新疆进销存财务软件 发表于 2021-8-14 22:04:49 | 显示全部楼层
转发了
汉堡包 发表于 2021-8-16 06:40:12 | 显示全部楼层
转发了
落雨丶无情 发表于 2021-8-16 10:20:19 | 显示全部楼层
转发了
依海临风J 发表于 2021-8-15 19:07:56 | 显示全部楼层
转发了
养码场007 发表于 2021-8-13 18:33:34 | 显示全部楼层
转发了
真有你的tv 发表于 2021-8-15 18:37:19 | 显示全部楼层
转发了
MLPlight 发表于 2021-8-15 08:03:55 | 显示全部楼层
mark
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

猜你喜欢
在线客服邮箱
wxcy#wkgb.net

邮箱地址#换为@

Powered by 创意电子 ©2018-现在 专注资源实战分享源码下载站联盟商城