数据库命令语法

1.操作数据库

(1).查询

查询数据库

Show DataBases;

(2).创建

创建数据库

CREATE DATABASE 数据库名称;

创建数据库(判断,如果不存在则创建)

CREATE DATABASE IF NOT EXISTS 数据库名称;

(3).删除

删除数据库

DROP DATABASE 数据库名称;

删除数据库(判断,如果存在则删除)

DROP DATABASE IF EXISTS 数据库名称;

(4).使用数据库

查看当前使用的数据库

SELECT DATABASE();

使用数据库

USE 数据库名称;

2.操作表

(1)查询表

查询当前数据库下所有表名称

SHOW TABLES;

查询表结构

DESC 表名称;

(2)创建表

创建表的基本格式

CREATE TABLE 表名(

字段名1 数据类型1,

字段名2 数据类型2,

...

字段名n 数据类型n

);

注意:最后一行末尾,不能加逗号

数据类型

mysql对数据的操作主要有? mysql数据库常用操作语句_mysql对数据的操作主要有?


(3)约束

约束

约束是作用于表中列上的规则,用于限制加入表的数据;

约束的存在保证了数据库中数据的正确性、有效性和完整性。

mysql对数据的操作主要有? mysql数据库常用操作语句_mysql_02

tips:MySQL中不支持检查约束CHECK

1.非空约束

语法:

添加约束:

--创建表时添加约束

CREATE TABLE 表名(

列名 数据类型 NOT NULL,

...

);

--建完表后添加非空约束

ALTER TABLE 表名 MODIFY 字段名 数据类型 NOT NULL;

删除约束:

ALTER TABLE 表名 MODIFY 字段名 数据类型;

2.唯一约束

语法:

添加约束:

--创建表时添加约束

CREATE TABLE 表名(

列名 数据类型 UNIQUE [AUTO_INCREMENT],

--AUTO_INCREMENT:当不指定值时自动增长

...

);

CREATE TABLE 表名(

列名 数据类型,

...

[CONSTARAINT] [约束名称] UNIQUE(列名)

);

--建完表后添加唯一约束

ALTER TABLE 表名 MODIFY 字段名 数据类型 UNIQUE;

删除约束

ALTER TABLE 表名 DROP INDEX 字段名;

3.主键约束

语法:

添加约束:

--创建表时添加约束

CREATE TABLE 表名(

列名 数据类型 PRIMARY KEY [AUTO_INCREMENT],

...

);

CREATE TABLE 表名(

列名 数据类型,

...

[CONSTARAINT] [约束名称] PRIMARY KEY(列名)

);

--建完表后添加主键约束

ALTER TABLE 表名 ADD PRIMARY KEY(字段名);

删除约束

ALTER TABLE 表名 DROP PRIMARY KEY;

4.默认约束

语法:

添加约束:

--创建表时添加约束

CREATE TABLE 表名(

列名 数据类型 DEFAULT 默认值,

...

);

--建完表后添加默认约束

ALTER TABLE 表名 ALTER 列名 SET DEFAULT 默认值;

删除约束:

ALTER TABLE 表名 ALTER 列名 DROP DEFAULT;

5.外键约束

语法:

添加约束:

--创建表时添加约束

CREATE TABLE 表名(

列名 数据类型,

...

[CONSTRAINT] [外键名称] FOREIGN KEY(外键列名) REFERENCES 主表(主表列名)

);

--建完表后添加默认约束

ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY(外键字段名称) REFERENCES 主表名称(主表列名称);

删除约束:

ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;

(4)删除表

删除表

DROP TABLE 表名;

删除表时判断表是否存在

DROP TABLE IF EXISTS 表名;

(5)修改表

修改表名

ALTER TABLE 表名 RENAME TO 新表名;

添加一列

ALTER TABLE 表名 ADD 列名 数据类型;

修改数据类型

ALTER TABLE 表名 MODIFY 列名 新数据类型;

修改列名和数据类型

ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型;

删除列

ALTER TABLE 表名 DROP 列名;

3.操作数据

(1)添加数据

给指定列添加数据

INSERT INTO 表名(列名1,列名2,...) VALUES(值1,值2,...);

给全部列添加数据

INSERT INTO 表名 VALUES(值1,值2,...);

批量添加数据

INSERT INTO 表名(列名1,列名2,...) VALUES(值1,值2,...),(值1,值2,...),(值1,值2,...)...;

INSERT INTO 表名 VALUES(值1,值2,...),(值1,值2,...),(值1,值2,...)...;

(2)修改数据

UPDATE 表名 SET 列名1=值1,列名2=值2,...[WHERE 条件];

注意:修改语句中如果不加条件,则所有数据都被修改

(3)删除数据

DELETE FROM 表名 [WHERE 条件];

注意:删除语句中如果不加条件,则将所有数据删除

(4)查询数据(单表查询)

1.基础查询

SELECT

字段列表

FROM

表名列表

WHERE

条件列表

GROUP BY

分组字段

HAVING

分组后条件

ORDER BY

排序字段

LIMIT

分页限定

2.条件查询

条件查询语法

SELECT 字段列表 FROM 表名 WHERE 条件列表

条件

mysql对数据的操作主要有? mysql数据库常用操作语句_表名_03

3.排序查询

排序查询语法

SELECT 字段列表 FROM 表名 ORDER BY 排序字段名1[排序方式1],排序字段名2[排序方式2]...;

排序方式

ASC: 升序排序(默认值)

DESc: 降序排序

注意:如果有多个排序条件,当前边的条件值一样时,才会根据后面条件进行排序

4.分组查询

聚合函数

mysql对数据的操作主要有? mysql数据库常用操作语句_sql_04

聚合函数语法

SELECT 聚合函数名(列名) FROM 表

注意:null值不参与所有聚合函数运算

分组查询语法

SELECT 字段列表 FROM 表名 [WHERE 分组前条件限定] GROUP BY 分组字段名 [HAVING 分组后条件过滤]

注意:分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义

where和having区别:

执行实际不一样:where时分组之前进行限定,不满足where条件,则不参与分组,而having时分组之后对结果进行过滤

可判断的条件不一样:where不能对聚合函数进行判断,having可以

**执行顺序:**where>聚合函数>having

5.分页查询

分页查询语法

SELECT 字段列表 FORM 表名 LIMIT 起始索引 , 查询条目数

起始索引:从0开始

*计算公式:起始索引=(当前页码-1)每页显示的条数

tips:

分页查询limit用于MySQL数据库

Oracle分页查询使用rownumber

SQL server分页查询使用top

(5)多表查询

笛卡尔积:取A,B集合所有组合情况

多表查询:从多张表查询数据

mysql对数据的操作主要有? mysql数据库常用操作语句_mysql_05

连接查询:

内连接:相当于查询A B交集数据

--隐式内连接

SELECT 字段列表 FROM 表1,表2... WHERE 条件;

--显示内连接

SELECT 字段列表 FROM 表1 [INNER] JOIN 表2 ON 条件;

外连接:

左外连接:相当于查询A表所有数据和交集部分数据

SELECT 字段列表 FROM 表1 LEFT [OUTER] JOIN 表2 ON 条件;

右外连接:相当于查询B表所有数据和交集部分数据

SELECT 字段列表 FROM 表1 RIGHT [OUTER] JOIN 表2 ON 条件;

子查询

查询中嵌套查询,称嵌套查询为子查询

子查询根据查询结果不同,作用不同:

单行单列:作为条件值,使用=、!=、>、<等进行条件判断

SELECT 字段列表 FROM 表 WHERE 字段名 = (子查询);

多行单列:作为条件值,使用in等关键字进行条件判断

SELECT 字段列表 FROM 表 WHERE 字段名 in (子查询);

多行多列:作为虚拟表

SELECT 字段列表 FROM (子查询) WHERE 条件;