MySQL-基础知识

SQL

        全称 Structured Query Language,结构化查询语言。操作关系型数据库的编程语言,定义了
一套操作关系型数据库统一标准 。

通用语法

书写规则:

  • SQL语句可以单行或多行书写,以分号结尾。
  • SQL语句可以使用空格 进行缩进增强语句的可读性。
  • MySQL数据库的SQL语句不区分大小写,个别关键字建议使用大写。

注释

分类

分类说明
DDL数据定义语言,用来定义数据库对象(数据库,表,字段)
DML数据操作语言,用来对数据库表中的数据进行增删改
DQL数据查询语言,用来查询数据库中表的记录
DCL数据控制语言,用来创建数据库用户、控制数据库的访问权限

DDL

数据库操作

操作说明

查询所有数据库                   

查询当前数据库

show databases;

select database();

创建库create database ( if not exists) 数据库名 ( default charset 字符串集) ( collate 排序规则) ;
删除库drop database [ if exsts] 
使用库use

表操作

  • 查询表
操作说明
show tables;查询当前数据库所有表
desc 表名;查询表结构
show create table 表名;查询指定表的建表语句
  • 创建表
CREATE TABLE 表名(
    字段1 字段1类型 [COMMENT 字段1注释 ],
    字段2 字段2类型 [COMMENT 字段2注释 ],
    字段3 字段3类型 [COMMENT 字段3注释 ],
    ......
    字段n 字段n类型 [COMMENT 字段n注释 ]
) [ COMMENT 表注释 ] ;

示例:

        创建一个表储存下面的信息

学号姓名成绩
202201张三90
202202李四60
202203王五

75

将此表格中的数据录入数据库(注意你要提前建立好库了)

mysql> create table start(
    -> id int comment '学号',
    -> name varchar(50) comment '姓名',
    -> score int comment '成绩'
    -> )comment '示例表';
Query OK, 0 rows affected (0.04 sec)

mysql> show tables
    -> ;       /*显示表的创建情况*/
+-----------------+
| Tables_in_begin |
+-----------------+
| start           |
+-----------------+
1 row in set (0.00 sec)

mysql> desc start;/*查询表结果*/
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int         | YES  |     | NULL    |       |
| name  | varchar(50) | YES  |     | NULL    |       |
| score | int         | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.01 sec)

其中,包括了输入表,显示当前表的创建情况,查询表结构

  • 表的修改

        1.修改表名

ALTER TABLE 表名 RENAME TO 新表名; 

        2.添加字段

ALTER TABLE 表名 ADD 字段名 类型 (长度) ( COMMENT 注释 ); 

示例:

        在上面的示例表中添加一行新的字段,性别,类型为varchar型

mysql> alter table start add gender varchar(50);
Query OK, 0 rows affected (0.04 sec)
Records: 0  Duplicates: 0  Warnings: 0

        3.修改数据类型

ALTER TABLE 表名 MODIFY 字段名 新数据类型 (长度); 

        4.修改字段名何字段类型

ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型 (长度) [ COMMENT 注释 ]; 

示例:

        将示例表中的name修改为nicheng,类型变为varchar(40)

mysql> desc start;  /*更改前*/
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id     | int         | YES  |     | NULL    |       |
| name   | varchar(50) | YES  |     | NULL    |       |
| score  | int         | YES  |     | NULL    |       |
| gender | varchar(50) | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

mysql> alter table start change name nicheng varchar(40);/*进行更改*/
Query OK, 0 rows affected (0.04 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc start;/*更改后*/
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| id      | int         | YES  |     | NULL    |       |
| nicheng | varchar(40) | YES  |     | NULL    |       |
| score   | int         | YES  |     | NULL    |       |
| gender  | varchar(50) | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

        5.删除字段

ALTER TABLE 表名 DROP 字段名; 

示例:

        删除gender字段

mysql> desc start;/*删除前*/
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| id      | int         | YES  |     | NULL    |       |
| nicheng | varchar(40) | YES  |     | NULL    |       |
| score   | int         | YES  |     | NULL    |       |
| gender  | varchar(50) | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

mysql> alter table start drop gender;/*进行删除*/
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc start;/*删除后*/
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| id      | int         | YES  |     | NULL    |       |
| nicheng | varchar(40) | YES  |     | NULL    |       |
| score   | int         | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

        6.删除表

删除表DROP TABLE [ IF EXISTS ] 表名; 

删除指定表, 并重新创建表

(得到一张空表)

TRUNCATE TABLE 表名; 

DML

        DML是对数据的增删改

添加数据

  • 给指定字段添加数据
INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...); 
  • 给全部字段添加数据
INSERT INTO 表名 VALUES (值1, 值2, ...); 
  • 批量添加数据
INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...), (值1, 值2, ...), (值
1, 值2, ...) ;

INSERT INTO 表名 VALUES (值1, 值2, ...), (值1, 值2, ...), (值1, 值2, ...) ; 

多行数据用逗号分隔

修改数据

UPDATE 表名 SET 字段名1 = 值1 , 字段名2 = 值2 , .... [ WHERE 条件 ] ; 

有where则修改部分,没有where则修改对应的列。

删除数据

DELETE FROM 表名 [ WHERE 条件 ] ; 

有where则删除符合条件的一行,没有where则删除所有数据

DQL

基础查询

  • 查询列字段
SELECT 字段1, 字段2, 字段3 ... FROM 表名 ; 
SELECT * FROM 表名 ; /*查询全部*/

 

基础操作说明
as设置别名

distinct

unique

去重
  • 设置别名
SELECT 字段1 [ AS 别名1 ] , 字段2 [ AS 别名2 ] ... FROM 表名; 

        as可以省略

  • 去除重复记录

条件查询

SELECT 字段列表 FROM 表名 WHERE 条件列表 ; 
运算符功能
>大于
>=大于等于
小于
<=小于等于
等于
<> 或 !=不等于
BETWEEN ... AND ...在某个范围之内(含最小、最大值)
IN(...)在in之后的列表中的值,多选一
LIKE "字符串"模糊匹配(_匹配单个字符, %匹配任意个字符)
IS NULL NULL
AND 或 && 并且 (多个条件同时成立)
OR 或 ||或者 (多个条件任意一个成立)
NOT 或 !非 , 不是
ORDER BY (DESC)升序(降序),默认是升序

 例如:查询Book表中价格在30-50之间的书的所有信息

select * from Book
where price <=50 and price<=30;
  • 模糊匹配 

 

用法说明
“%”匹配零个或多个字符
“_”匹配任意单个字符
“\”转义字符,用于去掉一些特殊字符的特定含义,使其被作为普通字符看待, 如用“\%”去匹配字符%,用\_ 去匹配字符_

 例如:查询某表名字为张某某的所有同学姓名

Select name From Student
Where name Like '张__';

连接查询

聚合查询

        聚合函数:将一列数据作为一个整体,进行纵向计算的函数

函数功能
count统计数量
max最大值
min最小值
avg平均值
sum求和
distinct去重
limit强制 SELECT 语句返回指定的记录数

聚合函数的使用

SELECT 聚合函数(字段列表) FROM 表名 ; 

例如:

查询BorrowBook表中正在借书的总人数

select count(people) from BorrowBook;

 

  • LIMIT的使用
SELECT * FROM table LIMIT 2;

         查找前两行(limit 后面+一个参数:它表示从0开始,查找的最大的行数目)

SELECT * FROM table LIMIT 5,5

        查找 6-10行(+两个参数:第一个参数指定开始查找的位置,第二个参数指定查找的最大行数目。)

SELECT * FROM table LIMIT 10,-1

        查找11-最后一行 (从某一个行到表结束,可以指定第二个参数为 -1。)

分组查询

SELECT 字段列表 FROM 表名 [ WHERE 条件 ] GROUP BY 分组字段名 [ HAVING 分组
后过滤条件 ];

示例:

        根据性别进行分组,统计男性员工 和女性员工的平均年龄(假设他们的数据已存在),我们来看语法

select gender ,avg(age) from [表名] group by gender;
  • where与having区别

        1.执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。
        2.判断条件不同:where不能对聚合函数进行判断,而having可以。

排序查询

SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1 , 字段2 排序方式2 ; 

排序方式:ASC : 升序(默认值)、DESC: 降序

分页查询

SELECT 字段列表 FROM 表名 LIMIT 起始索引, 查询记录数 ; 

注意:

  • 起始索引从0开始,起始索引 = (查询页码 - 1)* 每页显示记录数。
  • 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT。
  • 如果查询的是第一页数据,起始索引可以省略,直接简写为 limit 10。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

littleFive.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值