MySQL入门到精通

2024-09-09 05:12
文章标签 mysql 入门 精通 database

本文主要是介绍MySQL入门到精通,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、创建数据库

CREATE DATABASE 数据库名称;

如果数据库存在,则会提示报错。

二、选择数据库

USE 数据库名称;

三、创建数据表

CREATE TABLE 数据表名称;

四、MySQL数据类型

MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串类型

4.1 数值类型

数值类型
类型大小用途
INT4Bytes整数值
FLOAT4Bytes单精度
DOUBLE8Bytes

双精度

4.2 字符串类型

字符串类型
类型用途
CHAR定长字符串
VARCHAR变长字符串

4.3 日期和时间类型

五、MySQL插入数据

INSERT INTO table_name (column1,column2,column3)

VALUES (value1,value2,value3)

六、查询数据库

SHOW DATABASES;

七、查询数据表

SELECT * FROM users;

八、MySQL WHERE子句

语法:

SELECT column1,column2

FROM table_name

WHERE condition;

参数说明:

column1,column2是显示列的名称

table_name是你选择查询数据的表的名称

WHERE condition是用于指定过滤条件的子句

WHERE简单实例:

1、等于条件

SELECT * FROM users WHERE username = 'test';

2、不等于条件

SELECT * FROM users WHERE username != 'test';

3、大于条件

SELECT * FROM products WHERE price > 50.00;

4、小于条件

SELECT * FROM orders WHERE order_date < '2023-01-01';

5、大于等于条件

SELECT * FROM employees WHERE salary >= 50000;

6、小于等于条件

SELECT * FROM students WHERE age <= 21;

7、组合条件

SELECT * FROM products WHERE category = 'Electronics' AND price > 100.00;

SELECT * FROM orders WHERE order_date >= '2023-01-01' OR total_amount > 1000.00;

8、模糊匹配条件

SELECT * FROM customers WHERE first_name LIKE 'J%';

9、IN条件

SELECT * FROM countries WHERE country_code IN ('US','CA','MX');

10、NOT条件

SELECT * FROM products WHERE NOT category = 'Clothing';

11、BETWEEN条件

SELECT * FROM orders WHERE order_date BETWEEN '2023-01-01' AND '2023-12-32';

12、IS NULL条件

SELECT * FROM orders WHERE order_date BETWEEN '2023-01-01' AND '2023-12-31';

13、IS NOT NULL条件

SELECT * FROM customers WHERE email IS NOT NULL;

九、MySQL UPDATE更新

UPDATE table_name

SET column1 = value1,column2 = value2

WHERE condition

参数说明:

table_name是更细数据的表的名称

column1,column2是更新的列的名称

value1,value2是新的值,用于替换旧的值

WHERE condition是一个可选的子句

实例

1、更新单个列的值:

UPDATE employees

SET salary = 60000

WHERE employee_id = 101

2、更新多个列的值:

UPDATE orders 

STE status = 'Shipped', ship_date = '2023-03-01'

WHERE order_id = 1001;

3、使用表达式更新值

UPDATE products

SET price = price * 1.1

WHERE category = 'Electronics'

4、更新使用子查询的值

UPDATE customers 

SET total_purchases = (

        SELECT SUM(amount)

        FROM orders

        WHERE orders.customer_id = customers.customer_id

)

WHERE customer_type = 'Premium';

十、MySQL DELETE语句

语法:

DELETE FROM table_name

WHERE condition;

参数说明:

table_name是删除数据的表的名称

WHERE condition是一个可选的子句。

实例

1、删除复合条件的行

DELETE FROM students

WHERE graduation_year = 2021;

2、删除所有行

DELETE FROM orders;

3、使用子查询删除复合条件的行

DELETE FROM customers

WHERE customer_id IN(

              SELECT customer_id

              FROM orders 

              WHERE order_date < '2023-01-01'

);

十一、MySQL LIKE子句

%通配符表示零个或多个字符;_通配符表示一个字符;不区分大小写的匹配

实例:

SELECT * FROM customers WHERE last_name LIKE 'S%';

SELECT * FROM products WHERE product_name LIKE '_a%';

十二、MySQL ORDER BY(排序)语句

语法:

SELECT column1,column2

FROM table_name

ORDER BY column1 [ASC | DESC], column2 [ASC | DESC]

1.单列排序:

SELECT * FROM products

ORDER BY products_name ASC;

2.多列排序:

SELECT * FROM employees

ORDER BY department_id ASC,hire_date DESC;

3.使用数字表列列的位置

ORDER BY 3 DESC, 1 ASC;

十三、MySQL GROUP BY语句

GROUP BY语句根据一个或多个列对结果集进行分组

SELECT customer_id, SUM(order_amount) AS total_amount

FROM orders 

GROUP BY customer_id;

十四、MySQL UNION操作符

描述

MySQL UNION操作符用于连接两个以上的SELECT语句的结果组合到一个结果集合,并去除重复的行。

语法

SELECT column1,column2

FROM table1

WHERE condition1

UNION

SELECT column1,column2

FROM table2

WHERE condition2

ORDER BY column1,column2

实例

1、基本的UNION操作

SELECT city FROM customers

UNION

SELECT city FROM suppliers

ORDER BY city;

2、使用过滤条件的UNION

SELECT product_name FROM products WHERE category = 'Electronics'

UNION

SELECT product_name FROM products WHERE category = 'Clothing'

ORDER BY product_name

3、UNION操作中的列数和数据类型必须相同

SELECT first_name,last_name FROM employees

UNION

SELECT department_name,NULL FROM departments

ORDER BY first_name;

4、使用UNION ALL不去除重复行

SELECT city FROM customers

UNION ALL

SELECT city FROM suppliers

ORDER BY city;

十五、MySQL连接的使用

INNER JOIN(内连接):获取两个表中字段匹配关系的记录

LEFT JOIN(左连接):获取左表所有记录

RIGHT JOIN(有连接):获取右表所有记录

INNER JOIN

1、简单的INNER JOIN:

SELECT orders.order_id,customers.customer_name

FROM orders

INNER JOIN customers ON orders.customer_id = customers.customer_id;

2、多表INNER JOIN:

SELECT orders.order_id,customers.customer_name,products.product_name

FROM orders

INNER JOIN customers ON orders.customer_id = customers.customer_id

INNER JOIN order_items ON orders.order_id = order_items.order_id

INNER JOIN products ON order_items.product_id = products.product_id;

3、使用WHERE子句进行过滤

SELECT orders.order_id,customers.customer_name

FROM orders

INNER JOIN customers ON orders.customer_id = customers.customer_id

WHERE orders.order_date >= '2023-01-01';

LEFT JOIN

1、简单的LEFT JOIN:

SELECT orders.order_id,customers.customer_name

FROM orders

LEFT JOIN customers ON orders.customer_id = customers.customer_id;

2、多表LEFT JOIN:

SELECT orders.order_id,customers.customer_name,products.product_name

FROM orders

LEFT JOIN customers ON orders.customer_id = customers.customer_id

LEFT JOIN order_items ON orders.order_id = order_items.order_id

LEFT JOIN products ON order_items.product_id = products.product_id;

3、使用WHERE子句进行过滤

SELECT orders.order_id,customers.customer_name

FROM orders

LEFT JOIN customers ON orders.customer_id = customers.customer_id

WHERE orders.order_date >= '2023-01-01';

RIGHT JOIN和LEFT JOIN使用方法是一样的。

十六、MySQL ALTER命令

描述:当我们需要修改数据表名或者数据表字段时,就需要使用到MySQL ALTER命令

1、添加列

ALTER TABLE table_name

ADD COLUMN new_column_name datatype;

实例

ALTER TABLE employees

ADD COLUMN birth_date DATE;

2、修改列的数据类型

ALTER TABLE TABLE_NAME

MODIFY COLUMN column_name new_datatype

实例

ALTER TABLE employees

MODIFY COLUM salary DECIMAL(10,2);

3、修改列名

ALTER TABLE table_name

CHANGE COLUMN old_column_name new_column_name datatype;

实例

ALTER TABLE employees

CHANGE COLUMN old_column_name new_column_name VARCHAR(255);

4、删除列

ALTER TABLE table_name

DROP COLUMN column_name;

实例

ALTER TABLE employees

DROP COLUMN birth_date;

5、添加PRIMARY KEY

ALTER TABLE table_name

ADD PRIMARY KEY (column_name);

实例

ALTER TABLE employees

ADD PRIMARY KEY (employee_id)

6、添加FOREIGN KEY

ALTER TABLE child_table

ADD CONSTRAINT fk_name

FOREIGN KEY (column_name)

REFERENCES parent_table (column_name)

实例

ALTER TABLE orders

ADD CONSTRAINT fk_customer

FOREIGN KEY (customer_id)

REFERENCES customers (customer_id)

7、修改表名

ALTER TABLE old_table_name

RENAME TO new_table_name;

实例ALTER TABLE employees

RENAME TO staff;

十七、MySQL处理重复数据

SELECT DISTINCT last_name,first_name

FROM person_tb1;

十八、MySQL删除数据库

drop命令删除数据库

DROP DATABE <datatbase_name>

十九、MySQL删除数据表

DROP TABLE table_name;

这篇关于MySQL入门到精通的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1150258

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

SQL中的外键约束

外键约束用于表示两张表中的指标连接关系。外键约束的作用主要有以下三点: 1.确保子表中的某个字段(外键)只能引用父表中的有效记录2.主表中的列被删除时,子表中的关联列也会被删除3.主表中的列更新时,子表中的关联元素也会被更新 子表中的元素指向主表 以下是一个外键约束的实例展示

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

如何去写一手好SQL

MySQL性能 最大数据量 抛开数据量和并发数,谈性能都是耍流氓。MySQL没有限制单表最大记录数,它取决于操作系统对文件大小的限制。 《阿里巴巴Java开发手册》提出单表行数超过500万行或者单表容量超过2GB,才推荐分库分表。性能由综合因素决定,抛开业务复杂度,影响程度依次是硬件配置、MySQL配置、数据表设计、索引优化。500万这个值仅供参考,并非铁律。 博主曾经操作过超过4亿行数据

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

MySQL数据库宕机,启动不起来,教你一招搞定!

作者介绍:老苏,10余年DBA工作运维经验,擅长Oracle、MySQL、PG、Mongodb数据库运维(如安装迁移,性能优化、故障应急处理等)公众号:老苏畅谈运维欢迎关注本人公众号,更多精彩与您分享。 MySQL数据库宕机,数据页损坏问题,启动不起来,该如何排查和解决,本文将为你说明具体的排查过程。 查看MySQL error日志 查看 MySQL error日志,排查哪个表(表空间

MySQL高性能优化规范

前言:      笔者最近上班途中突然想丰富下自己的数据库优化技能。于是在查阅了多篇文章后,总结出了这篇! 数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命名要能做到见名识意,并且最后不要超过32个字符 临时库表必须以tmp_为前缀并以日期为后缀,备份

数论入门整理(updating)

一、gcd lcm 基础中的基础,一般用来处理计算第一步什么的,分数化简之类。 LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; } <pre name="code" class="cpp">LL lcm(LL a, LL b){LL c = gcd(a, b);return a / c * b;} 例题:

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联