mysql学习总结一

下载

https://dev.mysql.com/downloads/mysql/

配置环境变量

找到mysql所在文件夹目录,是bin文件,添加到系统的环境变量path中

链接mysql

  1. 使用cmd终端链接(不推荐)
    • 打开cmd
    • 输入mysql -uroot -p你的密码
  2. 使用可视化工具链接Navicat,或者vscode中插件

认识sql语句

  1. SQL是Structured Query Language,称之为结构化查询语言,简称SQL
  2. 通常关键字使用大写的,比如CREATE、TABLE、SHOW等等
  3. 如果遇到关键字作为表明或者字段名称,可以使用``包裹
  4. 一条语句结束后,需要以 ; 结尾

sql语句分类

  1. DDL(Data Definition Language):数据定义语言。可以通过DDL语句对数据库或者表进行:创建、删除、修改等操作
  2. DML(Data Manipulation Language):数据操作语言。可以通过DML语句对表进行:添加、删除、修改等操作
  3. DQL(Data Query Language):数据查询语言。可以通过DQL从数据库中查询记录
  4. DCL(Data Control Language):数据控制语言。对数据库、表格的权限进行相关访问控制操作

数据库操作

查看所有数据库

SHOW DATABASES;

创建新的数据库

CREATE DATABASE IF NOT EXISTS goods_db;

查看当前正在使用数据库

SELECT DATABASE();

使用某一数据库

USE music_db;

删除数据库

DROP DATABASE IF EXISTS goods_db;

修改数据库的字符集和排序规则(了解,不建议使用)

ALTER DATABASE music_db CHARACTER SET = utf8 COLLATE = utf8_unicode_ci;

sql的数据类型

MySQL支持的数据类型有:数字类型,日期和时间类型,字符串(字符和字节)类型,空间类型和 JSON数据类型

  1. 数字类型
    • 整数数字类型: INTEGER,INT,SMALLINT,TINYINT,MEDIUMINT,BIGINT
    • 浮点数字类型:FLOAT,DOUBLE(FLOAT是4个字节,DOUBLE是8个字节)
    • 精确数字类型:DECIMAL,NUMERIC(DECIMAL是NUMERIC的实现形式)
  2. 日期类型
    • YEAR:以YYYY格式显示值。范围 1901到2155,和 0000
    • DATE:具有日期部分但没有时间部分的值。以格式YYYY-MM-DD显示值。支持的范围是 ‘1000-01-01’ 到 ‘9999-12-31’
    • DATETIME:用于包含日期和时间部分的值。以格式’YYYY-MM-DD hh:mm:ss’显示值。支持的范围是1000-01-01 00:00:00到9999-12-31 23:59:59;
    • TIMESTAMP:用于同时包含日期和时间部分的值。以格式’YYYY-MM-DD hh:mm:ss’显示值。它的范围是UTC的时间范围:‘1970-01-01 00:00:01’到’2038-01-19 03:14:07’
  3. 字符串类型
    • CHAR:创建表时为固定长度,长度可以是0到255之间的任何值。在被查询时,会删除后面的空格
    • VARCHAR:可变长度的字符串,长度可以指定为0到65535之间的值。在被查询时,不会删除后面的空格
    • BINARY和VARBINARY:用于存储二进制字符串,存储的是字节字符串
    • BLOB:用于存储大的二进制类型
    • TEXT:用于存储大的字符串类型

表约束

  1. 主键:PRIMARY KEY
    • 一张表中,我们为了区分每一条记录的唯一性,必须有一个字段是永远不会重复,并且不会为空的,这个字段我们通常会将它设置为主键
    • 主键是表中唯一的索引
    • 并且必须是NOT NULL的,如果没有设置 NOT NULL,那么MySQL也会隐式的设置为NOT NULL
    • 主键也可以是多列索引,PRIMARY KEY(key_part, …),我们一般称之为联合主键
    • 建议:开发中主键字段应该是和业务无关的,尽量不要使用业务字段来作为主键
  2. 唯一:UNIQUE
    • 某些字段在开发中我们希望是唯一的,不会重复的,比如身份证号码等,这个字段我们可以使用UNIQUE来约束
    • UNIQUE 索引允许NULL包含的列具有多个值NULL
  3. 不能为空:NOT NULL
  4. 默认值:DEFAULT
  5. 自动递增:AUTO_INCREMENT

数据表操作

查看所有数据表

SHOW TABLES;

查看表结构

DESC table_single;

创建数据表

CREATE TABLE IF NOT EXISTS `t_songs`(
    title VARCHAR(20),
    single_id INT,
    create_time DATETIME
);

创建一张完整的表

CREATE TABLE IF NOT EXISTS `t_mv`(
    id INT PRIMARY KEY AUTO_INCREMENT,
    title VARCHAR(20) NOT NULL,
    single_id INT NOT NULL
);

删除表(很少删除)

DROP TABLE IF EXISTS t_songs;

修改表(很少修改,开始确定)

# 修改表名
ALTER TABLE `table_single` RENAME TO `t_single`;
# 添加一个新的列
ALTER TABLE `t_single` ADD `update_time` DATETIME;
# 删除一列
ALTER TABLE `t_single` DROP `update_time`;
# 修改列的名称
ALTER TABLE `t_single` CHANGE `create_time` `createTime` DATETIME;
# 修改列的数据类型
ALTER TABLE `moment` MODIFY `id` INT;

删除表中所有的数据

DELETE FROM `products`;

除符合条件的数据

DELETE FROM `products` WHERE `title` = 'iPhone';

修改完数据后,直接可以显示最新的更新时间

ALTER TABLE `products` ADD `updateTime` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;

DQL数据查询语言

查询格式如下

SELECT select_expr [, select_expr]...
	[FROM table_references]
	[WHERE where_condition]
	[ORDER BY expr [ASC | DESC]]
	[LIMIT {[offset,] row_count | row_count OFFSET offset}]
	[GROUP BY expr]
	[HAVING where_condition]

基本查询

# 查询所有的数据并且显示所有的字段
SELECT * FROM `products`;
# 查询title、brand、price
SELECT title, brand, price FROM `products`;
# 给字段起别名
SELECT title as t, brand as b, price as p FROM `products`;

where条件查询
比较运算符

# 查询价格小于1000的手机
SELECT * FROM `products` WHERE price < 1000;
# 查询价格大于等于2000的手机
SELECT * FROM `products` WHERE price >= 2000;
# 价格等于3399的手机
SELECT * FROM `products` WHERE price = 3399;
# 价格不等于3399的手机
SELECT * FROM `products` WHERE price != 3399;

逻辑运算符

# 查询品牌是华为,并且小于2000元的手机
SELECT * FROM `products` WHERE `brand` = '华为' and `price` < 2000;
SELECT * FROM `products` WHERE `brand` = '华为' && `price` < 2000;
# 查询1000到2000的手机(不包含1000和2000)
SELECT * FROM `products` WHERE price > 1000 and price < 2000;
# OR: 符合一个条件即可
# 查询所有的华为手机或者价格小于1000的手机
SELECT * FROM `products` WHERE brand = '华为' or price < 1000;
# 查询1000到2000的手机(包含1000和2000)
SELECT * FROM `products` WHERE price BETWEEN 1000 and 2000;
# 查看多个结果中的一个
SELECT * FROM `products` WHERE brand in ('华为', '小米');

模糊查询

# 模糊查询使用LIKE关键字,%表示匹配任意个的任意字符; _表示匹配一个的任意字符
# 查询所有以v开头的title
SELECT * FROM `products` WHERE title LIKE 'v%';
# 查询带M的title
SELECT * FROM `products` WHERE title LIKE '%M%';
# 查询带M的title必须是第三个字符
SELECT * FROM `products` WHERE title LIKE '__M%';

排序

# ORDER BY有两个常用的值。ASC:升序排列;DESC:降序排列
SELECT * FROM `products` WHERE brand = '华为' or price < 1000 ORDER BY price ASC;

分页查询

# 用法有[LIMIT {[offset,] row_count | row_count OFFSET offset}]
SELECT * FROM `products` LIMIT 30 OFFSET 0;
SELECT * FROM `products` LIMIT 30 OFFSET 30;
SELECT * FROM `products` LIMIT 30 OFFSET 60;
# 另外一种写法:offset, row_count
SELECT * FROM `products` LIMIT 90, 30;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值