MySql基本语法

MySql的特点

1.操作便捷

2.小巧,功能齐全

3.免费、开源的数据库

4.可运行与Windows或Linux系统,跨平台

数据库

简称DB

​ 长期存放在计算机内,有组织、可共享的大量数据的集合,是一个数据"仓库"

作用:

存放、管理数据

分类

关系型数据库、NoSQL数据库

常见的数据库

​ 关系型数据库:MySQL ORACLE PostgreSQL

​ NoSQL数据库:redis mongoDB

MySQL数据库的特点

开源免费,小巧但功能齐全

可在Windows和Linux系统上运行

操作方便,适用于中小型甚至大型网址应用

数据库的还原

sql语句的分类

数据定义语言DDL – create drop alter

数据操控语言 DML – insert update delete

数据查询语言DQL – select

数据控制功能DCL – 对权限,配置的更改 – IDENTIFIED grant privileges

SHOW DATABASES;查询所有的库

字符串类型

[] 表示可以可无

char[(M)] 固定长字符串,检索快但费空间

varchar[(M)] 可变字符串

先写字段名,再写字段类型,然后写属性

ENGINE 存储引擎

提供规则

InnoDB MySQL8只能用

mys

主键不仅是约束,还是索引

递增auto_increment 按照最大的值递增

MySQL创建数据库

create database 数据库名

MySQL删除数据库

drop database 数据库名

选择数据库

use 数据库名

创建数据表

create table 表名(

​ 字段名 字段类型

)

删除数据表

drop table 表名

插入数据

insert into 表名(field1,fieldn) values(value1,valuen)

查询数据

select 字段名1,字段名n from 表名 【where 条件】

where字句

= 等号,检测两个值是否相等

<> != 不等

‘>’ 大于

‘<’ 小于

‘>=’ 大于等于

‘<=’ 小于等于

between 在某个范围之间

and 并且

or 或

insert增加数据

insert into 表名 [(字段1,字段n)] values/value(值1,值n)

insert into select

​ insert into 表名2(字段名1,字段名n) select 字段名1,字段名n from 表名1

​ 从表1复制数据,然后把数据插入到一个已存在的表中

update修改数据

update 表名 set 字段名1 = 值1[,字段名n = 值n] [where 条件]

delete删除数据

delete from 表名 [where 条件]

truncate删除数据

truncate [table] 表名

​ 速度快,效率高

DQL数据查询语言

单表查询

​ 针对数据库中的一张数据表进行查询,可以通过各种查询条件和方式去做相关的优化

查询语句语法规则

​ select [distinct] {*|表1.**|[表1.字段1[as 字段别名1]],[表n.字段n[as 字段别名n]]} from 表1 [as 表别名]

[left|right|inner join 表2 on 表之间的关系]

[where]

[group by]

[having]

[order by]

[limit {[位置偏移量,] 行数}]

{}包含的内容必须存在

distinct 去重

as 起别名

group by 按组分类显示查询出的数据

having group by分组时依赖的分组条件

order by 将查询出来的结果按一定顺序排序

limit 限制显示查询结果的条数

指定字段列

select *|字段名1,字段名n from 表名

表别名和字段别名

SELECT 表别名.字段名1 AS 字段别名1, 表别名.字段名2 AS 字段别名2 FROM 表名 AS 表别名

distinct 去重

SELECT DISTINCT 字段名1, 字段名2… FROM 表名

where条件字句

select * from 表名[where 条件]

like关键字 模糊查询

SELECT * FROM 表名 WHERE 字段 LIKE 条件

• 在WHERE子句中,使用LIKE关键字进行模糊查询;

• 与“%”一起使用,表示匹配0或任意多个字符;

• 与“_”一起使用,表示匹配单个字符。

in关键字

SELECT * FROM 表名 WHERE 字段 IN (值1,值2…);

在某个集合的范围内查找

in 与 = 的异同

相同:都在where中使用作为筛选条件之一,都是等于的含义

不同:in可以规定多个值,= 规定一个值

NULL值查询

SELECT * FROM 表名 WHERE 字段 IS NULL | IS NOT NULL

• NULL代表“无值”;

• 区别于零值0和空符串;

• 只能出现在定义允许为NULL的字段;

• 须使用 IS NULL 或 IS NOT NULL 比较操作符去比较。

常用聚合函数

avg(字段名) 返回指定列的平均值

count(常量 | * |字段名) 返回指定列中非null值的个数

min(字段名) 返回指定列的最小值

max(字段名) 返回指定列的最大值

sum(字段名) 返回指定列的所有值之和

group by 分组

1、对所有的数据进行分组统计;

2、分组的依据字段可以有多个,并 依次分组。

select sname from 表名 group by sname//根据sname字段名进行分组

having

与GROUP BY结合使用,进行分组 后的数据筛选。

order by 排序

select * from 表名 order by 字段名 [asc|desc]

• ORDER BY 表示对SELECT语句查询得到的结果,按字段名进行排序;

• DESC表示排序的顺序为降序,ASC表示排序的顺序为升序;

不写默认为升序排序

limit关键字、

select * from 表名 limit [n,]m

• LIMIT关键字是MySQL特有关键字;

• LIMIT限制SELECT返回结果的行数;

• n 表示第一条记录的偏移量,m 表示显示记录的数量;

多表联查

内联查询方式1

​ select *from 表1,表2 … where 表1.xxx = 表2.xxx = 表n.xxx

内联查询方式2

select * from 表1 inner join 表2 on 表1.xxx = 表2.xxx = 表n.xxx

外联查询

select * from 表1 left join 表2 on 表1.xxx = 表2.xxx

表1为主

select * from 表1 right join 表2 on 表1.xxx = 表2.xxx

表2为主

union 连接查询 找出两张表的并集

语法:

select A.field1 as f1, A.field2 as f2 from A union

(select B.field3 as f1, field4 as f2 from B) order by 字段 desc/asc union是求两个查询的并集。

union合并的是结果集,不区分来自于哪一张表,所以可以合并多张表查询出来的数据。

注意:

1列名不一致时,会以第一张表的表头为准,并对其栏目。

2会将重复的行过滤掉。

3如果查询的表的列数量不相等时,会报错。

4在每个子句中的排序是没有意义的,mysql在进行合并的时候会忽略掉。

5如果子句中的排序和limit进行结合是有意义的。

6可以对合并后的整表进行排序

一切查询的结果都是一个虚拟表

where不能对分完组的数据进行过滤,用having

having必须依附在group by出现

没有group by having不能出现

索引的类型

BTREE

最多三层

B+TREE

索引的种类

主键索引

唯一索引

常规索引

全文索引

幻读

添加的时候,

@局部变量

@@全局变量

int 只进不出

out 只出不进

inout 又进又出

sql注入

select * from login where lname=lname or 1=1;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值