Mysql入门
数据以及数据库
数据:所有能够感知的客观世界存在的事物都是数据,即客观事物的符号表示。在计算机中展示数据则需要创建多个对象,集合或数组,存在内存中,优点速度快,但致命缺点,数据不持久,内存是一个随机存储的空间。所以需要存到磁盘中,序列化、流。但是这样操作,查询时效率低,需要反序列化和遍历。由此诞生数据库。
数据库:数据存在结构化数据(所有数据格式统一)和非结构化数据(格式无法统一),因此数据库也对应这两种,按照数据结构存储数据的仓库。(DB 全称database),还有半结构化数据,很少用,存于非关系型数据库。
关系型数据管理系统(RDBMS Relationship):处理结构化数据,高io(输入输出)操作
Oracle:oracle公司,大型性分布式数据库管理系统。产品免费,但服务收费(收费及其昂贵,按cpu核数收费),因此一 般都是大型国企,上市金融公司使用。也就是比较稳定的地方,金融公司不常用,不稳定。例如阿里(旺信:以前是 oracle,后来不再使用,太贵)
Mysql:oracle公司,但不是它自己的,并且也是收购的(mysql AB公司),主流互联网公司使用,因为它开源,免费 (GPL:开源软件许可证),所用版本----5.7.21
Sql server:microsoft公司,中小型数据库管理系统,微软公司的特点,不兼容。
Db2:ibm公司,中小型数据库管理系统
非关系型数据管理系统(Nosql not only sql):主要为了应对,高并发高可靠高性能数据
redis/hbase/mongdb/neo4j(社交网络。陌陌、脉脉),是对关系型数据库的补充,不是替代,无法只用nosql
任何一个数据库:安装分为两个端--客户端navicat,服务端server;使用时要么开放端口要么关闭防火墙,不同的权限对应不同的操作等级。
客户端工具: 1)命令行,2)图形化界面(workbeach、sqlyog、navicat)
sql语句的编写:
DDL:(Data Definition Language)数据定义语言(创建和维护数据库对象结构)、创建数据库、表、视图、索引等,总 之就是不涉及删除修改具体信息影响结构的行为。
create / alter / drop /// add / drop / change / modify / rename 相当于搞房子时打地基
DML:(data manipulation language)数据操纵语言(数据的增删改查)
insert / delete /update / select
DCL : (Data Control Language)数据控制语言(授权以及取消授权)
grant / revoke
TCL:(transaction Control Language)事务控制语言(安装成功正常保存、安装失败时将之前安装的部分程序全部删 除)
Commit / rollback
DDL:
创建数据库: create database [if not exists] dbname;
删除数据库: drop database[ if exists] bd1808;
1.查看结构 desc student;
2.添加字段(add) 追加
alter table student add tel varchar(11); // sql语言默认添加到最后一位
#添加字段到首列 alter table student add email varchar(20) first;
#放置字段到第二列 alter table student add height double(4,1) after email;
3.删除字段(drop) alter table student drop height;
4.修改字段(modify/change)
#modify: modify 字段名称 新类型 新约束
#change: change 旧字段 新字段 新类型 新约束
#1.修改字段名称
alter table student change name sname varchar(20);
#2.只修改字段类型和长度
alter table student change sname sname varchar(50);
alter table student modify sname varchar(50);
#3.修改字段位置
alter table student modify age int after sname;
5.表名称修改 rename table student to stu; alter table student rename stu; //两种方法都可以。
6.销毁表: drop table user;
数据类型:
整型数据:int(tinyint、smallint、bigint) 4个字节
浮点数:
fioat(m,n): m代表长度,n代表小数点位数
double(m,n):m代表长度,n代表小数点位数
decimal(m,n):m代表长度,n代表小数点位数(它不会产生精度的丢失,因此一般记录金额和价格相关数据)
日期类型:
date:日期
Time:时间
Datetime:时间和日期 1000--9999
Timestamp:时间戳 1970—2038
Year:年份
字符串:
char(n):(定长字符串) 不足长用空格填满
Varchar(n):(可变字符串) 指定的只是上限
Text:大文本(比如存一本书,特别多的)
其他类型:
Bit(1):性别的常用类型,因为性别的存储方式不是男女,而是0 1
Blob:存储二进制数据(图片、音频、视频)、很少用,数据库存这些不效率也浪费空间,这些一般存在文件库 中,数据库对应存其地址
Enum:枚举类型
Set: 集合类型
Json:json类型,数据传输格式、后台传到前台(本质是一个字符换),它在传输时会保持一定的格式,集合转化成 json、再从json转化成集合,简化效率
运算符:select ***
算数运算符:加减乘除
比较运算符:它最终的结果不是turn和false ,而是1(对)和0(错) > < >= <= = != <>(这玩意等价于!=,意思是可大 可下,即不等于)
逻辑运算符:and or !
位运算符: & | ^
selsct 4&3 0
selsct 4|3 7
selsct 4^3 7
数据完整性:
实体完整性:实体即记录,也就是行
主键约束:primary key(唯一,且不为空),分为主键和联合主键;
唯一约束:unique(唯一),他可以空,但只能空一次,其实本质还是唯一不空;并且它可以定义多个字段属于唯一
主键自增:auto_increment(从1开始,每次自动增加1)
域完整性: 域:指的是字段,保证字段的值准确性
类型约束:数据类型(比较粗犷的约束方式)
非空约束:not null ,保证字段必须有值
默认值:default,设定一个默认值,当用户没有填入信息时采用默认值,不会为空。
引用完整性:一个表中的某个字段参考另一个表中的某个字段,(比如学生表和班级表,两个表中都含有班级字段,)保证 表与表中参考数据的完整性,
DML:
1)insert: 增加(插入)
语法格式:insert into tname[(fie1,fie2…)] values(val1,val2…);因此可插入一条完整记录,也可插入一条不完整计录;
插入一条完整的数据:插入的数据顺序要和表的字段顺序匹配,不可颠倒
insert into stu values(‘[email protected]’,’zs’,18,’男’,’123445555555’);
插入部分字段:插入的顺序和声明的顺序匹配,声明的顺序可自定义
insert into stu(age,sname,sex)value(20,’ls’,’女‘);
批量插入:写一行和写三行的效率是不一样的,一个是输出三个影响一行,一个是输出一次影响三行,这样效率高
复制信息到另一张表:
2)update(修改),其实不必非要是主键
语法结构: update tname set fie1=val1,fie2=val2 [where condition];
3)delect(删除)
语法结构: delect from tname [where condition] delect from stu where sname = ‘haha’;
DQL:数据查询语言
单行函数:返回一条记录的,一般为单行单类。