前言: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基础语法-建库-建表(增、删、改、查、表关联及子查询)的更多相关文章

  1. oracle 11g 建库 建表 增 删 改 查 约束

    一.建库 1.(点击左上角带绿色+号的按钮) 2.(进入这个界面,passowrd为密码.填写完后点击下面一排的Test按钮进行测试,无异常就点击Connect) 二.建表 1-1. create t ...

  2. python_操作MySQL 初解 之__<类方法调用并 增-删-改-查>

    文件一: 调用(sqls文件) # 导入模块 import pymysql from sqls import * # 创建类 class KaoShi(object): # 初始化 def __ini ...

  3. 第18课-数据库开发及ado.net 连接数据库.增.删.改向表中插入数据并且返回自动编号.SQLDataReade读取数据

    第18课-数据库开发及ado.net 连接数据库.增.删.改向表中插入数据并且返回自动编号.SQLDataReade读取数据 ADO.NET 为什么要学习? 我们要搭建一个平台(Web/Winform ...

  4. iOS FMDB的使用(增,删,改,查,sqlite存取图片)

    iOS FMDB的使用(增,删,改,查,sqlite存取图片) 在上一篇博客我对sqlite的基本使用进行了详细介绍... 但是在实际开发中原生使用的频率是很少的... 这篇博客我将会较全面的介绍FM ...

  5. iOS sqlite3 的基本使用(增 删 改 查)

    iOS sqlite3 的基本使用(增 删 改 查) 这篇博客不会讲述太多sql语言,目的重在实现sqlite3的一些基本操作. 例:增 删 改 查 如果想了解更多的sql语言可以利用强大的互联网. ...

  6. 好用的SQL TVP~~独家赠送[增-删-改-查]的例子

    以前总是追求新东西,发现基础才是最重要的,今年主要的目标是精通SQL查询和SQL性能优化.  本系列主要是针对T-SQL的总结. [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础] ...

  7. MVC EF 增 删 改 查

    using System;using System.Collections.Generic;using System.Linq;using System.Web;//using System.Data ...

  8. django ajax增 删 改 查

    具于django ajax实现增 删 改 查功能 代码示例: 代码: urls.py from django.conf.urls import url from django.contrib impo ...

  9. ADO.NET 增 删 改 查

    ADO.NET:(数据访问技术)就是将C#和MSSQL连接起来的一个纽带 可以通过ADO.NET将内存中的临时数据写入到数据库中 也可以将数据库中的数据提取到内存中供程序调用 ADO.NET所有数据访 ...

  10. Go语言之进阶篇mysql增 删 改 查

    一.mysql操作基本语法 1.创建名称nulige的数据库 CREATE DATABASE nulige DEFAULT CHARSET utf8 COLLATE utf8_general_ci; ...

随机推荐

  1. Java UDP实现聊天功能代码【转】

    感谢大佬大佬!!!:https://www.cnblogs.com/woshijpf/p/3735684.html 我以前经常写的是基于TCP的网络编程,由于TCP建立连接鼻血要经过三次握手连接,服务 ...

  2. Android 动态申请权限问题【转】

    Android 动态申请权限问题 感谢大佬:https://www.jianshu.com/p/2324a2bdb3d4 感谢大佬:https://blog.csdn.net/weixin_42910 ...

  3. JDK版本基础知识解释

    感谢大佬:https://www.cnblogs.com/bjguanmu/articles/8710209.html jdk:java development kit,是程序员编写java程序需要的 ...

  4. 通过版本号来判断用户是否是第一次登陆----By张秀清

    @interface AppDelegate () @end @implementation AppDelegate - (BOOL)application:(UIApplication *)appl ...

  5. The official raywenderlich.com Objective-C style guide.

    The official raywenderlich.com Objective-C style guide. This style guide outlines the coding convent ...

  6. 详解Java12新增语法switch表达式

    引言 在学习分支语句的时候,我们都学过 switch 语句,相比于 if-else 语句,他看起来更加整洁,逻辑更加清晰,Java中当然也给我们提了相关的 switch 方法.但是Java的强大之处在 ...

  7. linux_20

    总结tomcat优化方法 java程序出现oom如何解决?什么场景下会出现oom? 简述redis特点及其应用场景 对比redis的RDB.AOF模式的优缺点 实现redis哨兵,模拟master故障 ...

  8. Kubernets-初见

    只是入门文档. 使用 linux 通过 java -jar 方式部署单体架构,war 包丢tomcat. 使用 Docker部署微服务架构. 使用 K8s Pod 进行部署 一个一个 服务 命令 je ...

  9. D介绍-概述

    INTRODUCTION THE SELENIUM PROJECT AND TOOLS Selenium controls web browsers Selenium is many things, ...

  10. 帆软报表(finereport)雷达图钻取详细点新页面展示

    添加参数栏,季度下拉框的空间名为combobox0 添加雷达图,通过第三页面做跳转 雷达图钻取.cpt为联动钻取的第三页面 添加纬度(所点击钻取的点) 参数   wd 添加季度参数 jd    值为季 ...