文章目录
数据库
概念
数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。
分类
分为两大类:关系型(RDB)和 非关系型(NOSQL)
- 关系型以商用和开源分为两类。
- 商用:Oacle;DB2;SQL Server
- 开源:MySQL;PostgreSQL - 非关系型分为K/V型;文档型; 列式存储;图形数据库大致四种
- K/V型:memcached;Redis
- 文档型:MongoDB;CouchDB
- 列式存储:Cassandra;HBase
- 图形数据库:Neo4J;InfoGrid
MySQL
数据库对象介绍
-
表 :数据库中保存数据的基本单位
-
视图:虚拟的,虚拟表
-
函数:一段语句的集合
-
存储过程:就是一个功能的实现。我们所说的数据库编程,SQL语句编程,就主要是指自定义一个存储过程。调用存储过程是使用exec存储
过程名 ,参数 等来调用。它可以返回多个值,也可以没有返回值。 -
索引:类似书的目录,目的是为了加快我们查询速度
基础操作
用户创建权限
用户创建
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
username:用户名;
host:指定在哪个主机上可以登录,本机可用localhost,%通配所有远程主机;
password:用户登录密码;
删除创建的用户
drop user 用户名@'%’;
会同步把user和db表都删除对应的数据,用delete操作没有drop方便
授权
GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' IDENTIFIED BY 'password' ;
格式:grant 权限 on 数据库名.表名 to 用户@登录主机 identified by “用户密码”;*.*代表所有数据库和所有表;
释意: @ 后面是访问MySQL的客户端IP地址(或是 主机名) % 代表任意的客户端,如果填写 localhost 为本地访问(那此用户就不能远程访问该mysql数据库了)。
#把 _08_数据库的所有操作权限,授权给tianliang用户
GRANT ALL PRIVILEGES ON _08_.* TO 'tinling'@'%' IDENTIFIED BY 'tinling' ;
#所有权限
All privileges;
GRANT select,insert,update,drop,create,delete ON _08_.* TO 'c'@'%' IDENTIFIED BY 'c' ;
#同时设置查询,添加,更新等操作(多个权限以逗号隔开)
刷新权限
FLUSH PRIVILEGES;
一般紧跟赋予权限的语句,即grant
权限列举
select 查询权限
insert 插入数据权限
update 更新数据权限
delete 删除数据权限
drop 删除表权限
create 创建表权限
删除授权
revoke all on *.* from tledu@localhost;
基本命令
select version();
查看当前链接的MySQL服务器的版本
show databases;
显示当前链接的MySQL服务器中的所有的数据库
select ‘xxxx’;
输出指定内容, 字符串需要用单引号括起来,不区分字符还是字符串,都用单引号就行,数值可以直接写
select ‘xxxx’ as 字段名;
设置字段名
use test;
切换数据库
show tables;
查看当前库下面的所有表,使用这个命令的时候,通常会跟在一条use xxx 后面;
数据库创建
create database day01;
在当前数据库服务器上创建一个新库
drop database day01;
在当前数据库服务器上删除一个库
表定义
在数据库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;
简单的DML
DML : Data Manipulate Language(数据操作语言)**
语法
-
insert 插入数据
insert into 表名 (列名1,列名2) values (值1,值2); 当一个插入插入一个对象的所有数据可以将表名后面哪一个括号删除,不过,后面插入的数据要严格按照,创建表时定义的顺序来
-
delete 删除数据
delete from 表名 where 列名1 = 值1; where 也可以不加,如果不加where的话,会删除表中所有的数据
-
update 修改数据
update 表名 set 列名1 = 值1 , 列名2 = 值 2 where 列名1 = 值; where 也可以不加,如果不加where的话,会修改表中所有的数据
注意 : 无论是delete还是update,只要你确定不是全表操作,就一定要使用where条件
char与varchar的区别
char(n)类型的字段一旦定义,不管里面是否真的有值,它就固定会占用n个字符对应的存储空间,这种类型对空间的利用率不高。
varchar(n)类型的字段定义后,它所占用的空间就是里面存储内容占用的空间,但是最大不会超过n个字符,这种类型对空间的利用率是很高的。
注意:字符型一旦定义就一定要在括号里面写一个数,限定其长度,否则会报错