02-MySQL基本操作
SQL 的一些简单语法规则
结束符
SQL 指令需要语句结束符,默认是英文分号;。
当然,还有另外两个结束符:
\g与英文分号;等效。\G:将查到的结构旋转90度变成纵向。
反引号``
SQL语句中如果用到了关键字或者保留字,需要使用反引号``(Tab键上面的符号)来包裹,让系统忽略。
MySQL 数据库的操作分类
根据数据库的对象层级,可以将SQL的基础操作分为四类:
数据库(DB)操作。
数据表(Table)操作。
数据字段(Field)操作。
数据操作。
下面来详细讲一讲。
一、数据库(DB)的基本操作
在终端的任何位置,输入如下命令,即可进入 mysql 命令的执行窗口:
mysql -u root -p
1、创建数据库
语法格式:
create database 数据库名称 [数据库选项];
数据库名称的命名规范:
- 由数字、字母和下划线组成。
- 不区分大小写。
- 不能以数字开头。
- 建议使用下划线法创建复杂的数据库名字。比如
db_qianguyihao。
举例:
创建一个名为 db_qianguyihao1 的数据库:
create database db_qianguyihao1;
创建一个指定字符集的数据库:
create database db_qianguyihao2 charset utf8MB4;
创建一个指定校对集的数据库:
create database db_qianguyihao3 charset utf8MB4 collate utf8mb4_general_ci
2、查看数据库
查看有哪些数据库:(显示所有的数据库列表)
show databases;
查看 db_qianguyihao1 这个数据库的具体创建指令是怎样的:
show create database db_qianguyihao1;
备注:由于系统会加工,所以看到的结果不一定是真实的创建指令。
3、使用指定的数据库
使用指定的数据库:(也可以理解成:进入指定的数据库)
# 语法格式
use database_xxx;
# 举例
use db_qianguyihao;
假设当前服务器连接中有很多个数据库(db_qianguyihao1、db_qianguyihao2),此时,我输入 use db_qianguyihao2则代表我想使用 db_qianguyihao2 这个数据库。
4、修改数据库的参数
我们一般很少修改数据库的名称,一般是去修改数据库的一些选项,比如:
修改字符集
修改校对集
语法格式:
alter database 数据库名称 [库选项]
举例1、修改数据库的字符集为gbk:
alter database db_qianguyihao1 charset gbk;
举例2、修改数据库的校对集:
alter database db_qianguyihao2 charset gbk collate gbk_chinese_ci;
备注:因为校对集是和字符集有关的,所以上方指令是在修改字符集的同时,修改校对集。
5、删除指定的数据库
语法格式:
drop database 数据库名称;
备注:删除数据库时,会清空当前数据库里的所有数据表,所以删除数据库的操作一定要谨慎。
二、数据表(Table)的基本操作
注意,我们最好先通过 use xxx_database 命令进入指定的数据库(DB),然后在当前数据库下,进行数据表(Table)的操作。
1、创建数据表
语法格式:
create table [数据库名].[表名] (
字段名1 字段类型,
...
...
字段名2 字段类型
) 表选项;
举例:
1、在当前数据库中创建数据表 table_qiangu1,并新增主键 id 字段:
CREATE TABLE table_qiangu1 (
id int NOT NULL AUTO_INCREMENT PRIMARY KEY
);
2、在当前数据库中创建数据表 t_student1,并新增 name、age这连个字段:
create table t_student1(
name varchar(255),
age int
);
3、在指定的数据库 db_2 中创建数据表 t_student2:
create table db_2.t_student2(
name varchar(255),
age int
);
4、在当前数据库中创建数据表 t_student3(含表选项):
create table t_student3(
name varchar(255),
age int
)engine Innodb charset utf8MB4;
举例4中的代码涉及到存储引擎,这里解释一下:
存储引擎是指数据存储和管理的方式,MySQL中提供了多种存储引擎,一般使用默认存储引擎 InnoDB。
InnoDB:默认存储引擎;支持事务处理和外键;数据统一管理。
MyIsam:不支持事务和外键;数据、表结构、索引独立管理;MySQL5.6以后不再维护。
6、扩展:如果想创建一个与已有表一样的数据表,MySQL提供了一种便捷的复制模式
2、复制数据表
如果想创建一个与已有表一样的数据表,MySQL提供了一种便捷的复制模式。
语法格式:(复制现有的表 table_xx1 到 table_xx2)
create table table_xx1 like 数据库名.table_xx2;
注意,这种复制模式,table_xx2 只会复制表 table_xx1 中的字段,不会复制表table_xx1中的数据。
举例:
# 在当前数据库下,复制现有的表`t_qianguyihao1` 到表 `t_qianguyihao2`
create table t_qianguyihao1 like t_qianguyihao2;
# 复制现有的表`t_qianguyihao1` 到表 `t_qianguyihao2`,是复制到 `db2`这个数据库中
create table t_qianguyihao1 like db2.t_qianguyihao2;
3、显示数据表的名称
在当前数据库下,显示所有的数据表:
show tables;
在指定的数据库中,显示所有的数据表:
show tables from db_qianguyihao1;
显示数据表的创建指令:(查看 t_qianguyihao1 这个数据表的具体创建指令是怎样的)
show create table t_qianguyihao1; # 备注:由于系统会加工,所以看到的结果不一定是真实的创建指令。
4、查询(查找)数据表的名称
根据 表名称 查询数据表,也可以理解成:按条件显示部分数据表。
根据数据表的表名称查找数据表时,需要用到关键词like,而且还要涉及到两个符号:
%表示匹配任意多个字符。_表示匹配任意一个字符(固定位置)。
上面这两个模糊查询的符号,大家要牢记。我们来看看具体的例子。
语法举例:
show tables like '%like_'; # _表示匹配一个字符(固定位置),%表示匹配N个字符
% 符号举例:
# 查询表名称中,包含 “qiangu” 这个关键字的表(“qiangu”这个关键字的前后可能都有内容)
show tables like '%qiangu%';
# 查询表名称以“qiangu”开头的表(这个命令应该很实用)
show tables like 'qiangu%';
_符号举例:
# 根据 表名称 来查询表,查询条件是:表名称以“qiangu”开头,而且要确保 qiangu 的后面有三个字符(因为我在 qiangu 的后面写了三个下划线)。
show tables like 'qiangu___';
5、desc:查看数据表的表结构
查看数据表的表结构,就是查看这张表中定义了哪些字段,以及这些字段是如何定义的。通过这种方式,我们可以清晰地了解数据的存储形式。
项目开发中,领导在检查我们的工作时,首先看的就是我们的表中定义了哪些字段。所以说,这种方式,还是很实用的。
语法格式:
# 方式1
desc 表名称;
# 方式2
describe 表名称;
# 方式3
show columns from 表名称;
上面的三种方式,效果都一样,三选一即可。
6、修改数据表的表名称和表选项
修改数据表的表名称:
在当前数据库下,修改数据表的表名称:
rename table 原表名 to 新表名;
指定某个数据库,然后修改数据表的表名称:
rename table 数据库名.原表名 to 数据库名.新表名;
修改数据表的表名称:
alter table table1 charset gbk;
7、删除数据表
语法格式:
drop table 数据表名称;
三、字段(Field)的基本操作
数据表 table 创建好了之后,我们就可以开始在这张表中新增字段了。
1、新增字段
语法格式:
alter table 表名 add [column] 字段名 字段类型 [字段属性] [字段位置];
注意事项:
新增字段时,必须制指定字段类型。
[column]、 [字段属性]、[字段位置] 这几个都是选填,其他是必填。
追加字段时,这个字段的顺序默认排在最后。
举例:
新增字段 name:
alter table table_qiangu1 add name varchar(255);
新增字段 age:
alter table table_qiangu1 add age int;
2、新增字段时,设置字段的位置(顺序)
在新增字段时,它的顺序是默认放在最后面的,当然,我们也可以人工指定它的顺序。
在修改字段的位置时,我们可以用到下面这两个关键字:
first放到最前面after放到某个字段的后面
语法格式:
alter table 表名 add 新字段名 字段类型 字段位置;
举例1:
在 name字段的后面,新增一个 sex 字段:
alter table t_qiangu1 add sex varchar(255) default null comment '性别' after name;
注意,上方举例中,如果是新建 varchar 类型的字段,一定要指定 varchar 的长度(比如255),否则报错。
举例2:
新增一个 id 字段,放到最前面:
alter table t_qiangu1 add id int first;
3、change:修改现有字段的字段名
修改现有字段的字段名,是通过 change 关键字,不是通过 modify 关键字(后者会报错,执行失败)。
语法格式:
# 格式1(精简版)
alter table 表名 change 原字段名 新字段名 字段类型;
# 格式2(完整版)
alter table 表名 change 原字段名 新字段名 字段类型 [字段属性] [位置];
注意:
修改字段名时,一定要设置新字段的字段类型。
虽然 change 关键字也可以修改现有字段的字段属性、字段位置,但我们一般是通过 modify 关键字来做(下面会讲)。
举例:
修改字段名 sex 为 sexy:
alter table t_qiangu2 change sex sexy varchar(255);
4、modify:修改现有字段的的字段类型、字段位置、字段属性
语法格式:
alter table 表名 modify 现有字段的字段名 现有字段的字段类型 [字段属性] [位置];
举例1、针对现有的字段 name 和 age,更换这两个字段的顺序:
# 注意,这里的 age 后面一定要跟上它的字段类型,否则执行失败
alter table t_qiangu1 modify age int after name;
修改字段的默认值
# 若本身存在默认值,则先删除
alter table 表名 alter column 字段名 drop default;
# 若本身不存在则可以直接设定
alter table 表名 alter column 字段名 set default 默认值;
5、删除字段
删除字段的同时,会删除字段对应的数据。删除字段的操作不可逆,请谨慎操作。
语法格式:
alter table 表名 drop 字段名;
举例:(删除 t_qiangu1 表中的 age 这个字段)
alter table t_qiangu1 drop age;
四、数据的基本操作
1、新增数据
方式1、全字段插入:
语法格式:
insert into 表名 values(值1, 值2, ... 最后一个值);
解释:
- 值的顺序必须与所有字段的顺序一致。
- 值的数据类型也必须与字段定义的数据类型一致。
举例(给 t_qiangu1 这个表中插入一条完整的数据):
insert into t_qiangu1 values(3, 'qianguyihao', 28);
方式1、部分字段插入:
语法格式:
insert into 表名 (字段1, 字段2, 字段3) values(值1, 值2, 值3);
解释:
-字段的顺序可以随意,但值的顺序必须要与前面的字段顺序一一对应,数据类型也要一致。
举例(给 t_qiangu1 这个表中的指定字段插入数据):
insert into t_qiangu1 (id, name) values(4, 'xusong');
2、查询数据
查询数据的操作,占sql日常操作的95%以上。
语法格式:
select xxx from 表名;
举例:
查询表中的所有数据:
select * from t_qiangu1;
查询表中 name、age 这两个字段的数据:
select name, age from t_qiangu2;
查询表中 id=2 的数据:
select * from t_qiangu3 where id = 2;
3、修改数据
语法格式:
update 表名 set (字段1 = 新值1, 字段2 = 新值2) [where 条件筛选];
解释:
我们通常是结合 where 条件语句来修改数据。
修改数据之前,要先保证表里面有数据。如果这张表是空表,那么,执行这个命令后,等于没执行。
举例:
将表中,name 这个字段的值全部修改为千古壹号:
update t_qiangu1 set name = '千古壹号';
id = 3 的这条记录中,修改 name 和 age 这两个字段的值:
update t_qiangu1 set name = '许嵩', age = '34' where id = 3;
4、删除数据
删除字段的操作不可逆,请谨慎操作。
语法格式:
delete from 表名 [where 条件];
解释:
执行删除操作之后,匹配到的整条记录,都会删除。
删除数据之前,要先保证表里面有数据。如果这张表是空表,那么,执行这个命令后,等于没执行。
举例:
删除表中id = 2的记录:
delete from t_qiangu1 where id = 2;
02-MySQL基本操作的更多相关文章
- mysql 基本操作语句
mysql 基本操作笔记: 创建表demo:CREATE TABLE `role` ( `role_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMME ...
- css属性编写顺序+mysql基本操作+html细节(个人笔记)
css属性编写顺序: 影响文档流的属性(比如:display, position, float, clear, visibility, table-layout等) 自身盒模型的属性(比如:width ...
- 【mysql】mysql基本操作
mysql基本操作 1.mysql表复制 mysql 表结构的复制 create table t2 like t2 mysql 表数据的复制 insert into t2 select * from ...
- 数据库相关 Mysql基本操作
数据库相关 设计三范式: 第一范式: 主要强调原子性 即表的每一列(字段)包含的内容,不能再拆分.如果,某张表的列,还可以细分,则违背了数据库设计的第一范式. 第二范式: 主要强调主键,即:数据库中的 ...
- Mysql基本操作、C++Mysql简单应用、PythonMysql简单应用
MySql基本操作 -- 当指定名称的数据库不存在时创建它并且指定使用的字符集和排序方式 CREATE DATABASE IF NOT EXISTS db_name CHARACTER SET UTF ...
- MySQL必知必会笔记-Mysql基本操作
Mysql基本操作 mysql的基本操作包括增.删.改.查,本书中前三章简单的介绍MySQL为何物,查是mysql中非常重要的功能,4-6章展示了mysql的查(查询--select)的简单实现,my ...
- day02 MySQL基本操作
day02 MySQL基本操作 昨日内容回顾 数据库演变史 1.纯文件阶段 2.目录规范 3.单机游戏 4.联网游戏 # 数据库就是一款帮助我们管理数据的程序 软件开发架构及数据库本质 cs架构与bs ...
- 02 MySQL之数据表的基本操作
01-创建数据表 # 切换数据库 use test_db; # 创建数据表 语法规则如下: create table 表名 ( 字段名1, 数据类型 [列级别约束条件] [默认值], 字段名2, 数据 ...
- Mysql基本操作整理
1.登录数据库 格式: mysql -h主机地址 -u用户名 -p用户密码 –P端口 –D数据库 –e “SQL 内容”>mysql -uroot -p 数据库名称~~~~~~~~~~~~~~~ ...
- Mysql基本操作指令集锦
一.MySQL服务的启动.停止与卸载 在 Windows 命令提示符下运行: 启动: net start MySQL 停止: net stop MySQL 卸载: sc delete MySQL 二. ...
随机推荐
- python3发送Gratuitous ARP更新vip绑定关系
操作系统 :CentOS 7.6_x64 Python版本:3.9.12 FreeSWITCH版本 :1.10.9 高可用场景下,vip切换完成后需要发送arp广播更新ip和mac地址的绑定关系,如果 ...
- java桌面小闹钟
写了个桌面的小闹钟,在运行环境可以编译,但是打包成jar文件,想用批处理命令直接调用报错"找不到或无法加载主类". 需求 为防止整天久坐,编写一个桌面闹钟.该闹钟功能很简单,一个小 ...
- SQL 的递归查询
在一般的业务场景中,特别是针对相关的业务线相关的功能开发时,可能会遇到一些具有层级关系的数据关联结构.比如,一个员工可能属于一个领导管辖,而同时,这个领导也被另一个更高级别的领导管辖--,而本质上这些 ...
- 关于汽车OTA,这篇科普文能告诉你
随着汽车中软件发挥的作用越来越重要,软件定义汽车已经是行业内的共识.汽车行业的发展极有可能最终像手机产业一样,基础硬件差异会越来越小,关键在于汽车给用户的体验的多样性,以及汽车产品在不同场景下满足用户 ...
- Karmada 结合 coreDNS 插件实现跨集群统一域名访问
本文分享自华为云社区<Karmada 结合 coreDNS 插件实现跨集群统一域名访问>,作者:云容器大未来 . 在多云与混合云越来越成为企业标配的今天,服务的部署和访问往往不在一个 K8 ...
- 技术实践丨PostgreSQL开启Huge Page场景分析
PostgreSQL用户经常发现,服务端在连接数较大的情况下,会出现系统内存消耗过多的情况,严重者可能会造成OOM.但是服务端配置的共享内存(shared_buffers,wal_buffers等)是 ...
- 技术架构+应用场景揭秘,为什么高斯Redis比开源香?
摘要:高斯Redis即保留了开源Redis的能力,同时凭借其存算分离的架构,在成本.稳定性.可靠性.一致性等方面做出了新的突破,也更加适用于当下数据规模庞大的互联网业务. 本文分享自华为云社区< ...
- 译文丨伯克利对serverless的看法:简化云编程
摘要:Serveless计算的目标和机会是让云编程者像使用高级语言那样受益. 本文分享自华为云社区<简化云编程,伯克利对serverless的看法(翻译)>,作者: 二手雄狮. 译者言: ...
- 火山引擎DataTester智能发布:助力产品降低功能迭代风险
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 对企业而言,应用大规模AB实验,可以帮助企业提高决策效率.降低试错成本,而近期火山引擎AB测试 DataTes ...
- Solon 能打出 war 包放到 tomcat 下运行吗?
Solon 是一个强调自启动的框架,原则上是不推荐 war 容器运行的,但总会有些甲方有硬性规定,或者旧环境不能变. 1.操作指南: 在普通项目增加几项内容即可打 war 包(仍可打 jar 包): ...