MySQL~SQL语句

一、SQL

1.什么是SQL?

Structured Query Language:结构化查询语言

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

2.SQL通用语法

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

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

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

    3 种注释 解释说明代码

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

    ***练习示例***

MySQL~SQL语句_第1张图片

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

  • 文档注释

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

show tables;

MySQL~SQL语句_第2张图片

 查询表结构

desc 表名;

MySQL~SQL语句_第3张图片

  • 1.1 SQL分类

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

    关键字:create、drop、alter 等

  • 2) DML (Data Manipulation Language)数据操作语言 用来对数据库中表的数据进行增删改

  • 关键字:insert、delete、update 等

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

    关键字:select、where 等

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

    关键字:GRANT、REVOKE 等

    1.1.1 DDL 操作数据库、表

    操作数据库:CRUD

  • ① C(Create):创建

    • 创建数据库:

      create database 数据库名称;
    • 创建数据库,判断不存在,再创建:

      create database if not exists 数据库名称;

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

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

      字符集 utf8

      ***练习示例***

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

      create database if not exists db4 character set utf8;

      ② R(Retrieve):查询

    • 查询所有数据库的名称:

      show databases;

      MySQL~SQL语句_第4张图片

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

      show create database 数据库名称;

      MySQL~SQL语句_第5张图片

  • ③ U(Update):修改

  1. 修改表名

    alter table 表名 rename to 新的表名;
  2. 修改表的字符集

    alter table 表名 character set 字符集名称;
  3. 添加一列

    alter table 表名 add 列名 数据类型;
  4. 修改列名称 类型

    alter table 表名 change 
    列名 新列别 新数据类型;
    alter table 表名 modify 
    列名 新数据类型;
  5. 删除列

    alter table 表名 drop 列名;
  • ④ (Delete):删除

drop table 表名;
​
drop table  if exists 表名 ;

客户端图形化工具:SQLYog

1.1.2 DML 增删改表中数据

① 添加数据:

  • 语法:

    insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n);

    注:

    1. 列名和值要一一对应

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

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

② 删除数据:

  • 语法:

    delete from 表名 [where 条件]

  • MySQL~SQL语句_第6张图片

    注:

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

    2. 如果要删除所有记录

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

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

③ 修改数据:

  • 语法:

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

1.1.3 DQL 查询表中的记录

select * from 表名;

1、常用语法

1、常用语法

select 字段列表

from 表名列表

where 条件列表

group by 分组字段

having 分组之后的条件

order by 排序

limit 分页限定

2、基础查询

  1. 多个字段的查询

    select 字段名1,字段名2... from 表名;

    注:

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

  2. 去除重复:

    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岁--

SELECT * FROM student WHERE age > 20;
SELECT * FROM student WHERE age >= 20;

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

SELECT * FROM student WHERE age = 20;

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

SELECT * FROM student WHERE age != 20;
SELECT * FROM student WHERE age <> 20;

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

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岁的信息--

SELECT * FROM student WHERE age = 22 OR age = 18 OR age = 25;
SELECT * FROM student WHERE age IN (22,18,25);

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

SELECT * FROM student WHERE english = NULL; 

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

SELECT * FROM student WHERE english IS NULL;

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

SELECT * FROM student WHERE english IS NOT NULL;

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

SELECT * FROM student WHERE NAME LIKE '%马%';

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

SELECT * FROM student WHERE NAME LIKE "_化%";

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

SELECT * FROM student WHERE NAME LIKE '___';

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

SELECT * FROM student WHERE NAME LIKE '%德%';

你可能感兴趣的:(mysql数据库,mysql,sql,oracle,数据库,SQL语句,mysql基础知识)