MySQL数据库学习——(一)MySQL数据库操作

1. MySQL简介

MySQL数据库,是由瑞典MySQL AB公司开发的一种关系型数据库。所谓关系型数据库,就是不同的数据表之间存在关联关系的数据库。

2. 安装MySQL

进入官网社区版下载页面:MySQL :: MySQL Community Downloads,之后需要登录自己的Orcale账户。

根据需要选择对应的操作系统的版本:

对于windows系统,可以直接下载傻瓜式安装包,一路点击下一步即可完成安装。

而对于Linux系统,则可根据需要,选择源码安装或者二进制包傻瓜式直接安装。

当安装完成后,建议将安装根目录下的bin目录添加到系统的环境变量中,以便直接调用mysql。初始安装后,默认的root用户密码为空,可直接进入mysql控制台,修改root密码。

连接数据库:

# 初始进入mysql,可直接进入控制台
$ mysql

# 在修改密码之后,则需要认证
$ mysql -u root -p

之后,输入该用户的密码,按回车,就可以进入mysql的控制台界面。出现以下界面,就表示成功进入mysql数据库的管理界面!在该控制台界面中,即可输入sql相关语句进行各种操作。

3. 针对数据库(DDL)的操作

创建数据库

# 创建数据库DB1(注意数据库的名字是区分大小写的,不过在windows系统中默认并不区分大小写,这一点要注意!!)
CREATE DATABASE DB1;

如果该数据库不存在,就可以成功创建该数据库,同时,会将该数据库的信息存入information_schema数据库中。

显示数据库

# 显示所有的数据库
SHOW DATABASES;

可以看出,存在上述已存在的数据库,其中,information_schema,mysql,performance_schema,sys是mysql内置的已有数据库,存有与mysql本身基本信息的数据。

先要操作某一个数据库,那么就必须先进入该数据库:

# 进入刚刚创建的数据库
USE DB1;

当出现“Database changed”之后,就表示进入到了该数据库之中。同时,为了确认是否处在该数据库中。可以通过以下命令查看当前所在的数据库:

# 查看当前所在的数据库
SELECT DATABASE();

显示表格

# 显示所有的表格
SHOW TABLES;

发现结果是“Empty set”(空集合)。由于我们并没有创建相关表格,所以也就没有表格信息。

删除数据库

# 删除数据库
DROP DATABASE DB1;

当然,为了保证严谨性,也可以通过加上限定条件来删除存在的数据库,防止报错:

# 删除存在的数据库
DROP DATABASE IF EXISTS DB1;
# 删除不存在的数据库
DROP DATABASE IF EXISTS DB2;

查看表的结构

对于表的结构,可以进入到已有的内置数据库information_schema中查看:

首先,我们先进入到该数据库中

# 进入到information_schema数据库
USE information_schema;
# 查看该数据库中表的信息
SHOW TABLES;

之后,我们通过desc+表名命令查看该表的结构

# 查看该表CHARACTER_SETS的结构
desc CHARACTER_SETS;

我们可以得到如下的结果,其中包括六列的内容,包括:Field(字段)、Type、Null、Key、Default和Extra。

  • Field,字段,相当于Excel中的列名
  • Type,类型,数据类型,相当于excel中的单元格类型
  • null,是否可以为空值
  • key,键类型,是否为主键
  • Default,默认值
  • Extra,备注信息

其中,比较值得关注的是字段的数据类型,不同的数据类型可以用以下的表格总结:

类型大小范围(有符号)范围(无符号)用途
TINYINT1 Bytes(-128,127)(0,255)小整数值
SMALLINT
2 Bytes
(-32 768,32 767)
(0,65 535)
大整数值
INT或INTEGER
4 Bytes
(-2 147 483 648,2 147 483 647)
(0,4 294 967 295)
大整数值
BIGINT
8 Bytes
(-9,223,372,036,854,775,808,9 223 372 036 854 775 807)
(0,18 446 744 073 709 551 615)
极大整数值
FLOAT
4 Bytes
(-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38)
0,(1.175 494 351 E-38,3.402 823 466 E+38)
单精度
浮点数值
DOUBLE
8 Bytes
(-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)
0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)
双精度
浮点数值
DECIMAL
对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2
依赖于M和D的值
依赖于M和D的值
小数值
数值型数据类型
类型大小
( bytes)
范围格式用途
DATE31000-01-01/9999-12-31YYYY-MM-DD日期值
TIME
3
‘-838:59:59’/’838:59:59’
HH:MM:SS
时间值或持续时间
YEAR
1
1901/2155
YYYY
年份值
DATETIME
8
‘1000-01-01 00:00:00’ 到 ‘9999-12-31 23:59:59’
YYYY-MM-DD hh:mm:ss
混合日期和时间值
TIMESTAMP
4
‘1970-01-01 00:00:01’ UTC 到 ‘2038-01-19 03:14:07’ UTC
结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07

YYYY-MM-DD hh:mm:ss
混合日期和时间值,时间戳
日期型
类型大小用途
CHAR
0-255 bytes
定长字符串
VARCHAR
0-65535 bytes
变长字符串
字符型

操作表

#创建表

# CREATE TABLE 表名 (
   field1 type1,
   field2 type2,
   field3 type3,
   ...,
   fieldn typen,
);
# 我们可以创建一个示例表table1(注意:最后一行不要有逗号)
create table table1 (
    id int,
    username varchar(20),
    password varchar(32)
    );

#修改表名

# ALTER TABLE 表名 RENAME TO 新表名;
ALTER TABLE table1 RENAME TO new_table1;

#添加一列

# ALTER TABLE 表名 ADD 列名 数据类型;
ALTER TABLE new_table1 ADD address varchar(32);

#修改数据类型

# ALTER TABLE 表名 MODIFY 列名 新数据类型;
ALTER TABLE new_table1 MODIFY address varchar(64);

#修改列名和数据类型

# ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型;
ALTER TABLE new_table1 CHANGE address address1 varchar(33);

#删除列

# ALTER TABLE 表名 DROP 列名;
ALTER TABLE new_table1 DROP address1;

4. navicat安装使用

Navicat官网:Navicat | 支持 MySQL、MariaDB、MongoDB、SQL Server、SQLite、Oracle 和 PostgreSQL 的数据库管理。若找不到免费激活版,可参考页面底部的TJUPT站点,自行申请账号进行下载。

5. 数据操作(DML)增删改

添加数据

# INSERT INTO 表名(列名1,列名2,...) VALUES(值1,值2,...);
# 注意,字符串必须要加上引号
INSERT INTO new_table1(id,username,password) VALUES(1,'liming','123');
INSERT INTO new_table1(id,username,password) VALUES(2,"liming1","123");

#添加数据

# INSERT INTO 表名(列名1,列名2,...) VALUES(值1,值2,...);
# 注意,字符串必须要加上引号
INSERT INTO new_table1(id,username,password) VALUES(1,'liming','123');
INSERT INTO new_table1(id,username,password) VALUES(2,"liming1","123");
# 给指定列添加数据
INSERT INTO new_table1(id,username) VALUES(3,"lingling");

#批量添加数据

# INSERT INTO 表名(列名1,列名2,...) VALUES(值1,值2,...),(值1,值2,...),(值1,值2,...)...;
# 注意,字符串必须要加上引号
INSERT INTO new_table1(id,username,password) VALUES(4,'daming','123'),(5,'amy','123'),(6,'xiaohai','123');

# 可以省略列名
# INSERT INTO 表名 VALUES(值1,值2,...),(值1,值2,...),(值1,值2,...)...;
INSERT INTO new_table1 VALUES(7,'daming','123'),(8,'amy','123'),(9,'xiaohai','123');

修改数据

#修改表数据

# UPDATE 表名 SET 列名1=值1,列名2=值2,...[WHERE 条件];
# 注意,字符串必须要加上引号
UPDATE new_table1 SET username="haimeimei" WHERE id=1;

删除表数据

# DELETE FROM 表名 [WHERE 条件];
# 注意,若不加限制条件,所有数据均会被删除
DELETE FROM new_table1 WHERE id=2;

6. DQL查询数据操作

基础查询

#查询多个字段数据

# SELECT 字段1,字段2,... FROM 表名;
SELECT id,username,password FROM new_table1;

# 查询所有字段
# SELECT 字段1,字段2,... FROM 表名;
SELECT * FROM new_table1 where id=1;

#去除重复记录

# SELECT DISTINCT 字段1,字段2,... FROM 表名;
SELECT DISTINCT id,username,password FROM new_table1;

条件查询

# SELECT * FROM 表名 WHERE id BETWEEN start AND end;
SELECT * FROM new_table1 WHERE id BETWEEN 1 AND 3;

# 查询特定值的结果
SELECT * FROM new_table1 WHERE id = 1;

# 查询不连续范围的结果
SELECT * FROM new_table1 WHERE id = 1 OR id = 3 OR id = 5;
SELECT * FROM new_table1 WHERE id in (1,3,5);

# 查询password为/不为NULL的结果
(错误)SELECT * FROM new_table1 WHERE password = NULL;
(正确)SELECT * FROM new_table1 WHERE password is NULL;
(正确)SELECT * FROM new_table1 WHERE password is not NULL;
符号功能
>大于
<小于
>=大于等于
<=小于等于
<>或!=不等于
=等于
BETWEEN … AND …在某个范围内
IN(…,…)多选一
LIKE 占位符模糊查询 _单个字符 %多个字符
IS (NOT) NULL是否为NULL
AND(&&), OR(||)且或运算
NOT非,不是
SQL语句限制条件的逻辑符

排序查询

#排序查询法(默认是升序)
# DESC: 降序
# ASC: 升序

# ASC: 升序
#SELECT 字段 FROM 表名 ORDER BY 字段名;
SELECT * FROM new_table1 ORDER BY id;

# DESC: 降序
SELECT * FROM new_table1 ORDER BY id DESC;

聚合查询

用法: select 聚合函数名(字段名) from 表名;

# SELECT count(字段) FROM 表名;
SELECT COUNT(id) FROM new_table1;

# 获取最大值/最小值/平均值/总和
SELECT max(id) FROM new_table1;
SELECT min(id) FROM new_table1;
SELECT avg(id) FROM new_table1;
SELECT sum(id) FROM new_table1;

分组查询

# SELECT 字段列表 FROM 表名 [where 条件 分组前条件过滤] GROUP BY 字段名 [having分组后条件过滤];
# 筛选new_table1中以username进行分组后对id数量进行统计
SELECT username, count(id) FROM new_table1 GROUP BY username;

# 筛选new_table1中以username进行分组且id<=7后对id数量进行统计
SELECT username, count(id) FROM new_table1 where id <= 7 GROUP BY username;

# 筛选new_table1中以username进行分组且id<=7后对id数量进行统计,筛选出count值>=2的数据
SELECT username, count(id) FROM new_table1 where id <= 7 GROUP BY username having count(id)>=2;

分页查询

# SELECT 字段名 FROM 表名 LIMIT 起始索引, 查询条目;
SELECT * FROM new_table1 LIMIT 0, 3;

# 每页显示3条数据,查询第1页数据
SELECT * FROM new_table1  LIMIT 0, 3;
# 每页显示3条数据,查询第2页数据
SELECT * FROM new_table1  LIMIT 3, 3;
# 每页显示3条数据,查询第3页数据
SELECT * FROM new_table1  LIMIT 6, 3;
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇
隐藏
变装