MySQL基础语法语句1

一、SQL语言分类:

1、DDL:数据库定义语言;用于数据库、表、视图、等的建立、删除。

                DDL包括create、alter、drop等。

2、DML:数据库操纵语言:用于增、删、改、查。

                DML包括insert、delete、update。

3、DCL:数据库控制语言;数据库对象的权限管理和事务管理。

                DCL包括commit、rollback、grant等。

4、DQL:数据查询语言;查询是数据库的基本功能。

                DQL使用select查询数据库表中记录。

二、DDL:

1、DDL之数据库:

DDL对数据库的操作主要有两种

1)、创建数据库:

CREATE DATABASE 数据库名

2)、删除数据库:

DROP DATABASE 数据库名

2、DDL之数据表:

在DDL中,对数据表的操作主要有3种:创建、修改和删除。
创建数据表,需要定义的信息主要包括:表名、字段名、字段类型

1)、MySQL的建表语法

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] table_name [(create_definition,…)] [table_options] 
[select_statement]
TEMPORARY:表示创建临时表,在当前会话结束后将自动消失
IF NOT EXISTS:在建表前,先判断表是否存在,只有该表不存在时才创建
create_definition:建表语句的关键部分,用于定义表中各列的属性
table_options:表的配置选项,例如:表的默认存储引擎、字符集
select_statement:通过select语句建表

2)、操作已经存在表

对于已经存在的表,可以使用alter命令添加、修改、删除字段,也可以对表进行删除操作。

#添加字段sex,类型为VARCHAR(1)

ALTER TABLE contacts ADD sex VARCHAR(1);
 

#修改字段sex的类型为tinyint

ALTER TABLE contacts MODIFY sex tinyint;

#删除字段sex

ALTER TABLE contacts DROP COLUMN sex;

#删除contacts表

DROP TABLE contacts;

三、DML:

1、插入数据(INSERT )

在MySQL中,使用insert into语句向数据表中插入数据。

INSERT 插入单条数据:

INSERT INTO table_name (field1, field2, ..., fieldN) VALUES (value1, value2, ..., valueN);

INSERT 插入多条数据:

INSERT INTO table_name (field1, field2, ..., fieldN) VALUES (valueA1, valueA2, ..., valueAN), (valueB1, 
valueB2, ..., valueBN), …, (valueN1, valueN2, ..., valueNN);
注意事项:
1、如果字段是字符型,值必须使用单引号或者双引号,如”value”;如果值本身带单引号或双引号,需要转义
2、如果所有列都要添加数据,insert into语句可以不指定列,即
INSERT INTO table_name VALUES (value1, value2, ..., valueN);

2、修改数据(update)

在MySQL中,使用update语句来修改数据表中的数据。

update语法:

UPDATE table_name SET field1=newValue1, field2=newValue2 [WHERE Clause]
注意事项:
1、可以同时更新一个或多个字段
2、可以通过where子句来指定更新的范围,如果不带where,则更新数据表中的所有记录

3、删除数据(delete)

在MySQL中,使用delete语句来删除数据表中的数据。

delete语法:

DELETE FROM table_name [WHERE Clause]
注意事项:
1、可以通过where子句来指定删除的范围,如果不带where,则删除数据表中的所有记录

四、DQL:

1、条件查询(where)

单条件查询

#SQL语句中使用where子句语法

SELECT column_name FROM table_name WHERE column_name 运算符 value

多条件查询

#and、or运算符语法

SELECT column_name FROM table_name WHERE condition1 AND condition2 OR condition3

2、去重查询distinct)

distinct用于在查询中返回列的唯一不同值(去重复);如果在查询数据时,希望得到某列的所有
不同值,可以使用distinct。

#distinct语法

SELECT DISTINCT column_name, column_name
FROM table_name;

3、分组查询:

#group by

group by表示根据某种规则对数据进行分组,它必须配合聚合函数进行使用,对数
据进行分组后可以进行count、sum、avg、max和min等运算。

#group by语法

SELECT column_name, aggregate_function(column_name)
FROM table_name
GROUP BY column_name
说明:
1.
aggregate_function表示聚合函数。
2.
group by可以对一列或多列进行分组。

#group_concat语法

group_concat([distinct] column_name [order by column_name asc/desc ] [separator '分隔符'])
group_concat配合group by一起使用,用于将某一列的值按指定的分隔符进行拼接,MySQL默认
的分隔符为逗号

4、having的使用

在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用。HAVING 子句可
以对分组后的各组数据进行筛选。

#having语法

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value

5、查询结果排序与分页

order by的使用

在SQL中,使用order by对查询结果集进行排序,可以按照一列或多列进行排序。

#order by语法

SELECT column_name1, column_name2
FROM table_name1, table_name2
ORDER BY column_name, column_name [ASC|DESC]
说明:
1.
ASC表示按升序排列,DESC表示按降序排列。
2.
默认情况下,对列按升序排列。

limit的使用

在SELECT语句中使用LIMIT子句来约束要返回的记录数,通常使用LIMIT实现分页。

#limit语法

SELECT column_name1, column_name2
FROM table_name1, table_name2
LIMIT [offset,] row_count
说明:
1.
offset指定要返回的第一行的偏移量。第一行的偏移量是0,而不是1。
2.
row_count指定要返回的最大行数。

 6、自连接查询

自连接是一种特殊的表连接,它是指相互连接的表在物理上同为一张表,但是逻辑上是多张表。自
连接通常用于表中的数据有层次结构,如区域表、菜单表、商品分类表等。

#自连接语法

SELECT A.column, B.column 
FROM table A, table B
WHERE A.column = B.column;

7IN和LIKE的使用

#where子句使用in语法

SELECT column_name FROM table_name WHERE column_name IN(value1, value2, …)

#where子句使用like语法

SELECT column_name FROM table_name WHERE column_name LIKE ‘%value%’
说明:
1、LIKE子句中的%类似于正则表达式中的*,匹配任意0个或多个字符
2、LIKE子句中的_匹配任意单个字符
3、LIKE子句中如果没有%和_,就相当于运算符=的效果

8、子查询in、exists

#子查询in语法

SELECT column_name FROM table_name 
WHERE column_name IN(
 SELECT column_name FROM table_name [WHERE]
);

#子查询exists

EXISTS是子查询中用于测试内部查询是否返回任何行的布尔运算符。将主查询的数据放到子查询中
做条件验证,根据验证结果(TRUE 或 FALSE)来决定主查询的数据结果是否保留。

#where子句使用exists语法

SELECT column_name1 
FROM table_name1 
WHERE EXISTS (SELECT * FROM table_name2 WHERE condition);

9、联合查询UNION

        UNION操作符用于连接两个或两个以上的SELECT语句并将查询结果合并到一个结果集中,UNION会自动对结果集去重。

#union语法

SELECT column,... FROM table1 
UNION [ALL]
SELECT column,... FROM table2
...

注意事项:

使用UNION连接的所有SELECT语句必须拥有相同的列 UNION 结果集中的列名与第一个 SELECT 语句中的列名一致。

UNION与UNION ALL的区别

        默认情况下,UNION会自动对查询结果集进行去重操作,所以在数据量较大的情况下效率会比较低。如果不需要对查询结果集进行去重操作,就需要用到UNION ALL。

UNION:对查询结果集进行并集操作;去除重复记录

UNION ALL:对查询结果集进行并集操作;不去除重复记录;性能相对较高

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值