MySQL基本SQL语句(上)

MySQL基本SQL语句(上)

一、客户端工具的使用

1、客户端工具mysql使用

mysql: mysql命令行工具,一般用来连接访问mysql数据库
选项说明
-u, --user=name指定登录用户名
-p, --password指定登录密码(注意是小写p),一定要放到最后面
-h, --host=name指定数据库的主机地址
-P, --port=xxx指定数据库的端口号(大写P)
-S, --socket=name指定socket文件
-e, --execute=name使用非交互式操作(在shell终端执行sql语句)

案例:使用mysql客户端工具连接服务器端(用户名:root、密码:123)

# mysql -uroot -p123 

注:以上连接方式虽然可以连接进入到MySQL,但是官方不建议我们直接把密码写入在终端,建议-p然后直接回车,然后在终端中输入密码。

案例:连接10.1.1.100服务器上的MySQL数据库(用户名:itheima,密码:123)

# mysql -h 10.1.1.100 -P 3306 -uitheima -p
Enter password:123

案例:根据不同的套接字连接同步的数据库

# mysql -S /tmp/mysql.sock -uroot -p
Enter password:123

案例:在不进入MySQL内部的情况下,执行SQL语句,获取数据信息

# mysql -e "show databases;" -uroot -p
Enter password:123

扩展了解:

默认库描述
information_schema1、==对象信息数据库==,提供对数据库元数据的访问 ,有关MySQL服务器的信息,例如数据库或表的名称,列的数据类型或访问权限等; 2、在INFORMATION_SCHEMA中,有数个只读表,它们实际上是视图,而不是基本表,因此你将无法看到与之相关的任何文件; 3、视图,是一个虚表,即视图所对应的数据不进行实际存储,数据库中只存储视图的定义,在对视图的数据进行操作时,系统根据视图的定义去操作与视图相关联的基本表
mysql1、mysql数据库是==系统数据库==。它包含存储MySQL服务器运行时所需的信息的表。比如权限表、对象信息表、日志系统表、时区系统表、优化器系统表、杂项系统表等。 2、==不可以删除==,也不要轻易修改这个数据库里面的表息。
performance_schemaMySQL5.5开始新增一个数据库,主要用于==收集数据库服务器性能==;并且库里表的存储引擎均PERFORMANCE_SCHEMA,而用户是不能创建存储引擎为PERFORMANCE_SCHEMA的表
sys1、mysql5.7增加了sys 系统数据库,通过这个库可以快速的了解系统的元数据信息; 2、sys库方便DBA发现数据库的很多信息,解决性能瓶颈; 3、这个库是通过视图的形式把information_schema 和performance_schema结合起来,查询出更加令人容易理解的数据

2、客户端工具mysqladmin使用

mysqladmin:客户端管理mysql数据库工具
㈠ 常用选项
选项描述
-h, --host=name指定连接数据库主机
-p, --password指定数据库密码
-P, --port=#指定数据库端口
-S, --socket=name指定数据库socket文件
-u, --user=name指定连接数据库用户
㈡ 常用命令
命令描述
password [new-password]更改密码
reload刷新授权表
shutdown停止mysql服务
status简短查看数据库状态信息
start-slave启动slave
stop-slave停止slave
variables打印可用变量
version查看当前mysql数据库的版本信息

案例:更改root账号的密码为root

# mysqladmin password '新密码' -p
Enter password:'旧密码'
​
# mysqladmin password 'root' -p
Enter password:123

案例:更改密码后,建议刷新授权表(mysql> flush privileges;)

# mysqladmin reload -p
Enter password:123

案例:停止mysql

# mysqladmin shutdown -p
Enter password:123

service mysql_3306 stop

案例:查看mysql状态

# mysqladmin status -p
Enter password:123

案例:打印可用变量(mysql本身预置了很多变量信息)

# mysqladmin variables -p
Enter password:123

案例:查询mysql版本

# mysqladmin version -p
Enter password:123

二、MySQL中的SQL语句

1、什么是SQL?

SQL 是 Structure Query Language(==结构化查询语言==)的缩写,它是使用==关系模型的数据库应== ==用语言==,由 IBM 在 20 世纪 70 年代开发出来,作为 IBM 关系数据库原型 System R 的原型关 系语言,实现了关系数据库中的信息检索。

20 世纪 80 年代初,美国国家标准局(ANSI)开始着手制定 SQL 标准,最早的 ANSI 标准于 1986 年完成,就被叫作 SQL-86。标准的出台使 SQL 作为标准关系数据库语言的地位得到了 加强。SQL 标准目前已几经修改更趋完善。

正是由于 SQL 语言的标准化,所以大多数关系型数据库系统都支持 SQL 语言,它已经发展 成为多种平台进行交互操作的底层会话语言。

2、SQL语句的分类

  • DDL(Data Definition Languages)语句:

    ==数据定义语言==,这些语句定义了不同的数据段、数据库、表、列、索引等数据库对象的定义。常用的语句关键字主要包括 create、drop、alter、rename、truncate

  • DML(Data Manipulation Language)语句:

    ==数据操纵语句==,用于添加、删除、更新和查询数据库记录,并检查数据完整性,常用的语句关键字主要包括 insert、delete、update等。

  • DCL(Data Control Language)语句:

    ==数据控制语句==,用于控制不同数据段直接的许可和访问级别的语句。这些语句定义了数据库、表、字段、用户的访问权限和安全级别。主要的语句关键字包括 grant、revoke 等。

  • DQL(Data Query Language)语句:

    ==数据查询语句==,用于从一个或多个表中检索信息。主要的语句关键字包括 select

3、MySQL中如何求帮助

  • 亘古不变的官档(软件作用)

MySQL5.6官方文档

MySQL5.7官方文档

  • man文档(工具作用)

man文档可以对mysql的一些基本工具及后台命令求帮助,比如:

[root@db01 ~]# man mysql
[root@db01 ~]# man mysql_install_db
[root@db01 ~]# man mysqldump
[root@db01 ~]# man mysqld
  • MySQL的命令行求帮助(主要针对SQL语句求帮助)

mysql> help;
mysql> ?
mysql> help create table;根据内容进行查找帮助
mysql> ? contentsAccount ManagementAdministrationData DefinitionData ManipulationData TypesFunctionsFunctions and Modifiers for Use with GROUP BYGeographic FeaturesLanguage StructureStorage EnginesStored RoutinesTable MaintenanceTransactionsTriggers寻求账户管理的帮助(一级一级的向内部查)
mysql> ? Account Management
mysql> ? CREATE USER

注:在mysql内部,没有clear命令,也就是无法使用clear实现清屏,如果想实现清屏操作,可以使用快捷键Ctrl + Shift + L

4、SQL语句的基本操作

☆ MySQL的内部结构

注:我们平常说的MySQL,其实主要指的是MySQL数据库管理软件。

一个MySQL DBMS可以同时存放多个数据库,理论上一个项目就对应一个数据库。如博客项目blog数据库、商城项目shop数据库、微信项目wechat数据库。

一个数据库中还可以同时包含多个数据表,而数据表才是真正用于存放数据的位置。(类似我们Office软件中的Excel表格),理论上一个功能就对应一个数据表。如博客系统中的用户管理功能,就需要一个user数据表、博客中的文章就需要一个article数据表、博客中的评论就需要一个message数据表。

一个数据表又可以拆分为多个字段,每个字段就是一个属性。

一个数据表除了字段以外,还有很多行,每一行都是一条完整的数据(记录)。

☆ 数据库的基本操作

① 创建数据库

普及英语小课堂:

创建 => create

数据库 => database

基本语法:

mysql> create database 数据库名称;

特别注意:在MySQL中,当一条SQL语句编写完毕后,一定要使用分号;进行结尾,否则系统认为这条语句还没有结束。

案例:创建数据库的相关案例

创建db1库
create database db1;创建db1库并指定默认字符集
create database db1 default charset gbk;如果存在不报错(if not exists)
create database if not exists db1 default character set utf8;
说明:不能创建相同名字的数据库!

扩展:编码格式,常见的gbk(中国的编码格式)与utf8(国际通用编码格式)

latin1 256个字符 (abcd、1234、传统字符)

国内汉字无法通过256个字符进行描述,所以国内开发了自己的编码格式gb2312,升级gbk

中国台湾业开发了一套自己的编码格式big5

很多项目并不仅仅只在本地使用,也可能支持多国语言,标准化组织开发了一套通用编码utf8,后来5.6版本以后又进行了升级utf8mb4

编写SQL语句是一个比较细致工作,不建议大家直接在终端中输入SQL语句,可以先把你要写的SQL语句写入一个记事本中,然后拷贝执行。

② 查询已创建数据库

英语小课堂:

显示 => show

数据库 => database

基本语法:

显示所有数据库

mysql> show databases;

显示某个数据库的数据结构

mysql> show create database db_itheima;
③ 修改数据库信息

在MySQL5以后的版本中,MySQL不支持更改数据库的名称。我们所谓的修改数据库主要修改的是数据库的编码格式。

英语小课堂:

修改 => alter

数据库 => database

mysql> alter database 数据库名称 default charset=新编码格式;

案例:把db_itheima数据库的编码格式更改为gbk

mysql> alter database db_itheima default charset=gbk;
④ 删除数据库

英语小课堂:

删除 => drop

数据库 => database

基本语法:

mysql> drop database 数据库名称;

案例:删除db_itheima数据库

mysql> drop database db_itheima;

5、数据表的基本操作

☆ 数据表的创建

英语小课堂:

创建 => create

数据表 => table

基本语法:

mysql> create table 数据表名称(字段1 字段类型 [字段约束],字段2 字段类型 [字段约束],...
); 

案例:创建一个admin管理员表,拥有3个字段(编号、用户名称、用户密码)

mysql> create database db_itheima;
mysql> use db_itheima;

use在MySQL中的含义代表选择,use 数据库名称相当于选择指定的数据库。而且use比较特殊,其选择结束后,其尾部可以不加分号;但是强烈建议所有的SQL语句都要加分号,养成一个好习惯。

mysql> create table tb_admin(id tinyint,username varchar(20),password char(32)
) engine=innodb default charset=utf8;

tinyint :微整型,范围-128 ~ 127,无符号型,则表示0 ~ 255

表示字符串类型可以使用char与varchar,char代表固定长度的字段,varchar代表变化长度的字段。

案例:创建一个article文章表,拥有4个字段(编号、标题、作者、内容)

mysql> use db_itheima;
mysql> create table tb_article(id int,title varchar(50),author varchar(20),content text
) engine=innodb default charset=utf8;

text :文本类型,一般情况下,用varchar存储不了的字符串信息,都建议使用text文本进行处理。

varchar存储的最大长度,理论值65535个字符。但是实际上,有几个字符是用于存放内容的长度的,所以真正可以使用的不足65535个字符,另外varchar类型存储的字符长度还和编码格式有关。1个GBK格式的占用2个字节长度,1个UTF8格式的字符占用3个字节长度。GBK = 65532~65533/2,UTF8 = 65532~65533/3

☆ 查询已创建数据表

英语小课堂:

显示 => show

数据表 => table

显示所有数据表(当前数据库)

mysql> use 数据库名称;
mysql> show tables;

显示数据表的创建过程(编码格式、字段等信息)

mysql> show create table 数据表名称;
或
mysql> desc 数据表名称;

☆ 修改数据表信息

① 数据表字段添加

英语小课堂:

修改 => alter

数据表 => table

基本语法:

mysql> alter table 数据表名称 add 新字段名称 字段类型 first|after 其他字段名称;
选项说明:
first:把新添加字段放在第一位
after 字段名称:把新添加字段放在指定字段的后面

案例:在tb_article文章表中添加一个addtime字段,类型为date(年-月-日)

mysql> alter table tb_article add addtime date after content;
mysql> desc tb_article;
② 修改字段名称或字段类型

修改字段名称与字段类型(也可以只修改名称)

mysql> alter table tb_admin change username user varchar(40);
mysql> desc tb_admin;

仅修改字段的类型

mysql> alter table tb_admin modify user varchar(20);
mysql> desc tb_admin;
③ 删除某个字段
mysql> alter table tb_article drop 字段名称;
mysql> desc tb_article;
④ 修改数据表引擎(MyISAM或InnoDB)
mysql> alter table tb_article engine=myisam;
mysql> show create table tb_article;
⑤ 修改数据表的编码格式
mysql> alter table tb_admin default charset=gbk;
mysql> show create table tb_admin;
⑥ 修改数据表名称
移动表到另一个库里并重命名
rename table db01.t1 to db02.t11;
或者
alter table db01.t1 rename db02.t11;只重命名表名不移动
rename table tt1 to tt2;
或者
alter table tt1 rename  tt2;

☆ 删除数据表

英语小课堂:

删除 => drop

数据表 => table

mysql> drop table 数据表名称;

6、给EditPlus添加一个语法着色

第一步:把sql.stx语法着色文件放置在某个位置

第二步:打开EditPlus配置

设置编码格式并取消备份文件

第三步:添加SQL语句的语法着色支持

添加SQL语句支持

引入.sql文件以及语法着色文件

7、数据的增删改查(重点)

英语小课堂:

增加:insert

删除:delete

修改:update

查询:select

☆ 数据的增加操作

基本语法:

mysql> insert into 数据表名称([字段1,字段2,字段3...]) values (字段1的值,字段2的值,字段3的值...);

特别注意:在SQL语句中,除了数字,其他类型的值,都需要使用引号引起来,否则插入时会报错。

第一步:准备一个数据表

mysql> use db_itheima;
mysql> create table tb_user(id int,username varchar(20),age tinyint unsigned,gender enum('男','女','保密'),address varchar(255)
) engine=innodb default charset=utf8;

unsigned代表无符号型,只有0到正数。tinyint unsigned无符号型,范围0 ~ 255

enum枚举类型,多选一。只能从给定的值中选择一个

第二步:使用insert语句插入数据

mysql> insert into tb_user values (1,'李向阳',24,'男','广东省广州市');
mysql> insert into tb_user(id,username,age) values (2,'马鹏',23);

☆ 数据的查询操作

基本语法:

mysql> select * from 数据表名称 [where 查询条件];
mysql> select id,username,age from 数据表名称 [where 查询条件];

案例:查询tb_user表中的所有记录

mysql> select * from tb_user;

案例:查询tb_user表中的id,username以及age字段中对应的数据信息

mysql> select id,username,age from tb_user;

案例:只查询id=2的小伙伴信息

mysql> select * from tb_user where id=2;

案例:查询年龄大于23岁的小伙伴信息

mysql> select * from tb_user where age>23;

☆ 数据的修改操作

基本语法:

mysql> update 数据表名称 set 字段1=更新后的值,字段2=更新后的值,... where 更新条件;

特别说明:如果在更新数据时,不指定更新条件,则其会把这个数据表的所有记录全部更新一遍。

案例:修改username='马鹏'这条记录,将其性别更新为男,家庭住址更新为广东省深圳市

mysql> update tb_user set gender='男',address='广东省深圳市' where username='马鹏';

案例:今年是2020年,假设到了2021年,现在存储的学员年龄都差1岁,整体进行一次更新

mysql> update tb_user set age=age+1;

☆ 数据的删除操作

基本语法:

mysql> delete from 数据表名称 [where 删除条件];

案例:删除tb_user表中,id=1的用户信息

mysql> delete from tb_user where id=1;

delete from与truncate清空数据表操作

mysql> delete from 数据表;
或
mysql> truncate 数据表;

delete from与truncate区别在哪里?

  • delete:删除==数据记录==

    • 数据操作语言(DML)

    • 在事务控制里,DML语句要么commit,要么rollback

    • 删除==大量==记录速度慢,==只删除数据==不回收高水位线

    • 可以==带条件==删除

  • truncate:删除==所有数据记录==

    • 数据定义语言(DDL)

    • ==不在==事务控制里,DDL语句执行前会提交前面所有未提交的事务

    • 清里大量数据==速度快==,回收高水位线(high water mark)

    • ==不能带条件删除==

8、自动增长(水位线)与主键约束

☆ 自动增长(对某个字段进行自动编号)

mysql> create table tb_user(id int not null auto_increment,username varchar(20),age tinyint unsigned,gender enum('男','女','保密'),address varchar(255)
) engine=innodb default charset=utf8;

not null代表非空约束,这个字段只要是插入数据就必须要有值。

☆ 主键约束(非空、唯一)

create table tb_user(id int not null auto_increment,username varchar(20),age tinyint unsigned,gender enum('男','女','保密'),address varchar(255),primary key(id)
) engine=innodb default charset=utf8;

插入数据库时,id位置直接写NULL即可

mysql> insert into tb_user values (null,'李向阳',24,'男','广东省广州市');
mysql> insert into tb_user values (null,'马鹏',23,'男','广东省深圳市');
mysql> insert into tb_user values (null,'上官婉儿',18,'女','湖南省长沙市');

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/171974.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HDFS JAVA API的应用

首先把hadoop服务起来 1. (简答题) 使用HDFS 的JAVA API 进行编程: (1)获取自己HDFS集群下的所有文件和目录; //获取自己HDFS集群下的所有文件和目录;import org.apache.hadoop.conf.Configuration; import org.apa…

究竟FactoryBean是什么?深入理解Spring的工厂神器

文章目录 前言什么是FactoryBean?如何使用FactoryBean?我们常见的FactoryBeanBeanFactory 和 FactoryBean?FactoryBean后续?MapperFactoryBean 前言 在Spring框架中,bean的创建通常交由Spring IoC容器负责&#xff0c…

【从亮机卡开始的云炼丹】环境配置记录debug

要更改Anaconda环境的默认路径到D盘 可以按照以下步骤操作: 1. 打开Anaconda Prompt(或者命令行窗口)。 2. 输入以下命令更改Anaconda环境的默认路径到D盘: conda config --set envs_dirs D:\Anaconda\envs 这将把Anaconda环境…

汽车租聘管理与推荐系统Python+Django网页界面+协同过滤推荐算法

一、介绍 汽车租聘管理与推荐系统。本系统使用Python作为主要编程语言,前端采用HTML、CSS、BootStrap等技术搭建前端界面,后端采用Django框架处理用户的请求。创新点:使用协同过滤推荐算法实现对当前用户个性化推荐。 其主要功能如下&#x…

设计模式—依赖倒置原则(DIP)

1.概念 依赖倒置原则(Dependence Inversion Principle)是程序要依赖于抽象接口,不要依赖于具体实现。简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合。 通俗的讲&#xff1…

SpringBoot校验List失效解决方法

文章目录 SpringBoot校验List失效解决方法附:校验基本数据类型和String类型的方法参数时也需要在类上加Validated SpringBoot校验List失效解决方法 失效场景示例代码: RestController RequestMapping("/v1/jx/flowSummary") Slf4j public cl…

抖音小店开店指南:流程、准备和营销策略一站解析

抖音小店已成为一个热门的社交电商平台,为商家提供了一个快速、方便、低成本的开店通道。下面四川不若与众将介绍抖音小店开店的流程和需要准备的工作,帮助商家顺利开启自己的电商之路。 一、开店准备工作: 1. 产品准备:确定出售…

Java王者荣耀

一、创建项目 二、代码 package com.sxt;import javax.swing.*; import java.awt.*;public class Background extends GameObject {public Background(GameFrame gameFrame) {super(gameFrame);// TODO Auto-generated constructor stub}Image bg Toolkit.getDefaultToolkit(…

Mac 最佳使用指南

如何在macOS系统安装根证书mac Terminal config proxy 【mac 终端配置代理】iPhone 安装 iOS 17公测版(Public Beta)macOS 最佳命令行客户端:iTermMac 配置与 Linux 互信Mac mini 外接移动硬盘无法写入或者无法显示的解决方法如何在 macOS 美化 iterm2 &…

数据库基础教程之数据库的创建(二)

双击打开Navicat,点击:文件-》新建连接-》PostgreSQL 在下图新建连接中输入各参数,然后点击:连接测试,连接成功后再点击确定。 创建数据表   3.1 方法1   3.1.1.双击你的数据库-》双击public-》双击选中表-》右键-》新建表-》常规 3.1.2.设置字段信息   双击选中创建…

C++ vector迭代器失效

STL中vector迭代器失效常见错误写法示例 最近在看STL容器失效的例子,涉及到vector数组迭代器失效的问题,如果不注意使用,很容易出现问题,我们先来看一下一个简单的示例程序,在数组nums中删除大于50的元素,…

【方块消消乐】方块消除游戏-微信小程序开发流程详解

有做过俄罗斯方块游戏小程序的经验,这次有做了一个消灭方块的游戏,实现过程很顺利,游戏看着和之前做的俄罗斯方块游戏很像,这里调整了玩法,试玩感觉还可以,接下来给大家讲一讲消灭方块游戏开发过程。 俄罗斯…

(离散数学)命题逻辑推理一:直接推理

P说明这一行是前提,T说明这一行是结论 ,I说明该结论是由推导而来,E说明该结论是由化简而来,括号里的数字是推导这一结论需要的条件序号。 这种写法只是将重言蕴含的论证的思路进行了梳理 ,前件为真则后件为真、后件为假…

【深度学习】DAMO-YOLO,阿里,701类通用检测模型,目标检测

https://github.com/tinyvision/DAMO-YOLO/blob/master/README_cn.md DAMO-YOLO是由阿里巴巴达摩院智能计算实验室TinyML团队开发的一个兼顾速度与精度的目标检测框架,其效果超越了目前的一众YOLO系列方法,在实现SOTA的同时,保持了很高的推理速度。DAMO…

Linux 面试题(一)

目录 1、绝对路径用什么符号表示?当前目录、上层目录用什么表示?主目录用什么表示? 切换目录用什么命令? 2、怎么查看当前进程?怎么执行退出?怎么查看当前路径? 3、怎么清屏?怎么退出当前命…

rdf-file:分布式环境下的文件处理

一:数据量大了以后,单机解析或者生成文件的效率就很低,需要通过集群处理 机构过来的文件:我们先对文件进行分片,在利用集群集群处理分片文件。给机构文件:分库分表数据,每个分表生成一个分片文…

VMware安装部署kail镜像服务器【详细包含百度云盘镜像】

VMware安装部署kail镜像服务器【详细包含百度云盘镜像】 kail是一个很好玩的操作系统,不多说了哈 下载kail镜像 kail官网:https://www.kali.org/get-kali/#kali-platforms 百度云盘下载: 链接:https://pan.baidu.com/s/1PRjoP_1v8DEZ7-dA_…

基于51单片机的智能垃圾桶硬件设计

**单片机设计介绍, 基于51单片机的智能垃圾桶硬件设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于51单片机的智能垃圾桶设计旨在通过传感器和控制电路实现智能化的垃圾桶功能。下面是一个简要的硬件设计介绍&…

51代码审计-PHP框架MVC类上传断点调试

知识点1,文件上传漏洞挖掘 搜索关键字$_FILES phpmvc架构 MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式。 MVC把软件系统分为三个基本部分:模型(Model)、视图(View&#…

Redis面试题:Redis的数据淘汰策略有哪些?

目录 面试官:Redis的数据淘汰策略有哪些 ? 面试官:数据库有1000万数据 ,Redis只能缓存20w数据, 如何保证Redis中的数据都是热点数据 ? 面试官:Redis的内存用完了会发生什么? 面试官:Redis的数据淘汰策略有哪些 ? …