MySQL入门(数据库、数据表、数据、字段的操作以及查询相关sql语法)


天行健,君子以自强不息;地势坤,君子以厚德载物。


每个人都有惰性,但不断学习是好好生活的根本,共勉!


文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。


安能摧眉折腰事权贵,使我不得开心颜?

------《梦游天姥吟留别》


文章目录

  • MySQL入门操作命令汇总
    • [1. 数据库](#1. 数据库)
      • [1.1 登录数据库](#1.1 登录数据库)
      • [1.2 创建数据库(create)](#1.2 创建数据库(create))
      • [1.3 查看所有数据库(show)](#1.3 查看所有数据库(show))
      • [1.4 删除数据库(drop)](#1.4 删除数据库(drop))
      • [1.5 更改数据库字符集](#1.5 更改数据库字符集)
    • [2. 数据表](#2. 数据表)
      • [2.1 使用数据库(use)](#2.1 使用数据库(use))
      • [2.2 创建数据表(create)](#2.2 创建数据表(create))
      • [2.3 查询数据表(show)](#2.3 查询数据表(show))
      • [2.4 查看表结构(describe)](#2.4 查看表结构(describe))
      • [2.5 删除表(drop)](#2.5 删除表(drop))
      • [2.6 修改数据表名(alter)](#2.6 修改数据表名(alter))
    • [3. 数据](#3. 数据)
      • [3.1 添加数据(insert)](#3.1 添加数据(insert))
      • [3.2 查询数据(select)](#3.2 查询数据(select))
        • [3.2.1 去重查询(distinct)](#3.2.1 去重查询(distinct))
        • [3.2.2 模糊查询(like)](#3.2.2 模糊查询(like))
        • [3.2.3 限制查询结果集(limit)](#3.2.3 限制查询结果集(limit))
        • [3.2.4 分组查询(group)](#3.2.4 分组查询(group))
        • [3.2.5 分组统计(count)](#3.2.5 分组统计(count))
        • [3.2.6 结果集过滤(having)](#3.2.6 结果集过滤(having))
        • [3.2.7 结果集排序(order)](#3.2.7 结果集排序(order))
          • [3.2.7.1 单字段排序](#3.2.7.1 单字段排序)
          • [3.2.7.2 多字段排序](#3.2.7.2 多字段排序)
          • [3.2.7.3 限制排序](#3.2.7.3 限制排序)
          • [3.2.7.4 限制排序并选择区间(暂时未测通)](#3.2.7.4 限制排序并选择区间(暂时未测通))
      • [3.2 删除数据](#3.2 删除数据)
      • [3.3 修改数据(更新数据)](#3.3 修改数据(更新数据))
    • [4. 字段(表中的列名)](#4. 字段(表中的列名))
      • [4.1 显示表中所有字段(列)](#4.1 显示表中所有字段(列))
      • [4.2 显示表中所有数据](#4.2 显示表中所有数据)
      • [4.3 添加字段(列)](#4.3 添加字段(列))
      • [4.4 删除字段(列)](#4.4 删除字段(列))
      • [4.5 修改字段类型](#4.5 修改字段类型)
      • [4.6 修改字段名和类型](#4.6 修改字段名和类型)
    • [5. 统计](#5. 统计)
      • [5.1 sum求和](#5.1 sum求和)
      • [5.2 count统计数量](#5.2 count统计数量)
      • [5.3 max最大值](#5.3 max最大值)
      • [5.4 min最小值](#5.4 min最小值)
      • [5.5 avg平均值](#5.5 avg平均值)

MySQL入门操作命令汇总

MySQL学习专栏
MySQL下载安装配置

时区修改

java使用jdbc导致时区问题,此时修改东八区

在mysql文件夹中找到my.ni文件

编辑器打开,在[mysqlId]下面添加一行

l 复制代码
default-time_zone='+8:00'

然后重启mysql,打开任务管理器--服务--找到mysql,右键重新启动

1. 数据库

1.1 登录数据库

mysql -u 账号 -p

回车后输入密码

密码不显示

1.2 创建数据库(create)

创建数据使用create语句

语法

sql 复制代码
create database 数据库名;

如创建数据库test01

sql 复制代码
create database test01;

1.3 查看所有数据库(show)

查看数据库使用show语句

sql 复制代码
show databases;

1.4 删除数据库(drop)

删除数据库使用drop语句

语法

sql 复制代码
drop database 数据库名;

如删除数据库test01

sql 复制代码
drop database test01;

1.5 更改数据库字符集

更改数据库的字符集,使用alter set进行设置

语法

sql 复制代码
alter database 数据库名 default character set 字符集名称;

如将数据库test01的字符集修改为utf-8

sql 复制代码
alter database test01 default character set 'utf-8';

2. 数据表

2.1 使用数据库(use)

使用数据库表示接下来对数据库和表的操作都是在该数据库下进行

sql 复制代码
use 数据库名;

在操作表之前需要先使用该命令选择数据库

如使用数据库test01

sql 复制代码
use test01;

2.2 创建数据表(create)

创建数据表

语法

sql 复制代码
CREATE TABLE 表名 (
    字段1 数据类型 约束条件;
    字段2 数据类型 约束条件;
);

如创建一个名为user的数据表,字段包含姓名年龄以及自增长的id

sql 复制代码
create table user(
    id int auto_increment not null comment "自增id",
    name varchar(255) not null default "" comment "姓名",
    age int not null default 0 comment "年龄",
    primary key (id)
);

拓展

关于mysql中常见的数据库表字段数据类型

整数类型

整数类型的内容如下表

数据类型|描述|示例

tinyint|1字节,取值范围: -128~127|CREATE TABLE test(id TINYINT);

smallint|2字节,取值范围:-32768~32767|num SMALLINT;

mediumint|3字节,取值范围:-8388608~8388607|num MEDIUMINT;

int|4字节,取值范围:-2147483648~2147483647|num int;

bigint|8字节,取值范围:-9223372036854775808~9223372036854775807|num BIGINT;

浮点数类型

浮点数类型的内容如下表

数据类型|描述|示例

float(m,d)|单精度浮点数,占用4个字节,m为总个数,d为小数位|num float(5,2);

double(m,d)|双精度浮点数,占用8个字节,比FLOAT有更高的精度和更大的表示范围|num double(10,2);

decimal(m,d)|精确数值类型,用于存储精确的雄安舒。可以指定精度和小数位数|num decimal(10,2);

字符串类型

字符串类型的内容如下表

char|固定长度的字符串,长度在创建时指定,不足指定长度时会用空格填充|str CHAR(5);

varchar|可变长度的字符串,长度在创建时指定,存储时只占用实际字符串长度的空间|str VARCHAR(255);

text|用于存储较长的文本数据,有TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT等不同的长度限制|str TEXT;

日期时间类型

日期时间类型的内容如下表

date|用于存储日期,格式为YYYY-MM-DD|time DATE;

time|用于存储时间,格式为HH:MM:SS|time TIME;

datetime|用于存储日期和时间,格式为YYYY-MM-DD HH:MM:SS|time DATETIME;

timestamp|用于存储日期和时间,范围比DATETIME小,从1970-01-01 00:00:01到2038-01-19 03:14:07,并且在插入或更新记录时,TIMESTAMP列会自动更新为当前时间|time TIMESTAMP;

二进制类型

二进制类型的内容如下表

binary|固定长度的二进制数据,类似于CHAR|data BINARY(10);

varbinary(M)|可变长度的二进制数据,类似于VARCHAR|data VARBINARY(255);

blob|用于存储大量的二进制数据,有TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB等不同的长度限制|CREATE TABLE test (data BLOB);

2.3 查询数据表(show)

展示当前数据库的所有表(使用use 数据库名语句来确认展示指定数据库中的表)

sql 复制代码
show tables;

如展示test01数据库下的所有表

sql 复制代码
use test01;
sql 复制代码
show tables;

2.4 查看表结构(describe)

查看数据表结构

语法

sql 复制代码
describe 表名;

如查看users表的表结构

sql 复制代码
describe users;

2.5 删除表(drop)

删除数据表

语法

sql 复制代码
drop table 表名;

如删除users表

sql 复制代码
drop table users;

2.6 修改数据表名(alter)

修改数据表的名称

语法

sql 复制代码
alter table 旧数据表名 rename 新数据表名;

如修改users表的表名,修改为users_info

sql 复制代码
alter table users rename users_info;

3. 数据

3.1 添加数据(insert)

添加数据,即添加表字段对应的值

添加一条数据

语法

sql 复制代码
insert into 表名 (字段1,字段2,字段3,字段4...) values (值1,值2,值3,值4...);

如在表users中添加name和age字段的数据

sql 复制代码
insert into users (name, age) value ("libai", 18);

插入多条数据

语法

sql 复制代码
insert into 表名 (字段1,字段2,字段3,字段4...) values (值11,值12,值13,值14...), (值21,值22,值23,值24...);

如在表users中添加两条数据

sql 复制代码
insert into users (name, age) values ("格鲁特", 19), ("灭霸", 30);

3.2 查询数据(select)

查询使用select语句

可查询全部数据(*表示查询所有列的数据)

语法

sql 复制代码
select * from 表名;

如查询users表的所有数据

sql 复制代码
select * from users;

查询满足条件的指定的字段的数据

语法

sql 复制代码
select 字段1,字段2,字段3... from 表名 where 条件;

如查询users表中满足age值为18的name和age字段的数据

sql 复制代码
select name, age from users where age = 18;
3.2.1 去重查询(distinct)

指定字段去重(distinct)

语法

sql 复制代码
select distinct 字段名 from 数据表名;

如去重查询users表中name字段的数据

sql 复制代码
select distinct name from users;
3.2.2 模糊查询(like)

like模糊查询(%表示通配符)

语法

sql 复制代码
select * from 表名 where 字段名 like '匹配内容的前缀%';

如查询表名为users

字段名为name

以李开头的数据

sql 复制代码
select * from users where name like '李%';
3.2.3 限制查询结果集(limit)

对查询结果限制输出

语法

sql 复制代码
select * from users limit 需要保留的数据量的值;

如查询users表中的数据,保留前十条展示

sql 复制代码
select * from users limit 10;
3.2.4 分组查询(group)

根据表中字段A进行查询结果分组

语法

sql 复制代码
select 字段A from 表名 group by 字段A;

如查询users表中的数据按用户年龄分组

sql 复制代码
select age from users group by age;
3.2.5 分组统计(count)

根据表字段分组统计满足条件的数据,其中count中的字段名也可以是*表示统计所有字段

语法

sql 复制代码
select 字段名,count(字段名或者自定义) from 表名 group by 字段名;

这样写可能不是很明确,可以如下,根据字段名分组,分组的后的数量起个别名进行展示

语法

sql 复制代码
select 字段名, count(字段名) as num from 表名 group by 字段名;

其中括号中的字段名可自定义内容,当使用as设置别名时count(*)部分不会展示

语法

sql 复制代码
select 字段名, count(*) as num from 表名 group by 字段名;

如将用户表根据性别分组统计

sql 复制代码
select gender, count(*) as num from users group by gender;
3.2.6 结果集过滤(having)

根据字段名分组并过滤

语法

sql 复制代码
select 字段名, count(字段名) as result from 表名 group by 字段名 having 条件;

如统计users表中性别为男的数据

sql 复制代码
select gender,count(*) as 同性别的人数 from users group by gender having gender = "男"; 
3.2.7 结果集排序(order)
3.2.7.1 单字段排序

根据某个字段升序或者降序排序所查询的数据

排序关键字:

asc 升序排序(默认)

desc 降序排序

语法

sql 复制代码
select 字段名 from 表名 order by 字段名 排序关键字;

如查询users表所有数据,按照age字段升序排序

sql 复制代码
select * from users order by age asc;
3.2.7.2 多字段排序

根据多个字段升序或者降序排序所查询的数据

语法

sql 复制代码
select 字段名 from 表名 order by 字段名1 排序关键字, 字段名2 排序关键字;

如查询users表数据,先按照age字段升序排序,(如果有age相同的数据)再按name字段降序排序

sql 复制代码
select * from users order by age asc, name desc;
3.2.7.3 限制排序

将查询的数据排序后限制数量展示

语法

sql 复制代码
select 字段名 from 表名 order by 字段名 排序关键字 limit 数量;

如查看users表数据,根据age字段升序排序,输出前两条数据

sql 复制代码
select * from users order by age asc limit 2;
3.2.7.4 限制排序并选择区间(暂时未测通)

将查询的结果排序后限制数量,并选择区间来展示

语法

sql 复制代码
select 字段名 from 表名 order by 字段名 排序关键字 limit 偏移量 数量;

如查询users表数据,根据age字段升序排序,从第三条数据后面(不包含第三条数据)取3条数据展示

sql 复制代码
select * from users order by age asc limit 3 3;

3.2 删除数据

使用delete删除数据

语法

sql 复制代码
delete from 表名 where 条件;

如删除users表中name="杜甫"的数据

sql 复制代码
delete from users where name="杜甫";

3.3 修改数据(更新数据)

使用update更新表数据

语法

sql 复制代码
update 表名 set 字段名=字段值 where 条件;

可以同时更新多个字段的值

语法

sql 复制代码
update 表名 set 字段名1=字段值1, 字段名2=字段值2 where 条件;

如更新users表中name="西施"的数据,将其age值改为16

sql 复制代码
update users set age=16 where name="西施";

4. 字段(表中的列名)

4.1 显示表中所有字段(列)

使用show columns展示表中的所有字段

语法

sql 复制代码
show columns from 表名;

如展示users表的所有字段数据

sql 复制代码
show columns from users;

4.2 显示表中所有数据

在添加、修改或删除字段之前可以先查看表数据

语法

sql 复制代码
select * from 表名;

4.3 添加字段(列)

通过alter和add添加新的表字段

语法

sql 复制代码
alter table 表名 add 字段 类型;

如在users表中添加height身高字段,类型为int

sql 复制代码
alter table users add height int;

再如添加addr地址字段,类型为varchar,大小为255

sql 复制代码
alter table users add addr varchar(255);

添加字段后该字段的值会变成NULL

如果想使用默认值可以使用default定义默认值

如下

sql 复制代码
alter table users add addr varchar(255) default "上海";

4.4 删除字段(列)

使用alter和drop删除

语法

sql 复制代码
alter table 表名 drop column 字段;

如删除users表中height字段

sql 复制代码
alter table users drop column height;

4.5 修改字段类型

使用modify修改表字段

语法

sql 复制代码
alter table 表名 modify 字段名 类型;

如修改users表中addr字段类型,由varchar改为text

sql 复制代码
alter table users modify addr text;

4.6 修改字段名和类型

使用change修改表字段名(这里需要注意,修改字段名时必须带上新字段的数据类型)

语法

sql 复制代码
alter table 表名 change 原字段名 新字段名 类型;

如修改users表中addr字段,将其改为address,类型修改为varchar(255)

sql 复制代码
alter table users change addr address varchar(255);

如果想要只改名称,不改数据类型,则需要将原来的数据类型加上即可

5. 统计

常用统计函数如下

5.1 sum求和

使用sum来获取某个字段统计的总和

语法

sql 复制代码
select sum(字段名) as 别名 from 表名;

如统计users表中age字段的总和,将统计的总数使用别名allage表示

sql 复制代码
select sum(age) as allage from users;

5.2 count统计数量

使用count统计某个字段对应的数据条数

语法

sql 复制代码
select count(字段名或者*) as 别名 from 表名;

如统计表中name的数据数量,别名为nameCount

sql 复制代码
select count(name) as nameCount from users;

以下name换成*结果相同

sql 复制代码
select count(*) as nameCount from users;

5.3 max最大值

使用max获取表中字段最大值

语法

sql 复制代码
select max(字段名) as 别名 from 表名;

如获取users表中age最大的值

sql 复制代码
select max(age) as ageMax from users;

5.4 min最小值

使用min获取表中字段最小值

语法

sql 复制代码
select min(字段名) as 别名 from 表名;

如获取users表中age最小的值

sql 复制代码
select min(age) as ageMin from users;

5.5 avg平均值

使用avg获取表中字段的平均值

语法

sql 复制代码
select avg(字段名) as 别名 from 表名;

如获取users表中age字段的平均值

sql 复制代码
select avg(age) as ageAvg from users;

感谢阅读,祝君暴富!


版权声明:

  • 作者:寒山李白
  • 博客地址:https://hanshan.blog.csdn.net/
  • 版权:本作品采用《创作共享许可证》进行许可,根据该许可授权的内容可在符合本许可证条款的前提下自由使用、、修改和创作衍生作品。

版权许可介绍:

本文采用CC BY-NC-SA许可证

此许可允许在使用者仅出于非商业目的以任何媒体或格式分发、重新混合、改编和构建材料,并且前提是注明创作者。如果您重新混合、改编或基于该材料进行构建,则必须按照相同的条款对修改后的材料进行许可。

更多信息请访问以下网址查看:

版权官网 https://creativecommons.org/licenses/by-nc-sa/4.0/

中文翻译 https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh-hans


相关推荐
web147862107232 分钟前
海康威视摄像头ISUP(原EHOME协议) 摄像头实时预览springboot 版本java实现,并可以在浏览器vue前端播放(附带源码)
java·前端·spring boot
FG.9 分钟前
分布式搜索引擎02
java·分布式·搜索引擎
weixin_4957742019 分钟前
c#操作数据库三层架构
数据库·oracle·c#
铁头乔36 分钟前
想从 IoTDB 中读取大量数据经过一定程度的分析再写入 MySQL 或 SQLServer,在这种需求下,哪一种 ETL 方案最适合
数据库·mysql·sqlserver·开源·时序数据库·iotdb
铁头乔39 分钟前
Java 中如何使用 SSL 连接 IoTDB
java·数据库·开源·ssl·时序数据库·iotdb
Y编程小白43 分钟前
Vue2.0的安装
java·vue
中东大鹅1 小时前
MongoDB实训:电子商务日志存储任务
大数据·数据库·hadoop·分布式·mongodb
monstercl1 小时前
MySQL 8.4及以上版本压缩包安装 windows
windows·mysql
CN.LG1 小时前
浅谈Java之AJAX
java·开发语言
s_little_monster2 小时前
【Linux】权限
linux·运维·数据库·经验分享·学习·学习方法