自学内容网 自学内容网

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


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


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


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


安能摧眉折腰事权贵,使我不得开心颜?
——《梦游天姥吟留别》



MySQL入门操作命令汇总

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

时区修改
java使用jdbc导致时区问题,此时修改东八区
在mysql文件夹中找到my.ni文件
编辑器打开,在[mysqlId]下面添加一行

default-time_zone='+8:00'

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

1. 数据库

1.1 登录数据库

mysql -u 账号 -p

回车后输入密码

密码不显示

1.2 创建数据库(create)

创建数据使用create语句
语法

create database 数据库名;

如创建数据库test01

create database test01;

1.3 查看所有数据库(show)

查看数据库使用show语句

show databases;

1.4 删除数据库(drop)

删除数据库使用drop语句
语法

drop database 数据库名;

如删除数据库test01

drop database test01;

1.5 更改数据库字符集

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

alter database 数据库名 default character set 字符集名称;

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

alter database test01 default character set 'utf-8';

2. 数据表

2.1 使用数据库(use)

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

use 数据库名;

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

use test01;

2.2 创建数据表(create)

创建数据表
语法

CREATE TABLE 表名 (
    字段1 数据类型 约束条件;
    字段2 数据类型 约束条件;
);

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

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 数据库名语句来确认展示指定数据库中的表)

show tables;

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

use test01;
show tables;

2.4 查看表结构(describe)

查看数据表结构
语法

describe 表名;

如查看users表的表结构

describe users;

2.5 删除表(drop)

删除数据表
语法

drop table 表名;

如删除users表

drop table users;

2.6 修改数据表名(alter)

修改数据表的名称
语法

alter table 旧数据表名 rename 新数据表名;

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

alter table users rename users_info;

3. 数据

3.1 添加数据(insert)

添加数据,即添加表字段对应的值
添加一条数据
语法

insert into 表名 (字段1,字段2,字段3,字段4...) values (1,2,3,4...);

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

insert into users (name, age) value ("libai", 18);

插入多条数据
语法

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

如在表users中添加两条数据

insert into users (name, age) values ("格鲁特", 19), ("灭霸", 30);

3.2 查询数据(select)

查询使用select语句
可查询全部数据(*表示查询所有列的数据)
语法

select * from 表名;

如查询users表的所有数据

select * from users;

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

select 字段1,字段2,字段3... from 表名 where 条件;

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

select name, age from users where age = 18;
3.2.1 去重查询(distinct)

指定字段去重(distinct)
语法

select distinct 字段名 from 数据表名;

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

select distinct name from users;
3.2.2 模糊查询(like)

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

select * from 表名 where 字段名 like '匹配内容的前缀%';

如查询表名为users
字段名为name
以李开头的数据

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

对查询结果限制输出
语法

select * from users limit 需要保留的数据量的值;

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

select * from users limit 10;
3.2.4 分组查询(group)

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

select 字段A from 表名 group by 字段A;

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

select age from users group by age;
3.2.5 分组统计(count)

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

select 字段名,count(字段名或者自定义) from 表名 group by 字段名;

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

select 字段名, count(字段名) as num from 表名 group by 字段名;

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

select 字段名, count(*) as num from 表名 group by 字段名;

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

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

根据字段名分组并过滤
语法

select 字段名, count(字段名) as result from 表名 group by 字段名 having 条件;

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

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

根据某个字段升序或者降序排序所查询的数据
排序关键字:
asc 升序排序(默认)
desc 降序排序

语法

select 字段名 from 表名 order by 字段名 排序关键字;

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

select * from users order by age asc;
3.2.7.2 多字段排序

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

select 字段名 from 表名 order by 字段名1 排序关键字, 字段名2 排序关键字;

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

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

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

select 字段名 from 表名 order by 字段名 排序关键字 limit 数量;

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

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

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

select 字段名 from 表名 order by 字段名 排序关键字 limit 偏移量 数量;

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

select * from users order by age asc limit 3 3;

3.2 删除数据

使用delete删除数据
语法

delete from 表名 where 条件;

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

delete from users where name="杜甫";

3.3 修改数据(更新数据)

使用update更新表数据
语法

update 表名 set 字段名=字段值 where 条件;

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

update 表名 set 字段名1=字段值1, 字段名2=字段值2 where 条件;

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

update users set age=16 where name="西施";

4. 字段(表中的列名)

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

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

show columns from 表名;

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

show columns from users;

4.2 显示表中所有数据

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

select * from 表名;

4.3 添加字段(列)

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

alter table 表名 add 字段 类型;

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

alter table users add height int;

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

alter table users add addr varchar(255);

添加字段后该字段的值会变成NULL
如果想使用默认值可以使用default定义默认值
如下

alter table users add addr varchar(255) default "上海";

4.4 删除字段(列)

使用alter和drop删除
语法

alter table 表名 drop column 字段;

如删除users表中height字段

alter table users drop column height;

4.5 修改字段类型

使用modify修改表字段
语法

alter table 表名 modify 字段名 类型;

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

alter table users modify addr text;

4.6 修改字段名和类型

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

alter table 表名 change 原字段名 新字段名 类型;

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

alter table users change addr address varchar(255);

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

5. 统计

常用统计函数如下

5.1 sum求和

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

select sum(字段名) as 别名 from 表名;

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

select sum(age) as allage from users;

5.2 count统计数量

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

select count(字段名或者*) as 别名 from 表名;

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

select count(name) as nameCount from users;

以下name换成*结果相同

select count(*) as nameCount from users;

5.3 max最大值

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

select max(字段名) as 别名 from 表名;

如获取users表中age最大的值

select max(age) as ageMax from users;

5.4 min最小值

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

select min(字段名) as 别名 from 表名;

如获取users表中age最小的值

select min(age) as ageMin from users;

5.5 avg平均值

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

select avg(字段名) as 别名 from 表名;

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

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



原文地址:https://blog.csdn.net/mo_sss/article/details/145166097

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!