MySQL基本语法

MySQL基本语法


仅供参考

MySQL基本操作:

查询数据库:

SHOW DATABASES; (show databases;)

使用指定的数据库:

USE 数据库名称; (use 数据库名称;)

查看数据库中所有的表:

SHOW TABLES; (show tables;)

创建指定名称的数据库:

CREATE DATABASE 数据库名称; (create database 数据库名称;)

删除指定名称的数据库:

DROP DATABASE 数据库名称; (drop database 数据库名称;)

创建表:

CREATE TABLE 表名(字段名1,数据类型[约束],字段名2,数据类型[约束]…); (create table 表名();

查看数据表:

SHOW CREATE TABLE 表名; (show create table 表名;)

DESCRIBE 表名; (describe 表名;)

DESC 表名; (desc 表名;)

删除表:

DROP TABLE 表名; (drop table 表名;)


数据操作(DML):

插入数据:

INSERT INTO 表名(字段1,字段2,字段3…) VALUES(值1,值2,值3…);

删除数据:

DELETE FROM 表名 [WHERE 条件]; (delete from 表名[where 条件];

更新数据:

UPDATE 表名 SET 列名1=值1,列名2=值2… WHERE 条件;


表的约束:

非空约束:

NOT NULL; (not null;) 不允许某列的内容为空

设置默认值:

DEFAULT; (default;)

唯一约束:

UNIQUE; (unique;) 在该表中,该列的内容必须唯一

主键约束:

PRIMARY KEY; (primary key;) 非空且唯一

主键自增长:

AUTO_INCREMENT; (auto_increment;) 从1开始自增,增长为1,MySQL特有(使用前提是主键),一张表只能有一列是主键自增长,必须是数字类型。

外键约束:

FOREIGN KEY; (foreign key;)


单表查询(DQL):

比较符:

< > = <= >= != <>

逻辑运算符:

AND(&&) OR(||) NOT(!)

运算符比较级:

括号 > 比较符 > NOT > AND > OR

算术符:

对于NUMBER (数值)类型可以+ - * / 运算符操作 对于DATE(时间)类型可以+ - 运算操作

列别名:

SELECT 列 别名 FROM 表名; 没特殊情况都使用英文名,有空格特殊字符、大小写敏感、空格等使用””(双引号)标记

LIKE运算符(模糊查询,非搜索查询):

% 通配符:可表示零或多个字符。

_ 通配符:可代表一个字符。

SQL语句执行顺序:

首先执行FROM语句,其次执行WHERE语句,接着执行SELECT语句,最后执行ORDER BY语句


简单查询:

SELECT * FROM 表名; SELECT 列1,列2… FROM 表名; 一个临时二维表

SELECT DISTINCT 列1… FROM 表名; 过滤重复(多列时,每列都一样才过滤)

SELECT 列名… FROM 表名 WHERE 列名 BETWEEN 数值 AND 数值; 取某一值域范围(闭区间)

SELECT 列名… FROM 表名 WHERE 列名 NOT BETWEEN 数值 AND 数值; 不取某一值域范围

SELECT 列名… FROM 表名 WHERE 列名 IN(值1,值2…); 查找列名中符合集合内值的结果

SELECT 列名… FROM 表名 WHERE 列名 NOT IN(值1,值2…);

SELECT * FROM 表名 WHERE 列名 IS NULL; 查询列为NULL的行数据


结果排序:

SELECT FROM 表名 WHERE 条件 ORDER BY 列名1[ASC/DESC]; 单列排序

SELECT FROM 表名 WHERE 条件 ORDER BY 列名1[ASC/DESC],列名2[ASC/DESC]…; 多列排序,先按列名1排,列名1的值相等时再按列名2排


聚合函数:作用于一组数据,并对一组数据返回一条记录

当列中的值为NULL时,不参与运算

SELECT SUM(IFNULL(列名,数值)) FROM 表名; 用IFNULL把列中为空的值改为数值计算

COUNT:统计结果记录数

SELECT COUNT(列名) FROM 表名; 列名为 * 或者是 常量 时,自动统计主键结果记录数

MAX:统计计算最大值

SELECT MAX(列名) FROM 表名;

MIN:统计计算最小值

SELECT MIN(列名) FROM 表名;

SUM:统计计算求和

SELECT SUM(列名) FROM 表名;

AVG:统计计算平均值

SELECT AVG(列名) FROM 表名;

分页查询:

**假分页:**把数据存储到内存中,需要时直接读取

  • 优点:读取速度快

  • 缺点:占内存,容易发生内存溢出

**真分页:**需要数据时才去数据库中读取(推荐

  • 优点:占内存小

  • 缺点:读取速度慢

分页已知量:

当前页:currentPage

每页显示记录数:pageSize

语法:

SELECT * FROM表名 LIMIT (currentPage-1)*pageSize,pageSize;

想要得到一页数据,当前页与每页数据条数是必须要知道的。
获取出指定页的信息前,首要要知道总数据,因为有了总数据才能得到总页数。
总页数用于判断是否还有下一页,最后一页的计算方式:总条数 % pageSize == 0 ?总条数 / pageSize :总条数 / pageSize + 1;
总条数可以使用count()函数获取,参数可以是具体的列或者*、1都行

多表查询:

笛卡尔积:

表之间没有连接条件返回的结果。多表查询就会产生笛卡尔积。

结论:连接n张表,至少需要n-1个连接条件。

外键约束:

A表中的外键列的值必须参照于B表中的主键列的值,外键列允许为NULL。

注意:在MySQL中,InnDB支持事务和外键,因此要修改表的存储引擎为InnDB

主表和从表关系:主表可以单独存在(被参考的表),从表中的数据参照于主表中的数据。

删除表时:先删除从表,才能删除主表

其中主表的一条数据在从表中能有多条数据与之对应(一对多的关系)

开发中为了提高性能,往往不要外键,但是依然使用InnDB存储引擎

内连接:

隐式:

SELECT 表.列 , 表.列… FROM 表1,表2… WHERE 条件; 条件是多表之间的关系

显式:

SELECT 表.列 , 表.列… FROM 表1 JOIN 表2 ON 条件; (推荐使用) 条件是多表之间的关系

自连接:

把一张表当作两张表用:

SELECT 别名1.列名 , 别名2.列名 FROM 表名 别名1, 表名 别名2 WHERE 条件;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值