ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

mysql基本操作

2021-08-27 22:03:24  阅读:228  来源: 互联网

标签:name runoob -- 数据库 pwd student 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;  //修改加密数据

标签:name,runoob,--,数据库,pwd,student,mysql,基本操作
来源: https://www.cnblogs.com/xiaozhizxj/p/15195355.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有