【数据库】 mysql基础语法学习(详细教程)

1. 数据库的基本操作
1.1. MYSQL 登录与退出
输入 mysql -uroot -p -P3306 -h127.0.0.1
退出的三种方法
mysql > exit;
mysql > quit;
mysql > \q;
1.2. MYSQL 数据库的一些解释
注意:数据库就相当于文件夹
表就相当于文件
1.3. mysql 注释符有三种:
1、#...
2、"-- ..."
3、/*...*/
2. 数据库的一些基本操作
2.1. 数据库的增删改查(sql 语句)
增:create database db1;
删:drop database db1;
改:alter database db1 charset utf8
查:show databases;#查看所有的数据库
show create database db1;
查看指定的数据库
设置默认的 utf8,在配置文件中:写上 character_set_server = utf8
use db2
select database() #查看你当前在哪个文件夹
重命名数据库 RENAME database olddbname TO newdbname

qianxun
show status; -- 显示一些系统特定资源的信息,例如,正在运行的线程数量。
desc tabl_name; 显示表结构,字段类型,主键,是否为空等属性,但不显示外
键。
show databases 查看这个 mysql 里面有多少个库
use mysql
use 选择数据库
show tables 查看当前库里面所有的表
mysql> select password from user where user='root';
Mysql 5.7 select authentication_string,user from mysql.user;
查看当前数据库 里面的表 user 用户为 root 的密码
alter database 数据库名 character set utf8;
3. table 表的操作
3.1. 查看表结构
desc table
DESCRIBE 表名;
3.2. 查看表的内容
select * from table_name
3.3. 建立表
CREATE TABLE 表名 (

qianxun
属性名 数据类型 [完整约束条件],
属性名 数据类型 [完整约束条件],
...
...
属性名 数据类型 [完整约束条件]
);
字段名就是属性名
完整的建立表的语句

 /*

AUTO_INCREMENT 每次插入新记录时,自动地创建主键字段的值默认地,AUTO_INCREMENT 的开始值是 1,每条新记录递增 1。

要让 AUTO_INCREMENT 序列以其他的值起始,请使用下面的 SQL 语法:

ALTER TABLE Persons AUTO_INCREMENT=100

*/
create table users(id int(7) AUTO_INCREMENT, 
username varchar(100) not null,
password varchar(100) not null,
PRIMARY KEY(id)                  //主键为id字段
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

/* UNSIGNED 声明无符号整数类型*/
mysql> create table users(id int(7) UNSIGNED auto_increment,username varchar(30)
not null,password varchar(32) not null,email varchar(40),primary key
(id))engine=myisam default charset=utf8;

/*

1.ENGINE=InnoDB使用innodb引擎,从zhidaoMySQL 5.6开始默认使用该引擎
2.DEFAULT CHARSET=utf8 数据库默认编码为utf-8

*/
Query OK, 0 rows affected (0.00 sec)
if not exists 表示当相同的表名存在时,则不执行此创建语句,避免语句执行错误
create database if not exists [table];
ENGINE=InnoDB DEFAULT CHARSET=utf8;
ENGINE 设置表的引擎 和默认的字符类型
常见的数据库引擎
InnoDB myisam
数据类型
https://www.cnblogs.com/-xlp/p/8617760.html
3.4. 约束条件
PRIMARY KEY 标识该属性为该表的主键,可以唯一的标识对应的元组
FOREIGN KEY 标识该属性为该表的外键,是与之联系某表的主键

qianxun
NOT NULL 标识该属性不能为空
UNIQUE 标识该属性的值是唯一的
AUTO_INCREMENT 标识该属性的值是自动增加,这是 MySQL 的
SQL 语句的特色
DEFAULT 为该属性设置默认值
3.5. 修改表的操作
修改表
格式:ALTER TABLE 旧表名 RENAME 新表名;
修改字段的数据类型
ALTER TABLE 表名 MODIFY 属性名 数据类型;
修改字段名:
ALTER TABLE 表名 CHANGE 旧属性名 新属性名 新数据类型;
增加字段名
ALTER TABLE 表名 ADD 属性名 1 数据类型 [完整性约束条件] [FIRST |
AFTER 属性名 2];
删除字段
ALTER TABLE 表名 DROP 属性名;
更改表的存储引擎
格式:ALTER TABLE 表名 ENGINE = 存储引擎名;
=============================================================
================

qianxun
4. 数据的增删改查
为表中所有字段添加数据
语法:INSERT INTO 表名(字段名 1,字段名 2,...)VALUES(值 1,值 2,
...);
mysql> insert into users (id,username,password)values(1,'moon','123456');
4.1. 增
语法:INSERT INTO 表名 VALUES(值 11,值 2,...);
mysql> insert into users values(null,'test','123456');
语法:INSERT INTO 表名(字段 1,字段 2,...)VALUES(值 1,值 2,...)
语法:INSERT INTO 表名 SET 字段名 1=值 1[,字段名 2=值 2,...]
举例:INSERT INTO student SET id=4,name='zhaoliu',grade=72;
同时添加多条数据
语法:INSERT INTO 表名[(字段名 1,字段名 2,...)]VALUES (值 1,值 2,
...),(值 1,值 2,...),
mysql> insert into users (id,username,password)values(null,'moon','123456'),
(null,'alex','123456');
:INSERT INTO 表名[(字段名 1,字段名 2,...)]VALUES (值 1,值 2,...),
(值 1,值 2,...),(值 1,值 2,...)
mysql> insert into users values(null,'moon1','123456'),(null,'alex1','123456');
4.2. 删
DELETE FROM 表名 [WHERE 条件表达式
delete from users where id=1;

qianxun
删除全部数据
若 DELETE 语句中没有使用 WHERE 语句,则会将表中所有记录都删除。
DELETE FROM 表名
删除全部数据的另一种方法——TRUNCATE
4.3. 更新
语法:UPDATE 表名 SET 字段名 1=值 1,[ ,字段名 2=值 2,...][ WHERE 条件
表达式 ]
update users set password='aaaa' where id=1;
update users set password='123456',username='moon' where id=1
update users set password=456789;
4.4. 查
select * from users;
星号代表所有的字段
查询指定的字段
select username,password from users;
按条件调节查询
按关系来查询
语法:SELECT 字段名 1,字段名 2,...FROM 表名 WHERE 条件表达式
in 查询
SELECT * FROM student2 WHERE id IN (1,2,3);

qianxun
带 BETWEEN AND 关键字的查询
select * from users where id not between 1 and 10;
带 DISTINCT 关键字的查询
select distinct username from users
like 查询 一般都会给跟着%
select * from users where username like "%m%" ;
下划线 _ 匹配一个字符
select* from users where username like "moo_"
and 查询
满足多个条件
select * from users where id=1 and username='moon';
or 查询
满足任意一个条件
select * from users where id=1 or username='moon';
OR 和 AND 一起使用的情况
OR 和 AND 一起使用的时候,AND 的优先级高于 OR,因此二者一起使用时,
会先运算 AND 两边的表达式,再运算 OR 两边的表达式。
mysql> select * from users where id >5 and password='123456c' or
username='moon1';
聚合查询
count 返回行数
select count(*) from users;
select count(id) from users;

qianxun
COUNT() 返回某列的行数
SUM() 返回某列值的和
AVG() 返回某列的平均值
MAX() 返回某列的最大值
MIN() 返回某列的最小值
分组查询
如果报错请在 my.ini 添加
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,E
RROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
GROUP BY
mysql> SELECT * FROM users GROUP BY password;
+----+----------+----------+
| id | username | password |
+----+----------+----------+
| 3 | moon1 | 123456 |
| 1 | moon | 456789 |
+----+----------+----------+
2 rows in set (0.01 sec)
mysql> SELECT * FROM users GROUP BY username;
+----+----------+----------+
| id | username | password |
+----+----------+----------+
| 2 | alex1 | 456789 |
| 1 | moon | 456789 |
| 3 | moon1 | 123456 |
+----+----------+----------+
3 rows in set (0.01 sec)
使用 LIMIT 限制查询结果的数量
select * from users limit 2,10;
select * from users as u where u.id=1;
为表和字段取别名

qianxun
select username as myname from users;
mysql 的子查询
where 型子查询
(把内层查询结果当作外层查询的比较条件)
select * from users where id in (select id from users where id>10);
from 型子查询
(把内层的查询结果供外层再次查询)
select * from (select username,age from users) as agev_a where age>20
select * from (select * from users where id>=10) as age_10;
(select * from users where id>=10)查询出来的是一个集合 别名为
age_10
select * from age_10
exists 型子查询
(把外层查询结果拿到内层,看内层的查询是否成立)
1
0
select * from users where EXISTS (select * from users where id>1)
联合查询(两个表的查询)
注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用
UNION ALL。
当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行
UNION ALL 查询全部 而且不会消除重复的行
union
SQL UNION ALL 语法
union 的用法及注意事项
两次查询的列数必须一致
select * from users union select *,1 from news;

qianxun
CREATE TABLE `news` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) not NULL,
`content` varchar(255) not null,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
insert into news (title,content)values('a1','a1’);

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

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

相关文章

光明乳业:以科技赋能品质,引领乳业绿色新未来

近日,光明乳业再次成为行业焦点,其在科技创新与绿色发展方面的卓越表现赢得了广泛赞誉。作为中国乳制品行业的领军企业,光明乳业始终坚守品质至上的原则,不断探索科技创新之路,致力于为消费者提供更高品质、更健康的乳…

vdb:虚拟数据库

将文件虚拟成数据库,序列化写入、反序列化读取、直接读取。

Adobe正通过数字体验改变世界

在当今这个数字化飞速发展的时代,Adobe公司正以其创新的技术和卓越的产品引领着创意设计领域的变革。从Adobe发布的生成式AI工具(Adobe Firefly),到Illustrator和Photoshop的新AI功能,再到广受认可的Adobe国际认证&…

GLSL教程 第5章:光照和材质

目录 5.1 光照模型基础 5.2 Phong光照模型 5.3 Blinn-Phong光照模型 5.4 Cook-Torrance光照模型 5.5 Lambert光照模型 5.6 材质属性的深入讲解 小结 光照和材质是计算机图形学中至关重要的元素,它们共同决定了渲染图像的视觉效果。光照模型用于模拟光源与物体…

政安晨【零基础玩转各类开源AI项目】基于Ubuntu系统部署LivePortrait :通过缝合和重定向控制实现高效的肖像动画制作

目录 项目论文介绍 论文中实际开展的工作 非扩散性的肖像动画 基于扩散的肖像动画 方法论 基于Ubuntu的部署实践开始 1. 克隆代码并准备环境 2. 下载预训练权重 3. 推理 快速上手 驱动视频自动裁剪 运动模板制作 4. Gradio 界面 5. 推理速度评估 社区资源 政安…

electron安装及快速创建

electron安装及快速创建 electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 详细内容见官网:https://www.electronjs.org/zh/docs/latest/。 今天来记录下练习中的安装过程和hello world的创建。 创建项目文件夹,并执行npm 初始化命…

C++实用指南:Lambda 表达式的妙用

Lambda 表达式的灵活性和强大功能确实为编程提供了许多便利。但是我们发现许多开发者仍然无法灵活运用其便利,于是写了这篇文章。 Lambda 允许我们编写更简洁和灵活的代码。例如在处理网络请求时,我们经常需要确保响应与当前的状态或需求仍然相关。通过…

STM32 | RTC闹钟实战

点击上方"蓝字"关注我们 01、rtc.h #ifndef __RTC_H#define __RTC_H​#include "stm32f4xx.h"#include "delay.h"#include "led.h"​void Rtc_My_Init(void);void RTC_Alarm_MyA(void);​​​#endif 02、rtc.c #include "rtc.h…

了解ChatGPT API

要了解如何使用 ChatGPT API,可以参考几个有用的资源和教程,这些资源能帮助你快速开始使用 API 进行项目开发。下面是一些推荐的资源: OpenAI 官方文档: 访问 OpenAI 的官方网站可以找到 ChatGPT API 的详细文档。这里包括了 API …

迅雷强制升级,漠视用户权力

用着迅雷,突然闪退,弹出升级界面。没有任何经过我的同意和操作,直接退出,强制升级。非常的蛮横和强硬。 升级完成之后,弹出一个提示框,提示框里有一个启动按钮,和一个加入开机自启的勾选框。意…

测试面试宝典(二十八)—— 请问黑盒测试和白盒测试有哪些方法?

黑盒测试方法主要包括: 1. 等价类划分法:将输入数据划分为若干个等价类,从每个等价类中选取一个代表性的数据进行测试。 2. 边界值分析法:针对输入或输出的边界值进行测试,因为这些边界值往往容易出现错误。 3. 因果…

【Python实战】Google Chrome的离线小恐龙游戏

文章目录 Google Chrome的离线小恐龙游戏项目结构大纲 📊👣逐步编码过程 🧩💡第一步:项目初始化与主程序框架第二步:实现T-Rex的跳跃功能第三步:添加障碍物和碰撞检测第四步:添加得分…

前端面试项目细节重难点分享(十三)

面试题提问:分享你最近做的这个项目,并讲讲该项目的重难点? 答:最近这个项目是一个二次迭代开发项目,迭代周期一年,在做这些任务需求时,确实有很多值得分享的印象深刻的点,我讲讲下面…

linux--mount--挂载

linux文件挂载----mount 什么是挂载 mount -t nfs a b 将远端的a目录挂载到本端的b目录 就可以在本端的b目录下操作a目录下的文件和目录。 mount实现挂载的过程 链接1 链接2 链接3 挂载的目的 通过操作挂载目录中的数据,更改被挂载设备中的数据。 &#x…

go语言学习文档精简版

Go语言是一门开源的编程语言,目的在于降低构建简单、可靠、高效软件的门槛。Go平衡了底层系统语言的能力,以及在现代语言中所见到的高级特性。 你好,Go package main // 程序组织成包import "fmt" // fmt包用于格式化输出数据// …

.NET Core中如何集成RabbitMQ

在.NET Core中集成RabbitMQ主要涉及到几个步骤,包括安装RabbitMQ的NuGet包、建立连接、定义队列、发送和接收消息等。下面是一个简单的指南来展示如何在.NET Core应用程序中集成RabbitMQ。 目录 1. 安装RabbitMQ.Client NuGet包 2. 建立连接 3. 定义队列 4. 发…

排序算法详解

​ 💎所属专栏:数据结构与算法学习 💎 欢迎大家互三:2的n次方_ 🍁1. 插入排序 🍁1.1 直接插入排序 插入排序是一种简单直观的排序算法,它的原理是通过构建有序序列,对于未排序数…

使用 Visual Studio 2022 自带的 cl.exe 测试编译 opencv helloworld

1. 参考博客&#xff1a;https://blog.csdn.net/yangSHU21/article/details/130237669( 利用OpenCV把一幅彩色图像转换成灰度图 )( 代码用的此博客的&#xff0c;就改了下图片文件路径而已 )。 2. 编译探索步骤&#xff1a; test.cpp&#xff1a; #include <iostream>…

Golang | Leetcode Golang题解之第283题移动零

题目&#xff1a; 题解&#xff1a; func moveZeroes(nums []int) {left, right, n : 0, 0, len(nums)for right < n {if nums[right] ! 0 {nums[left], nums[right] nums[right], nums[left]left}right} }

【云原生】ReplicaSet控制器详解

ReplicaRet 文章目录 ReplicaRet一、ReplicaSet介绍1.1、介绍1.2、ReplicaSet的工作原理1.3、何时使用ReplicaSet 二、实战2.1、示例 三、非模板Po的获得四、编写ReplicaSet的清单注意事项4.1、编写注意事项4.2、Pod模板4.3、Pod选择标签4.4、ReplicaSet扩缩容4.5、删除Replica…