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; ...
随机推荐
- Java UDP实现聊天功能代码【转】
感谢大佬大佬!!!:https://www.cnblogs.com/woshijpf/p/3735684.html 我以前经常写的是基于TCP的网络编程,由于TCP建立连接鼻血要经过三次握手连接,服务 ...
- Android 动态申请权限问题【转】
Android 动态申请权限问题 感谢大佬:https://www.jianshu.com/p/2324a2bdb3d4 感谢大佬:https://blog.csdn.net/weixin_42910 ...
- JDK版本基础知识解释
感谢大佬:https://www.cnblogs.com/bjguanmu/articles/8710209.html jdk:java development kit,是程序员编写java程序需要的 ...
- 通过版本号来判断用户是否是第一次登陆----By张秀清
@interface AppDelegate () @end @implementation AppDelegate - (BOOL)application:(UIApplication *)appl ...
- The official raywenderlich.com Objective-C style guide.
The official raywenderlich.com Objective-C style guide. This style guide outlines the coding convent ...
- 详解Java12新增语法switch表达式
引言 在学习分支语句的时候,我们都学过 switch 语句,相比于 if-else 语句,他看起来更加整洁,逻辑更加清晰,Java中当然也给我们提了相关的 switch 方法.但是Java的强大之处在 ...
- linux_20
总结tomcat优化方法 java程序出现oom如何解决?什么场景下会出现oom? 简述redis特点及其应用场景 对比redis的RDB.AOF模式的优缺点 实现redis哨兵,模拟master故障 ...
- Kubernets-初见
只是入门文档. 使用 linux 通过 java -jar 方式部署单体架构,war 包丢tomcat. 使用 Docker部署微服务架构. 使用 K8s Pod 进行部署 一个一个 服务 命令 je ...
- D介绍-概述
INTRODUCTION THE SELENIUM PROJECT AND TOOLS Selenium controls web browsers Selenium is many things, ...
- 帆软报表(finereport)雷达图钻取详细点新页面展示
添加参数栏,季度下拉框的空间名为combobox0 添加雷达图,通过第三页面做跳转 雷达图钻取.cpt为联动钻取的第三页面 添加纬度(所点击钻取的点) 参数 wd 添加季度参数 jd 值为季 ...