MySql教程

mysql基本操作

本文主要是介绍mysql基本操作,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

mysql

MySQL 是最流行的数据库之一,是一个免费开源的关系型数据库管理系统,但也不意味着该数据库是完全免费的。

1.基本命令行

mysql -uroot -proot -- 连接数据库
update user set password=password('123') where user='root' and host='localhost';    -- 修改密码
flush privileges; -- 刷新权限
show databases; -- 查看所有所有数据库
use school; -- 使用数据库
show tables; -- 显示数据库中的表
describe student; -- 查看student表的信息
create databases good; -- 创建一个数据库good
exit; -- 退出数据库
ctrl + c 强制退出命令行

2.操作数据库

2.1操作数据库

1、创建数据库

create database [if not exists] good;

2、删除数据库

drop database [if exist] good;

3、使用数据库

use good;

4、查看数据库

show databases; -- 查看所有数据库

2.2数据库列类型

数值类型

类型 大小 范围(有符号) 范围(无符号) 用途
tinyint 1字节 (-128,127) (0,255) 小整数值
smallint 2字节 (-32 768,32 767) (0,65 535) 大整数值
mediumint 3字节 (-8 388 608,8 388 607) (0,16 777 215) 大整数值
int(常用) 4字节 (-2 147 483 648,2 147 483 647) (0,4 294 967 295) 大整数值
bigint 8字节 (-9,223,372,036,854,775,808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 极大整数值
float 4字节 (-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字节 (-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的值 小数值

字符串

类型 大小 用途
char 0-255 bytes 定长字符串
varchar(常用) 0-65535 bytes 变长字符串
tinyblob 0-255 bytes 不超过 255 个字符的二进制字符串
tinytext 0-255 bytes 短文本字符串
blob 0-65 535 bytes 二进制形式的长文本数据
text(常用) 0-65 535 bytes 长文本数据
mediumblob 0-16 777 215 bytes 二进制形式的中等长度文本数据
mediumtext 0-16 777 215 bytes 中等长度文本数据
longblob 0-4 294 967 295 bytes 二进制形式的极大文本数据
longtext 0-4 294 967 295 bytes 极大文本数据

时间日期

类型 大小(字节) 格式 用途
date 3 YYYY-MM-DD 日期值
time 3 HH:MM:SS 时间值或持续时间
year 1 YYYY 年份值
datetime 8 YYYY-MM-DD HH:MM:SS 混合日期和时间值
timestamp 4 YYYYMMDD HHMMSS 混合日期和时间值,时间戳

2.3字段属性

名称 英文名 用途
主键 primary key 1.能唯一标识记录的字段,可以作为主键。2.一个表只能有一个主键。3. 主键具有唯一性。
唯一索引(唯一约束) unique 使得某字段的值也不能重复。
空\不为空值 null、not null 当前列是否可以为null,表示什么都没有
默认值属性 default 当前字段的默认值
自动增长约束 auto_increment 只能存在一个字段为自动增长,默认为1开始自动增长。可以通过表属性 auto_increment = x进行设置
注释 comment 标记名称
外键约束 foreign key 用于限制主表与从表数据完整性

2.4数据库必备字段

名字 作用
id 主键
version 乐观锁
id_delete 逻辑删除(不是真实删除)
gmt_create 创建时间
gmt_update 修改时间

2.5创建数据库表

CREATE TABLE
IF
	NOT EXISTS `student` (
		`id` INT ( 4 ) NOT NULL  auto_increment COMMENT '序号',
		`name` VARCHAR ( 30 ) NOT NULL DEFAULT '小欧' COMMENT '姓名',
		`pwd` VARCHAR ( 8 ) NOT NULL DEFAULT '123456' COMMENT '密码',
		`birthday` datetime DEFAULT NULL COMMENT '出生日期',
		`address` VARCHAR ( 100 ) DEFAULT NULL COMMENT '住址',
		`emain` VARCHAR ( 50 ) DEFAULT NULL COMMENT '邮箱',
	PRIMARY KEY ( `id` ) 
	) ENGINE = INNODB DEFAULT CHARSET = utf8;

2.6InnoDB与MyISAM的区别

数据库索引引擎索引 MyISAM早些年使用 InnoDB默认使用

MyISAM InnoDB
事务支持 不支持 支持
数据行锁定 不支持 支持
外键约束 不支持 支持
全文索引 支持 不支持
表空间大小 较小 较大,约为MyISAM的2倍

常规使用操作

  • MyISAM 节约空间,速度较快
  • InnoDB 安全性高,事务的处理,多表多用户操作

在物理空间存在的位置

所有的数据库文件都存在data目录下,一个文件夹对应一个数据库。(本质还是文件的存储)

mysql引擎在物理文件上的区别

  • InnoDB在数据库表中只有一个*.frm文件,以及上级目录下的ibdata1文件
  • MyISAM对应文件
    • [ ] *.frm 表结构的定义文件
    • [ ] *.MYD 数据文件(data)
    • [ ] *.MYI 索引文件(index)

设置数据库表的字符集编码

CHARESET=utf8

3.数据操作DML

3.1添加INSERT、修改UPDATE、删除DELETE

3.11添加数据INSERT

通用的 INSERT INTO SQL语法

INSERT INTO table_name ( field1, field2,...fieldN )
                       VALUES
                       ( value1, value2,...valueN );
INSERT INTO student ( NAME, pwd )
VALUES
	( 'Wilson', 158 ),
	( 'Zhangsan', 568 ),
	( 'Lishi', 896 );

3.12修改UPDATE

UPDATE 命令修改 MySQL 数据表数据的通用 SQL 语法

UPDATE table_name SET field1=new-value1, field2=new-value2
[WHERE Clause]
UPDATE student SET name='Zhangsan2' WHERE id=2;

3.13删除DELETE

DELETE 语句从 MySQL 数据表中删除数据的通用语法

DELETE FROM table_name [WHERE Clause]
delete from student where id =2;

3.2delete,drop,truncate

  • delete,drop,truncate 都有删除表的作用
  • delete 和 truncate 仅仅删除表数据
  • drop 连表数据和表结构一起删除
  • delete 是 DML 语句,操作完以后如果没有不想提交事务还可以回滚
  • truncate 和 drop 是 DDL 语句,操作完马上生效,不能回滚
  • 执行的速度上,drop>truncate>delete

4.DQL查询数据

4.1基本select查询和别名as

-- 查询全部数据
select * FROM student;

-- 查询指定字段
select name,pwd from student;

--别名
select `name` as 姓名,'pwd' as 密码 from student as s;

--函数 Concat(a,b)
select concat('姓名:',name) as 张三 from student;

语法:select 字段... from 表

4.2去重DISTINCT

数据去重,重复数据只显示一条

-- 查询全部学生
select `name` FROM student;
-- 姓名去重
select DISTINCT `name` FROM student;

数据库列

-- 密码字段+1
select DISTINCT name as 姓名,pwd +1 as 密码 FROM student;

4.3运算符

4.31逻辑运算符

运算符 语法 描述
and a and b 逻辑与
or a or b 逻辑或
not not a 逻辑非
SELECT name 姓名,pwd 密码,source `分数` FROM `student` WHERE source >80 and source <100
SELECT name 姓名,pwd 密码,source `分数` FROM `student` WHERE source <50 or source >70
SELECT name 姓名,pwd 密码,source `分数` FROM `student` WHERE NOT source <50

4.32比较运算符

运算符 语法 描述
is null a id null 为null是真
is not null b is not null 不为null是真
between and a betweeen and b 在a与b之间,为真
like a like b sql匹配,如果a匹配b,则真
in a in (a1,a2,a2) a在a1或者a2.。。中为真
like %(0到任意个字符 ) _(一个字符)
SELECT name 姓名,pwd 密码,source `分数` FROM `student` where pwd like '5%'
SELECT name 姓名,pwd 密码,source `分数` FROM `student` WHERE source  BETWEEN  80 and 100
SELECT name 姓名,pwd 密码,source `分数` FROM `student` WHERE source in (55,25,68,59,98,400,100)

4.4连接的使用

  • INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
  • LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
  • RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。

    [引用菜鸟教程的教程]: https://www.runoob.com/mysql/mysql-join.html
-- INNER JOIN
SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a INNER JOIN tcount_tbl b ON a.runoob_author = b.runoob_author;
-- LEFT JOIN
SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a LEFT JOIN tcount_tbl b ON a.runoob_author = b.runoob_author;

-- RIGHT JOIN
SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a RIGHT JOIN tcount_tbl b ON a.runoob_author = b.runoob_author;

4.5分页与排序

4.51分页

limit分页公式
-- curPage页数  pageSize一页的多少条数据
limit  (curPage-1)*pageSize,pageSize

SELECT * FROM `student` LIMIT 0,2
排序
-- 升序 asc  降序 desc
-- order by 字段排序
-- SQL语句后加上 字段名 order by asc或desc

4.6聚合函数(常用)

函数名 作用
count() 计数
sum() 求和
avg() 平均数
max() 最大值
min() 最小值
SELECT count('name') FROM student  -- count(字段名) 会忽略所有的null值
SELECT count(*) FROM student  -- count(*) 不会忽略null值,本质计算行数
SELECT count(1) FROM student	-- count(1) 不会忽略null值,本质计算行数

分组 GROUP BY

GROUP BY <字段名> 一般和聚合函数一起使用

select name 姓名,pwd,avg(source) 平均数,max(source) 最大值,min(source) 最小值 from student GROUP BY name

数据库MD5加密

插入时使用

insert into student values('xiaozhi',md5('123456')) //插入数据加密
UPDATE `student` SET pwd=MD5(pwd) where id = 1;  //修改加密数据
这篇关于mysql基本操作的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!