数据库概念:

存储数据的仓库,数据是有组织的进行存储 DataBase(DB)

书记欲哭管理系统:操综合管理数据库的大型软件 DBMS

SQL : 操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准

MySQL数据库(RDBMS)

概念:建立在关系模型基础上,由多张相互连接的二维表组成的数据库。

DESC DATABASE desc database default_DESC DATABASE

查询:

查看所有数据库


SHOW DATABASES;


查询当前数据库


SEKECT DATABASE();


创建


CREATE DATABASE [IF NOT EXIST ]数据库名 [DEFAULT CHARSET 字符集][COLLATE 排序规则];


删除


DROP DATABASE[ IF EXISTS ] 数据库名; )comment'用户表';


DDL-表操作-查询

查询当前数据库所有表

SHOW TABLES;

查询表结构

DESC 表名;

查询指定表的建表语句

SHOW CREATE TABLE 表名;

SQL

DDL-表操作-修改


ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);


修改字段名和字段类型


ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度)[COMMENT 注释][约束];


案例:

将emp表的nickname字段修改为username,类型为varchar(30)


ALTER TABLE empCHANGE nickname username varchar(30) COMMENT '昵称'


删除字段


ALTER TABLE 表名 DROP 字段名


修改表名


ALTER TABLE 表名 RENAME TO 表名


删除表


DROP TABLE [IF EXISTS] 表名


删除指定表,并重新创建该表


TRUNCATE TABLE 表名;


删除表时,表中的全部数据也会被删除。

总结

DDL-数据库操作

SHOW DATABASES;

USE 数据库名;

CREAT DATABASE();

DROP DATABASE 数据库名;

DDL-表操作

SHOW TABLES;

CREATE TABLE 表名(字段 字段类型 ,字段 字段类型);

DESC 表名;

SHOW CREATE TABLE 表名;

ALTER TABLE 表名 ADD/MODIFY/CHANGE/DROP/RENAME TO...;

DROP TABLE 表名;

DML

数据操作语言,用来对数据库中标的数据记录进行增删改查操作。

添加数据(INSERT)

修改数据(UPDATE)

删除数据(DELETE)

1、给指定字段添加数据


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


2、给全部字段添加数据


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


3、批量添加数据


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


注意:

插入数据时,指定的字段顺序需要与值的顺序是一一对应的。

字符串和日期型数据应该包含在引号中。

插入的数据大小,应该在字段的规定范围内。

MDL-修改数据

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

注意:修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据。

update employee set name = 'itheima' where id = 1;

update employee set name = '小昭',gender = '女' where id = 1;

update employee set entrydate = '2008-01-01';

DML-删除数据

DELETE FROM 表名 [WHERE 条件]

注意:DELETE 语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据。

DELETE语句不能删除某一个字段的值(可以使用UPDATE)。

DQL-数据查询

数据查询语言,用来查询数据库中表的记录。

查询关键字:SELECT

SELECT 字段列表

FROM 表名列表

WHERE 条件列表

GROUP BY 分组字段列表

HAVING 分组后条件列表

ORDER BY 排序字段列表

LIMIT 分页参数

基本查询

查询多个字段

SELECT 字段1、字段2、字段3.... FROM表名;

SELECT *FROM 表名; 查询返回所有字段

设置别名

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

select name '姓名' from t_stu;

AS可以省略

去除重复记录

SELECT DISTINCT 字段列表 FROM 表名;

select distinct address '住址' from t_stu_copy;

DQL-条件查询

语法

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

DESC DATABASE desc database default_DESC DATABASE_02

聚合函数

将一列数据作为一个整体,进行纵向计算。

常见聚合函数

DESC DATABASE desc database default_数据库_03

DQL-分组查询

1、语法:

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

2、where 与having 区别

执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤的。

having :根据条件(可以是逻辑条件),查询结果作为查询条件

判断条件不同:where不能对聚合函数进行判断,而having可以。

执行顺序:while>聚合函数>having。

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

DQL-排序查询

1、语法:

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

2、排序方式

ASC : 升序(默认值)

DESC:降序

注意!!!

如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序。

DQL-分页查询

语法:

select 字段列表 from 表名 limt 起始索引 查询记录数;

注意:

起始索引从0开始,起始索引 = (查询页码-1)*每页显示记录数。

分页查询是数据库的方言,不同的数据库有不同的代码实现,MySQL中是limit。

如果查询的是第一页数据,起始索引可以省略,直接简写为limit10.

DQL-执行顺序

DESC DATABASE desc database default_字段_04

DCL

用来管理数据库用户、控制数据库的访问权限。

用户管理:

1、查询用户

use mysql;

select*from user;

2、创建用户

create user '用户名' @'主机名' identified by'密码';

3、修改用户密码

alter user '用户名' @ '主机名' identified with mysql_native_passwod by'新密码';

4、删除用户

drop user '用户名' @ '主机名';

创建用户 itcast , 只能够在当前主机location访问,密码123456;

create user 'itcast'@'location' identfied by '123456';

创建用户 heima ,可以在任意主机访问数据库,密码123456;

create user 'hiema'@'%' identified by '123456';

修改用户 heima 的访问密码为1234;

alter user 'heima' @ '%' identified with mysql_native_password by '1234';

删除 itcast@location 用户

drop user 'itheima' @'localhost';

注意:

主机名可以使用%通配

这类sql开发人员操作的比较少 ,主要是DBA(数据库管理员)使用。

SQL

DCL-权限控制

DESC DATABASE desc database default_DESC DATABASE_05

1、查询权限

show grants for '用户名'@'主机名';

2、授予权限

grant 权限列表 on 数据库名.表名 to ‘ 用户名’ @ '主机名';

3、撤销权限

revoke 权限列表 on 数据库名.表名 from '用户名' @ '主机名';

注意:

多个权限之间,使用逗号分隔

授权时,数据库名和表名可以使用*进行通配,代表所有。