MySQL~SQL语句

一、SQL

1.什么是SQL?

Structured Query Language:结构化查询语言

每一种数据库操作的方式存在不一样的地方,称为"方言"。

2.SQL通用语法

  • SQL 语句可以单行或多行书写,以分号结尾

  • 可使用空格和缩进来增强语句的可读性

  • MySQL 数据库的 SQL 语句不区分大小写,关键字建议使用大写

    3 种注释 解释说明代码

  • 单行注释: -- 注释内容 或 # 注释内容

    ***练习示例***

  • 多行注释: /* 注释 */

  • 文档注释

查询某个数据库中所有的表名称

复制代码
show tables;

查询表结构

desc 表名;

1.1 SQL分类

    1. DDL (Data Definition Language)数据定义语言 用来定义数据库对象:数据库,表,列等

    关键字:create、drop、alter 等

    1. DML (Data Manipulation Language)数据操作语言 用来对数据库中表的数据进行增删改
  • 关键字:insert、delete、update 等

    1. DQL (Data Query Language)数据查询语言 用来查询数据库中表的记录(数据)

    关键字:select、where 等

    1. DCL (Data Control Language)数据控制语言(了解) 用来定义数据库的访问权限和安全级别,及创建用户

    关键字:GRANT、REVOKE 等

    1.1.1 DDL 操作数据库、表

    操作数据库:CRUD

① C(Create):创建

  • 创建数据库:

    python 复制代码
    create database 数据库名称;
创建数据库,判断不存在,再创建:

```python
create database if not exists 数据库名称;
```

创建数据库,并指定字符集

```python
create database 数据库名称 character set 字符集名;
```

字符集 utf8

`***练习示例***`

创建db4数据库,判断是否存在,并制定字符集为utf8

```python
create database if not exists db4 character set utf8;
```

#### ② R(Retrieve):查询
  • 查询所有数据库的名称:

    复制代码
    show databases;

    查询某个数据库的字符集:查询某个数据库的创建语句

    python 复制代码
    show create database 数据库名称;

③ U(Update):修改

  1. 修改表名

    python 复制代码
    alter table 表名 rename to 新的表名;
  2. 修改表的字符集

    python 复制代码
    alter table 表名 character set 字符集名称;
  3. 添加一列

    python 复制代码
    alter table 表名 add 列名 数据类型;
  4. 修改列名称 类型

    python 复制代码
    alter table 表名 change 
    列名 新列别 新数据类型;
    alter table 表名 modify 
    列名 新数据类型;
  5. 删除列

    python 复制代码
    alter table 表名 drop 列名;

④ (Delete):删除

python 复制代码
drop table 表名;
​
drop table  if exists 表名 ;

客户端图形化工具:SQLYog

1.1.2 DML 增删改表中数据

① 添加数据:

  • 语法:

    python 复制代码
    insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n);

    注:

    1. 列名和值要一一对应

    2. 如果表名后不定义列名,则默认给所有列添加值

      复制代码
      insert into 表名 values(值1,值2,...值n)
    3. 除了数字类型,其他类型需使用引号(单双都可)引起来

② 删除数据:

  • 语法:

    python 复制代码
    delete from 表名 [where 条件]
  • 注:

    1. 如果不加条件,则删除表中所有记录

    2. 如果要删除所有记录

    3. delete from 表名; -- 不推荐使用

    4. TRUNCATE TABLE 表名; -- 推荐使用,效率更高 先删除表,然后再创建一张一样的表

③ 修改数据:

  • 语法:
python 复制代码
 update 表名 set 列名1 = 值1, 列名2 = 值2,... [where 条件];
复制代码
注:如果不加任何条件,则会将表中所有记录全部修改。

1.1.3 DQL 查询表中的记录

python 复制代码
select * from 表名;

1、常用语法

1、常用语法

select 字段列表

from 表名列表

where 条件列表

group by 分组字段

having 分组之后的条件

order by 排序

limit 分页限定

2、基础查询

  1. 多个字段的查询

    python 复制代码
    select 字段名1,字段名2... from 表名;

    注:

    如果查询所有字段,则可以使用*来替代字段列表。

  2. 去除重复:

    python 复制代码
    distinct
  3. 计算列

    • 一般可以使用四则运算计算一些列的值。(一般只会进行数值型的计算)

    • ifnull(表达式1,表达式2):

      null参与的运算,计算结果都为null

      • 表达式1:哪个字段需要判断是否为null

      • 如果该字段为null后的替换值。

  4. 起别名:

    • as:as也可以省略

3、条件查询

3.1 条件精准

where子句后跟条件

关系运算符 :<、>、 <= 、>= 、= 、!=、<>

逻辑运算符:and && 与 or || 或 not

BETWEEN...AND

IN( 集合)

3.2 条件模糊

LIKE:模糊查询

占位符:

_:单个任意字符

%:多个任意字符

IS NULL

and 或 &&

or 或 ||

not 或 !

4、练习示例

-- 查询年龄大于20岁--

python 复制代码
SELECT * FROM student WHERE age > 20;
SELECT * FROM student WHERE age >= 20;

-- 查询年龄等于20岁--

python 复制代码
SELECT * FROM student WHERE age = 20;

-- 查询年龄不等于20岁--

python 复制代码
SELECT * FROM student WHERE age != 20;
SELECT * FROM student WHERE age <> 20;

-- 查询年龄大于等于20 小于等于30--

python 复制代码
SELECT * FROM student WHERE age >= 20 && age <=30;
SELECT * FROM student WHERE age >= 20 AND age <=30;
SELECT * FROM student WHERE age BETWEEN 20 AND 30;

-- 查询年龄22岁、18岁、25岁的信息--

python 复制代码
SELECT * FROM student WHERE age = 22 OR age = 18 OR age = 25;
SELECT * FROM student WHERE age IN (22,18,25);

-- 查询英语成绩为null--

python 复制代码
SELECT * FROM student WHERE english = NULL; 

-- null值不能使用 (!=) 判断--

python 复制代码
SELECT * FROM student WHERE english IS NULL;

-- 查询英语成绩不为null--

python 复制代码
SELECT * FROM student WHERE english IS NOT NULL;

-- 查询姓马的有哪些? like

python 复制代码
SELECT * FROM student WHERE NAME LIKE '%马%';

-- 查询姓名第二个字是化的人--

python 复制代码
SELECT * FROM student WHERE NAME LIKE "_化%";

-- 查询姓名是3个字的人--

python 复制代码
SELECT * FROM student WHERE NAME LIKE '___';

-- 查询姓名中包含德的人--

python 复制代码
SELECT * FROM student WHERE NAME LIKE '%德%';
相关推荐
云和数据.ChenGuang36 分钟前
Django 应用安装脚本 – 如何将应用添加到 INSTALLED_APPS 设置中 原创
数据库·django·sqlite
woshilys1 小时前
sql server 查询对象的修改时间
运维·数据库·sqlserver
Hacker_LaoYi1 小时前
SQL注入的那些面试题总结
数据库·sql
建投数据2 小时前
建投数据与腾讯云数据库TDSQL完成产品兼容性互认证
数据库·腾讯云
Hacker_LaoYi3 小时前
【渗透技术总结】SQL手工注入总结
数据库·sql
岁月变迁呀3 小时前
Redis梳理
数据库·redis·缓存
独行soc3 小时前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍06-基于子查询的SQL注入(Subquery-Based SQL Injection)
数据库·sql·安全·web安全·漏洞挖掘·hw
你的微笑,乱了夏天4 小时前
linux centos 7 安装 mongodb7
数据库·mongodb
工业甲酰苯胺4 小时前
分布式系统架构:服务容错
数据库·架构
独行soc5 小时前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍08-基于时间延迟的SQL注入(Time-Based SQL Injection)
数据库·sql·安全·渗透测试·漏洞挖掘