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默认 的分隔符为逗号

MySQL基础语法语句1

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指定要返回的最大行数。

 5、自连接查询

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

#自连接语法

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

MySQL基础语法语句1

6、IN和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子句中如果没有%和_,就相当于运算符=的效果

7、子查询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);

MySQL基础语法语句1

 

上一篇:快速导出表结构


下一篇:Mysql数据实时增量同步工具之go-mysql-transfer