《MySQL基础教程》笔记3

Web  2023年11月28日 am9:24发布10个月前更新 91es.com站长
104 0 0

前言

本章主要学习对表的创建,插入,删除等操作命名。最近有空,看了《MySQL基础教程-西泽梦路》,简单的做一下笔记。

记录于此,方便自己回忆。

MySQL中对大小写没有区分,我这里习惯性用小些。

正文

我这以Window版的phpstudy软件验证。

需要进入这个目录,才可以使用mysql命令

D:\phpstudy_pro\Extensions\MySQL5.7.26\bin

进入正文

复制表

复制表可以快速的创新一样记录或结构的表。

一般有下面三种方式:

  1. 复制表的列结构和记录

  2. 仅复制表的列结构

  3. 仅复制记录

复制表的列结构和记录
create table 新表名 select * from 旧表名;

新表名和旧表名的列和数据一样。

create table info5 select * from info;
仅复制表的列结构
create table 新表名 select * from 旧表名;

新表名列结构跟旧表名一样。

 create table info6 like info;

通过select查询,info6是没有数据的。

通过desc查询,info6的列结构跟info一样。

仅复制记录

也就是只复制表中的数据。

insert into 新表名[已存在] select * from 旧表名[存在];

就是吧旧表名的数据插入到新表名。

新表名和旧表名的列格式一样!

insert into info6 select * from info3;
选择某一列进行复制

除了上面的,还可以选则表中某一列的记录进行复制。

ps:其实就是insert和select的组合命令

insert into 新表名(指定复制的列名) select 查询条件 from 旧表名;

举个例子,下面是指复制empid到name中。

empid和name数据类型是一样的,要不然会提示错误

insert into tb3(name) select empid from tb3;

如果设置了id为主键,但又不是自动增长,就会出现如下的错误提示。

mysql> insert into info6(page) select page from info6;
ERROR 1364 (HY000): Field 'id' doesn't have a default value

因此,重新创建了info7

create table info7(id int auto_increment primary key, name varchar(10));

因为id是自动增长的,把info5中的数据name字段复制到info7中

insert into info7(name) select name from info5;

删除表

记录删除后大多无法复原,所以在执行DROP或DELETE命令的时候一定要慎重。

drop table 表名;

来个例子

drop table info6;
mysql> show tables;
+----------------+
| Tables_in_book |
+----------------+
| info           |
| info1          |
| info2          |
| info3          |
| info4          |
| info5          |
| info7          |
+----------------+

上面没有info6啦,删除后,无法恢复!

如果表不存在,会有如下提示

mysql> drop table info6;
ERROR 1051 (42S02): Unknown table 'book.info6'
当目标表存在时将其删除

在目标表不存在的情况下执行DROP命令会发生错误,但如果加上了IF EXISTS,就能够抑制错误的发生。

drop table if exists 表名;
# 存在,就删除
drop table if exists info5;
# 不存在,但不会报错
drop table if exists info6;

删除数据库

drop database 数据库名;

删除后,数据库就无法恢复。

删除所有记录

就是删除表中的所有数据,表的列结构还存在。

delete from 表名;
 delete from info7;

查询后,没有数据了,但列结构存在。

mysql> select * from info7;
Empty set (0.00 sec)
mysql> desc info7;
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(11)     | NO   | PRI | NULL    | auto_increment |
| name  | varchar(10) | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)

使用mysqladmin命令创建和删除数据库

My SQL里提供了一个名为mysqladmin的强大命令来创建数据库。我们可以执行mysqladmin命令创建数据库。这个命令不是My SQL监视器的命令,所以请直接从命令提示符或终端输入。

创建
mysqladmin -u root -prootroot create 数据库名

D:\phpstudy_pro\Extensions\MySQL5.7.26\bin是mysql的目录

D:\phpstudy_pro\Extensions\MySQL5.7.26\bin>mysqladmin -u root -prootroot create cccc
mysqladmin: [Warning] Using a password on the command line interface can be insecure.

此时就创建了cccc数据库。

删除
mysqladmin -u root -prootroot drop 数据库名

效果

D:\phpstudy_pro\Extensions\MySQL5.7.26\bin>mysqladmin -u root -prootroot drop cccc
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
Dropping the database is potentially a very bad thing to do.
Any data stored in the database will be destroyed.

Do you really want to drop the 'cccc' database [y/N] y
Database "cccc" dropped
其他命令
mysql 数据库名 -u 用户名 -p密码 -e "mysql命令"

举个例子

# 数据库名  : book
# 用户      : root
# 密码      : rootroot
# mysql命令 : select * from info
mysql book -u root -prootroot -e "select * from info"

参考文章

  1. 《MySQL基础教程-西泽梦路》

 历史上的今天

  1. 2022: Android画中画简介(0条评论)
  2. 2018: 常用Linux命令摘抄之一(0条评论)
  3. 2017: git diff提示filemode发生改变(0条评论)
  4. 2017: [摘抄]Linux之find命令详解(0条评论)
版权声明 1、 本站名称: 91易搜
2、 本站网址: 91es.com3xcn.com
3、 本站内容: 部分来源于网络,仅供学习和参考,若侵权请留言
3、 本站申明: 个人流水账日记,内容并不保证有效

暂无评论

暂无评论...

随机推荐

[摘]Android性能优化篇之内存优化--内存泄漏

SHUI知道这篇文章对Android性能优化篇之内存优化--内存泄漏总结得很到位,基本上涵盖了。感谢感谢。什么是内存泄漏当一个对象已经不需要在使用了,本应该被回收,而另一个正在使用的对象持有它的引用,导致对象不能被回收。因为不能被及时回收的本该被回收的内存,就产生了内存泄漏。如果内存泄漏太多...

[摘]Android源码之init.rc文件规则和init.c解析

前言本文主要讲解Android源码之init.rc文件规则和init.c解析。本文摘抄网上大牛的文章(链接文末),方便自己查阅。多谢分享。正文init.c与init.rc在源码中的位置:init.c : /system/core/initinit.rc : /system/core...

Android消息机制之二简介(2)

我们通过上一篇《Android消息机制Handler,Looper,Message,MessageQueue关系之一》知道,Android的消息机制必须将Handler,Looper,Message,MessageQueue一起“组织”起来,而且是缺一不可。比如在子线程中使用Handler必须先L...

[摘]彻底理解Java中堆和栈的区别

概述在Java中,内存分为两部分,一种是堆内存,另一种就是栈内存。Java中变量在内存中的分配类变量(static修饰的变量):在程序加载时系统就为它在堆中开辟了内存,堆中的内存地址存放于栈以便高速访问。静态变量的生命周期—一直持续到整个“系统”关闭实例变量:当你使用java关键字ne...

设计模式:装饰模式或包装模式

什么是设计模式装饰模式又名包装模式。装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。有透明和半透明两种,大部分都是半透明的,半透明的装饰模式是介于装饰模式和适配器模式之间的。装饰模式的核心:功能扩展。透明和半透明的区别:透明的装饰模式,要求具体构件角色、装饰角色的接...

Android Studio‘Library projects cannot set applicationId’

前言Library projects cannot set applicationId. applicationId is set to 'com.biumall.usercenter' in default config.摘抄于此,方便自己查阅。正文动态配置module时,当前设置为l...