数据库概念和sal语句
数据:数字信息 据:属性对一系列对象的具体属性的描述的集合。
数据库:数据库就是用来组织(各个数据之间是有关联,是按照规则组织起来的),存储和管理(对数据的增、删、改、查)数据的仓库。
数据库是企业的重要信息资产,在使用数据库时,要注意(查和增,无所谓,但是删和改,要谨慎!)
数据库管理系统(DBMS):实现对数据的有效组织,管理和存取的系统软件
数据库是一个系统,是一个人机系统,硬件,oS,数据库,DBMS和数据库的用户共同组成。
用户是通过DBMS(各种数据库软件)来对数据库进行操作。
数据库的分类:
mysal:关系型数据库。
redis:非关系型数据库es。
关系型数据库:存储数据的结构是一个二维表格
表:行 列
行:记录,用来描述一个对象信息
列:字段,用来描述对象的一个属性。
关系型数据库:mysql(中小类型的数据并发请求免费)oracle(大数据量还是用它)sql-server mariaDB postgresql。
关系型数据库当中,表里面的数据是关联的,表和表之间的数据也是关联起来。
多表关联,最多可以关联几张表?
3张表。
非关系型数据库:保存不是一张表格,key…>value 键值对来保存数据。
redis缓存性的数据库
es:索引型数据库。
文档型:MongDB
既然有关联,查询速度相对来说,关系型数据查询速度更慢一些。非关系型数据库可以支持高并发读写。对海量数据依旧保持着高效率的存储和访问。
mysal数据库的存储引擎:
5.5之间:MYISAM不支持事物和外键的存储引擎。适用于读的多,写的好。
5.6之后默认的存储引擎:lnnodb,可以支持事务,外键,行级锁定的存储引擎。
支持高并发性能的应用。
事务:在数据库当中,一个或者多个操作组成的数据操作的序列。
这些操作要么全部成功,失败一个就全部不执行。确保数据一致性和完整性。
事务的特点:
1.原子性。数据库最小工作单元,要么全部执行成功,要么全部不执行,只要有一个操作时间,整个执行的序列都会被回滚。完成的操作也会被撤销。
2.一致性:事务执行前后,数据库的完整性约束不能被破坏。只有在满足所有的约束条件情况下,事务才能被提交。
3.隔离性:事务的执行是相互隔离。一个事物的执行不能受到其他执行事务的干扰。并发事务之间互相隔离。防止数据不一致的情况发生。
4.持久性:事务一旦提交,他所做的所有修改会被永久的保存在数据库中。即使系统崩溃,提交的数据也不丢失。
确保数据库的始终处于一致性的状态。确保数据的完整和一致。
mysgl的名词:
1、数据库:database
2、表:table 行:row列:column
3、索引:index
4、视图:view
5、存储过程:procedure
6、触发器:trigger
7、用户:user
8、权限:privilege
mysql的语句的规范:
在数据库系统中,Sal不区分大小写,但是建议大写。语句不区分,但是表名是严格区分大小写。
sa语句可以单行也可以多行书写,但是默认都以;结尾。
关键词不能跨行或者简写。
子语句通常位于度路航,便于编辑,提高可读性。
数据库的命名规则:
必须以字母开头,后面可以包含数据,特殊字符:#_$
不要使用mvsql的保留字:table select
数据库名表名用户名严格区分大小写。
数据库的字符类型:
int:4个字节,用来存储整数
char:固定长度的字符串,用来存储定长的字符串。
yarchar:可变长度的字符类型,存储可变长度的字符串。(无限制的可以随便写,也要根据类型的长度。)
float(m,d):单精度浮点存储浮点数,m表示总位数,d,表示小数位
double(m.d):双精度浮点数,存储浮点数,m也是总位数,d,表示小数位。
text:用于存储大文本数据,文档,或者长字符串。
image:二进制存储图像,图片,多媒体。
decimal(5,2):用于存储固定精度的小数,其中5,表示总位数,2表示小数位。
date:存储日期:yyyy-mm-dd
datetime:存储日志 YYYY-MM-DD HH:MM:SS
Itimestamp:和datetime格式一致,可以自动的更新为当前的时间戳。
重点
char varchar
"char4个字节"1个字节。
'ab''ab'4个字节
'ab'3个字节
‘abcd'‘abcd'4个字节
‘abcd'5个字节
char 无论你是否定义了值,都会占用固定长度的字节大小。
varchar:在保存时,varchar 14 实际长度是5就占用5个,加一个隐藏符,6个
yarchart比char节省磁盘空间
但是varchaer读写速度比char慢。
都是字符串类型:一定要用单引号。
sa语句的分类
DDL:数据定义语言,用于创建数据的对象,创建库 表 索引。
CREATE 创建
DROP 删除
ALTER修改
create table ky32 (id int(4) not null,
name varchar(10) not null,
sroce decimal(5,2),
passwd char(48),
primary key(id));
null和空格的区别:
null什么都没有,对象没有任何的描述信息
空格:也是字符。
DML:数据操作语言,对表中的数据进行管理,
select
update更新
insert 添加
delete删除 对表进行删除操作。
DQL:查询数据记录:
select
DCL:数据控制语言,设置或者更改数据库用户或者用户的权限
GRANT赋予权限
REVOKE取消权限
TCL:事务控制语句,管理数据库当中的事务。
commit:确认提交事务。
ROLLBACK:事务提交之后无法回滚。
savepoint保存点,可以回滚。
命令
#查看数据库中的所有库mysql> show databases;
#格式:use 库名
mysql> use mysql;
mysql> show tables;
直接查看
#格式: show tables from 库名mysql> show tables from mysql
先切换库,在查看指定表的字段
USE 数据库名; #切换库
SHOW TABLES; #查看库中的表
DESCRIBE 表名; #查看指定表的结构
直接查看表结构
DESCRIBE[数据库名.]表名;可缩写成:DESC 数据库名.表名;
创建数据库及数据库表
CREATE DATABASE数据库名;
总结
1.查看数据库和表:
show databases;
use 库名;
show tables;
desc 表名;
desc 表名\G
show table 表名;
2.创建及删除数据库和表:
create database 库名;
create table 表名(字段1 数据类型 [属性], 字段2 .....);
DROP TABLE [数据库名.]表名;
DROP DATABASE 数据库名;
3.表数据的增删改查:
insert into 表名 values (所有字段的值);
insert into 表名 (指定字段名称) values(字段的值);
delete from 表名 [where ...];
update 表名 set 字段=值[, 字段2=....] [where ...];
select 字段1[,字段2....] from 表名 [where ...];
select * from 表名;
只看前2行
select * from ky32 limit 2;
查询2-4
select * from ky32 limit 1,3;
更新第6行的passwd列的信息,要求把信息加密
update ky32 set passwd=password('111') where id = 6;
根据name和sroce进行去重查询
select distinct name,sroce from ky32;5、查看表的结构desc ky32;
修改name列的数据类型,更改为varchar(15)
添加新的colunm,名字为birth类型为datealter table ky32 add birth date;
alter table ky32 modify column name varchar (15);
添加一条新的内容,id 9,name任意 sroce 任意密码加密 birth为当前时间,自动生成。
inset into ky32 values(9,'test',96,password('1111'),now()); timestamp
修改birth列的名称,改为birthday。类型为char(15).
alter table ky32 change birth birthday char(15);