数据库概念:
存储数据的仓库,数据是有组织的进行存储 DataBase(DB)
书记欲哭管理系统:操综合管理数据库的大型软件 DBMS
SQL : 操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准
MySQL数据库(RDBMS)
概念:建立在关系模型基础上,由多张相互连接的二维表组成的数据库。
查询:
查看所有数据库
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 条件列表:
聚合函数
将一列数据作为一个整体,进行纵向计算。
常见聚合函数
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-执行顺序
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-权限控制
1、查询权限
show grants for '用户名'@'主机名';
2、授予权限
grant 权限列表 on 数据库名.表名 to ‘ 用户名’ @ '主机名';
3、撤销权限
revoke 权限列表 on 数据库名.表名 from '用户名' @ '主机名';
注意:
多个权限之间,使用逗号分隔
授权时,数据库名和表名可以使用*进行通配,代表所有。