一.数据库概述
1.数据库的分类
- 关系型数据库(SQL)
- 数据库里的数据存在明显的关系关联性。mysql,Oracle,SQLite
- 非关系型数据库(NOSQL)
- 其中的数据并不存在明晰、紧密的关系关联性,更多是松散的关联关系。Redis,mongoDB,Hbase
- 非关系型数据库产生的背景:
- 大数据量
- 高吞吐量
- 低延迟
2.数据库对象
2.1表
表是一种结构化的文件,里面有列,行,文件,类似Excel表
2.2视图
可以理解为是一张虚表(在物理磁盘中不真实存在).视图是基于select语句查询生成的结果集.当一条select语句比较复杂而且嗲用频率比较高的时候,就可以把这个select语句封装成一个视图
2.3函数
函数就是某个功能的实现,它只有一个返回值,函数分为系统函数和自定义函数,通常使用的都是系统函数
2.4存储过程
也是一个功能的实现。我们所说的数据库编程,SQL语句编程,就主要是指自定义一个存储过程。调用存储过程是使用exec 存储过程名 参数1等来调用。它是可以返回多个值,也可以没有返回值。
2.5索引
我们之前接触过,它就像一本书的目录一样,是为了加快我们查询速度而建立的。
二.数据类型
1.数值型
2.时间型
3.字符串型
小知识
char与varchar的区别。char(100)类型的字段一旦定义,不管里面是否真的有值,它就固定会占用100个字符对应的存储空间,这种类型对空间的利用率其实并不高。varchar(100)类型的字段定义后,它所占用的空间就是里面存储内容占用的空间,但是最大不会超过100个字符,这种类型对空间的利用率是很高的。
比如 手机号码(目前都是11位,前缀不考虑),就可以使用char定长
比如 姓名或者家庭地址,就可以使用varchar,
三.SQL的分类
四.MySql基本使用
1.DCL用户创建于授权
创建用户:
CREATE USER ‘username’@‘host’ IDENTIFIED BY ‘password’;
需要切换到mysql数据库下,操作user表
username:用户名;host:指定在哪个主机上可以登录,本机可用localhost,%通配所有远程主机;password:用户登录密码;
授权:
GRANT ALL PRIVILEGES ON . TO ‘username’@’%’ IDENTIFIED BY ‘password’ ;
刷新权限:FLUSH PRIVILEGES;
格式:grant 权限 on 数据库名.表名 to 用户@登录主机 identified by “用户密码”;*.*代表所有数据库和所有表;
@ 后面是访问MySQL的客户端IP地址(或是 主机名) % 代表任意的客户端,如果填写 localhost 为本地访问(那此用户就不能远程访问该mysql数据库了)。
如 GRANT ALL PRIVILEGES ON 08.* TO ‘tianliang’@’%’ IDENTIFIED BY ‘tianliang’ ;
把 _08_数据库的操作权限,授权给tianliang用户
All privileges 是所有权限
GRANT select,insert,update,drop,create,delete ON 08.* TO ‘c’@’%’ IDENTIFIED BY ‘c’ ;
上面是同时设置查询,添加,更新等操作
当然 也可以只写select , 是只能查询
Select 查询
Insert 插入数据
Update 更新数据
Delete 删除数据
Drop 删除表
Create 创建表
撤销权限:
revoke 跟 grant 的语法差不多,只需要把关键字 “to” 换成 “from” 即可,并且IDENTIFIED BY ‘password’ ,不管是授权还是撤销,都可以不加:
grant all on . to ‘tledu’@‘localhost’;
revoke all on . from ‘tledu’@‘localhost’;
删除用户,会同步把user和db表都删除对应的数据drop user 用户名@’%’;
例子:
/*
创建用户与授权
*/
-- 创建用户和删除用户之前必须先得进入到mysql表
-- use mysql;
-- 创建用户
-- create user 'antg'@'localhost' identified by 'antg';
-- 给用户授权
-- grant all privileges on test.* to 'antg'@'%' identified by 'antg';
-- 一般这里要刷新一下权限,因为搜全后数据是写在磁盘中的,而数据库一般会在一开机就将这些信息加载到内存中
-- flush privileges;
-- 移除权限
-- revoke all privileges on test.* from 'antg'@'%';
-- 授权
-- grant all privileges on test.* to 'antg'@'%';
-- 移除权限
-- revoke all privileges on test.* from 'antg'@'%';
-- 删除用户
-- drop user 'antg'@'%';
2.DDL数据库创建
注释:
– 单行注释
/*
多行注释
*/
命令行的基本使用:
查看当前链接的MySQL服务器的版本
select version();
显示当前链接的MySQL服务器中的所有的数据库
show databases;
在当前数据库服务器上创建一个新库
create database day01;
在当前数据库服务器上删除一个库
drop database day01;
3.DDL表的创建和删除
表的创建
在数据库day01下创建表student_info
use day01;
create table student_info (
id int,
name varchar(20),
salary decimal(18,2)
)ENGINE = innodb default charset = utf8;
在数据库day01下删除表student_info
表的删除
use day01;
drop table student_info;
4.DML操作
插入数据
insert into 表名 (列名1,列名2) values (值1,值2);
删除数据
delete from 表名 where 列名 = 值;
更新数据
update 表名 set 列名1=值 , 列名2=值 where 列名 = 值;
5.DQL操作
查询数据
select 列限定 from 表限定 where 行限定