Mysql基础语法-建库-建表(增、删、改、查、表关联及子查询)
前言:MySQL是一个数据库管理系统,也是一个关系数据库。它是由Oracle支持的开源软件,MySQL可以在各种平台上运行UNIX,Linux,Windows等。可以将其安装在服务器甚至桌面系统上。 此外,MySQL是可靠,可扩展和快速的,如果您开发网站或Web应用程序,MySQL是一个不错的选择(强烈建议使用)。
建库:
语法:
CREATE DATABASE IF NOT EXISTS '指定库名' DEFAULT CHARSET UTF8;
例:
CREATE DATABASE IF NOT EXISTS dbtest DEFAULT CHARSET UTF8;
解析:
CREATE - 创建
DATABASE - 库
IF NOT EXISTS - 如果不存在则创建
DEFAULT - 默认
CHARSET - 字符集
UTF8 - 可变长度字符编码(支持部分中文)
创建一个名字为'dbtest'的库指定默认字符编码为UTF8格式
指定库
USE dbtest;
指定为dbtest库(让数据库知道你在使用此库,之后查询和建表都会在此库)
建表
语法:
CREATE TABLE IF NOT EXISTS '表名' ('字段名称' '数据类型','字段名称' '数据类型')
ENGINE=INNODB DEFAULT CHARSET=UTF8;
例:
CREATE TABLE IF NOT EXISTS studentinfo
(
id INT PRIMARY KEY AUTO_INCREMENT NOT NULL,
name VARCHAR(20) NOT NULL,
age INT NOT NULL,
gender VARCHAR(5) NOT NULL,
birthday DATE NOT NULL,
phone VARCHAR(30) NULL
)ENGINE=INNODB DEFAULT CHARSET=UTF8;
解析:
TABLE - 表
ENGINE=INNODB - 数据库存储引擎
PRIMARY KEY - 主键
AUTO_INCREMENT - 自增
NOT NULL - 不可为空
NULL - 可以为空
INT - 整型数据类型(阿拉伯数字)
VARCHAR('指定字段长度') - 字符串数据类型(字母、中文、符号)
DATE - 日期类型(格式:2022-01-01)
创建一个学生表指定数据库储存引擎字符编码为UTF8格式、有字段(id,姓名,年龄,性别,生日,电话)
插入数据(增)
语法:
--单条数据插入
INSERT INTO '表名' ('指定插入字段') VALUES ('按照前面的指定按顺序插入对应');
例:
INSERT INTO studentinfo (name,age,gender,birthday,phone) VALUES ('张三',23,'男','1987-05-01',18874562135);
--多条数据插入
INSERT INTO '表名' ('指定插入字段')
VALUES
('按照前面的指定按顺序插入对应-数据1'),
('按照前面的指定按顺序插入对应-数据2'),
('按照前面的指定按顺序插入对应-数据3'),
('按照前面的指定按顺序插入对应-数据4'),
('按照前面的指定按顺序插入对应-数据5'),
('按照前面的指定按顺序插入对应-数据6'),
('按照前面的指定按顺序插入对应-数据7');
例:
INSERT INTO studentinfo (name,age,gender,birthday,phone)
VALUES
('张三',23,'男','1987-05-01',18874562135),
('李四',19,'男','2002-08-11',14796325674),
('王五',24,'男','1991-05-01',14756895552),
('赵四',21,'男','1999-05-01',18956235412),
('小明',69,'男','2001-05-01',13875652325),
('小红',18,'女','2003-05-01',18745632565),
('小丽',22,'女','2000-05-01',19856987456);
解析:
INSERT INTO - 插入
插入数据7条数据到学生表里面
注:我这里id字段是自增的、他会自己自增可以不插入、也可以不指定插入字段,那么必须按照顺序插入表的所有字段,除非字段是NULL(可以为空)
查询数据(查)
语法:
--全表查询
SELECT * FROM '表名';
例:
SELECT * FROM studentinfo;
结果:(如图)

解析:
SELECT - 查询
从学生表查询全表数据(*代表全部数据)
--分别查询学生表所有男生、女生
查询男生:
SELECT (name) FROM studentinfo WHERE gender='男';
结果:(如图)

查询女生:
SELECT (name) FROM studentinfo WHERE gender='女';
结果:(如图)

解析:
WHERE - 后面跟需要查询的条件
*换成name就是不查询整张表的信息,只查询name字段
--查询年龄大于20岁的数据
SELECT * FROM studentinfo WHERE age > 20;
结果:(如图)

--查询生日大于1995年的数据
SELECT * FROM studentinfo WHERE YEAR(birthday) < 1995;
结果:(如图)

解析:
YEAR - 年份函数
可以理解成这里做了一个强制类型转换,把日期类型转换成YEAR类型
--查询电话号码是以18开头的数据
SELECT * FROM studentinfo WHERE phone LIKE '18%';
结果:(如图)

解析:
LIKE - MySQL中的谓词
主要是针对VARCHAR字符型字段的,在一个字符型字段列中检索包含对应子串的。
% - 通配符、代表匹配0个或多个任意字符
--查询姓小的同学和名字中带明的同学(这里就可以用到刚刚提到的like了)
SELECT * FROM studentinfo WHERE name LIKE '小%'
UNION
SELECT * FROM studentinfo WHERE name LIKE '%明%';
结果:(如图)

解析:
UNION - 合并两个或多个 SELECT 语句的结果集
--查询男生的平均年龄
SELECT SUM(age)/COUNT(*) FROM studentinfo WHERE gender='男';
结果:(如图)

解析:
COUNT - 统计函数
SUM - 求和函数
平均年龄=总年龄和/个数
修改表数据(修改)
语法:
UPDATE '表名' SET '需要修改的字段结果' WHERE '条件';
--修改小明的年龄为18岁
UPDATE studentinfo SET age=18 WHERE name='小明';
结果:(如图)

解析:
UPDATE - 修改
修改学生表数据年龄字段为18、条件是姓名为小明的数据;
删除表数据(删除)
语法:
DELETE FROM '表名' WHERE '条件';
--删除年龄是18-20岁的数据
DELETE FROM studentinfo WHERE age>17 AND age<21;
结果:(如图)

解析:
DELETE - 删除
AND - 与(二个条件必须满足)
表关联查询
条件:必须是二个或以上的表进行关联,必须有关联字段
示例:
我这里有二张表(如下图):
图一:(websites表)

图二:(acceaa_log表)

--内关联
方式1:
SELECT w.,a. FROM websites w INNER JOIN acceaa_log a ON w.id=a.site_id;
结果:(如图)

解析:
用INNER JOIN关键字 - 进行内连接(结果取字段对应公共部分)
w.,a. - 给表取别名方便操作
方式2:
SELECT w.,a. FROM websites w,acceaa_log a WHERE w.id=a.site_id;
解析:
这里的结果其实和方法1一模一样进行了内连接查询,只是写法不一样,看个人喜好选择
--左关联
SELECT w.,a. FROM websites w LEFT JOIN acceaa_log a ON w.id=a.site_id;
结果:(如图)

解析:
LEFT JOIN - 左关联查询(公共部分+左边)
他会先把左边的表全部打出来,取对应的上的,对应不上的会返回NULL
右关联同理,只是反过来了,就不做过多解释了
--右关联
SELECT w.,a. FROM websites w RIGHT JOIN acceaa_log a ON w.id=a.site_id;
结果:(如图)

解析:
LEFT RIGHT - 右关联查询(公共部分+右边)
--联合查询
SELECT aid FROM acceaa_log
UNION ALL
SELECT id FROM websites;
结果:(如图)

解析:简单来说就是把两张表合在一起查询,之前也有提过UNION这个字段,就是把而张表对应字段合在一起
去掉 ALL 就是起到一个去重的作用,只会打印对应不重复的字段,跟内连接很像
结果:(如图)

--全连接
SELECT w.,a. FROM websites w LEFT JOIN acceaa_log a ON w.id=a.site_id
UNION
SELECT w.,a. FROM websites w RIGHT JOIN acceaa_log a ON w.id=a.site_id;
结果:(如图)

解析:
这应该都可以看出来这是左连接和右连接拼接出来的一个结果,就不做过多阐述了(公共部分+左边+右边)
子查询
定义:
子查询允许把一个查询嵌套在另一个查询当中。
子查询,又叫内部查询,相对于内部查询,包含内部查询的就称为外部查询。
子查询可以包含普通select可以包括的任何子句,比如:distinct、 group by、order by、limit、join和union等;但是对应的外部查询必须是以下语句之一:select、insert、update、delete、set或者do
例:
--标量子查询(返回单一值的标量,最简单的形式)
SELECT * FROM websites WHERE id=(SELECT site_id FROM acceaa_log WHERE site_id=6);
如图:

其他(补充)
--排序
SELECT * FROM studentinfo ORDER BY age ASC;(升序)
SELECT * FROM studentinfo ORDER BY age DESC;(降序)
ORDER BY age - 把年龄进行排序
不写age后面的关键字,默认是升序从小到大来排
--删库
DROP DATABASE '库名'
--删表
DELETE FROM '表名'
--添加字段(表创建完后的情况下)
ALTER TABLE '添加字段的表名' ADD '添加的字段名称 '字段类型'
例:
ALTER TABLE studentinfo ADD address VARCHAR(50) NULL;
--添加主键
ALTER TABLE student ADD PRIMARY KEY(id);
--修改字段名称和属性
ALTER TABLE '添加字段的表名' change '原字段名' '新字段名' '字段属性';
例:
ALTER TABLE studentinfo change address addres VARCHAR(30) NULL;
--修改字段属性
ALTER TABLE '添加字段的表名' MODIFY '字段名' '字段类型约束';
例:
ALTER TABLE studentinfo MODIFY addres VARCHAR(60) NULL;
--字段说明
waihao VARCHAR(20) COMMENT "游戏外号" #comment做字段说明,备注
本文章暂时就结束了,还有涉及的一些知识,之后可能会出个后续,大学生第一次写文章,如文章中有不足或者写错的地方请指出见谅,有什么不懂的可以联系作者的!!!!
---------------------------------未经允许禁止转载-------------------------------------
Mysql基础语法-建库-建表(增、删、改、查、表关联及子查询)的更多相关文章
- oracle 11g 建库 建表 增 删 改 查 约束
一.建库 1.(点击左上角带绿色+号的按钮) 2.(进入这个界面,passowrd为密码.填写完后点击下面一排的Test按钮进行测试,无异常就点击Connect) 二.建表 1-1. create t ...
- python_操作MySQL 初解 之__<类方法调用并 增-删-改-查>
文件一: 调用(sqls文件) # 导入模块 import pymysql from sqls import * # 创建类 class KaoShi(object): # 初始化 def __ini ...
- 第18课-数据库开发及ado.net 连接数据库.增.删.改向表中插入数据并且返回自动编号.SQLDataReade读取数据
第18课-数据库开发及ado.net 连接数据库.增.删.改向表中插入数据并且返回自动编号.SQLDataReade读取数据 ADO.NET 为什么要学习? 我们要搭建一个平台(Web/Winform ...
- iOS FMDB的使用(增,删,改,查,sqlite存取图片)
iOS FMDB的使用(增,删,改,查,sqlite存取图片) 在上一篇博客我对sqlite的基本使用进行了详细介绍... 但是在实际开发中原生使用的频率是很少的... 这篇博客我将会较全面的介绍FM ...
- iOS sqlite3 的基本使用(增 删 改 查)
iOS sqlite3 的基本使用(增 删 改 查) 这篇博客不会讲述太多sql语言,目的重在实现sqlite3的一些基本操作. 例:增 删 改 查 如果想了解更多的sql语言可以利用强大的互联网. ...
- 好用的SQL TVP~~独家赠送[增-删-改-查]的例子
以前总是追求新东西,发现基础才是最重要的,今年主要的目标是精通SQL查询和SQL性能优化. 本系列主要是针对T-SQL的总结. [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础] ...
- MVC EF 增 删 改 查
using System;using System.Collections.Generic;using System.Linq;using System.Web;//using System.Data ...
- django ajax增 删 改 查
具于django ajax实现增 删 改 查功能 代码示例: 代码: urls.py from django.conf.urls import url from django.contrib impo ...
- ADO.NET 增 删 改 查
ADO.NET:(数据访问技术)就是将C#和MSSQL连接起来的一个纽带 可以通过ADO.NET将内存中的临时数据写入到数据库中 也可以将数据库中的数据提取到内存中供程序调用 ADO.NET所有数据访 ...
- Go语言之进阶篇mysql增 删 改 查
一.mysql操作基本语法 1.创建名称nulige的数据库 CREATE DATABASE nulige DEFAULT CHARSET utf8 COLLATE utf8_general_ci; ...
随机推荐
- C# 实例解释面向对象编程中的单一功能原则
在面向对象编程中,SOLID 是五个设计原则的首字母缩写,旨在使软件设计更易于理解.灵活和可维护.这些原则是由美国软件工程师和讲师罗伯特·C·马丁(Robert Cecil Martin)提出的许多原 ...
- Python安装pip时, 报错:zipimport.ZipImportError: can't decompress data; zlib not available
解决办法: 1.安装依赖zlib.zlib-devel 2.重新编译安装Python 具体步骤: 1 到python安装目录下,运行./configure 2 编辑Modules/Setup文件 vi ...
- 鸟哥的Linux私房菜学习笔记——文件权限与目录配置
Linux的文件权限和目录配置 在linux中的每个用户必需属于一个组,不能独立于组外.在linux中每个文件有所有者.所在组.其它组的概念. (1)所有者 一般为文件的创建者,谁创建了该文件,就是天 ...
- Sublime Python3编译环境修改
http://blog.csdn.net/qq_33304418/article/details/63337602 添加编译环境python3.6 Tools -> Build Syst ...
- 帆软报表(finereport)禁用右键
点击模板>模板web属性>(填报,数据分析,分页预览设置),选择为该模板单独设置,在下面的事件设置里面添加一个加载结束事件,完整js代码如下: 这段代码的基本原理是让用户的页面右键点击事件 ...
- 4、网络并发编程--僵尸进程、孤儿进程、守护进程、互斥锁、消息队列、IPC机制、生产者消费者模型、线程理论与实操
昨日内容回顾 操作系统发展史 1.穿孔卡片 CPU利用率极低 2.联机批处理系统 CPU效率有所提升 3.脱机批处理系统 CPU效率极大提升(现代计算机雏形) 多道技术(单核CPU) 串行:多个任务依 ...
- Solution -「多校联训」取石子游戏
\(\mathcal{Description}\) Link. 有 \(n\) 堆石子,第 \(i\) 堆有 \(x_i\) 个,Alice 每次只能从这堆中拿走 \(a_i\) 个石子,Bo ...
- ASP.NET Core 6框架揭秘实例演示[08]:配置的基本编程模式
.NET的配置支持多样化的数据源,我们可以采用内存的变量.环境变量.命令行参数.以及各种格式的配置文件作为配置的数据来源.在对配置系统进行系统介绍之前,我们通过几个简单的实例演示一下如何将具有不同来源 ...
- 二,配置jdk,安装tomcat.以及tomcat项目的发布
1.jdk配置 一.环境准备 Windows10 jdk-9.0.1 二.下载并安装JDK 选择一个适合自己的JDK版本下载并安装即可,具体流程不详述. 三.环境变量配置 1.右键桌面上"我 ...
- Django中ORM创建表关系
一:django中ORM创建表关系 ORM创建外键关系 1.表与表之间的关系 1.表与表之间的关系 一对多 一对一 多对多 2.操作目标条件: 图书表 出版社表 作者表 作者详情表 3.外键关联 一对 ...