mysql基础知识

Mysql
数据库的介绍:
定义:高效的处理数据的介质
A. 硬盘
B. 内存
仓库:存储数据的仓库:有规律的储存数据
2. 分类
根据存储介质的不同可以分成两类:
A. 关系型数据库 : 二维表(行和列组成的一张二维表)
大型:Oracle、DB2
中型:SqlServer、MySQL
小型:Acces
B. 非关系型数据库 :键值对 key—— value hash
Redis、MongoDB、memcached(缓存 )
3. 区别
关系型数据库:
优点:安全,数据保存在硬盘中;基本上不可能出现数据丢失的情况4
缺点:比较浪费空间
非关系型数据库
优点:直接操作内存,存储数据的效率比较高;
缺点:安全性较低

关系型数据库

  1. 定义
    建立在关系模型(教学模型)上的数据库
    关系模型:
    数据结构:数据储存形式(二维表(行和列)的形式)
    操作指令集合:所以SQL语句
    完整性约束:表内约束和表与表之间的约束(外键约束)
  2. 设计
  3. 关键词
    DB:database(数据库)
    DBMS:datebase mangement system (数据库管理系统)
    DBA:datebase administratorn (系统库管理员)
    DBS:datebase system (数据库系统)
    行/记录/:row/record
    列/字段:column/field
  4. SQL
    Structured query language 结构化查询语言(99%都是基于查询)
    三类:
    DDL:date defintion language
    数据定义语言(用来维护存储数据的结构(表,数据库))
    DML:data manipulaition language
    数据操作语言 (表内容:curd(create、update、read、delete 增删改查))
    DCL:date contorl language 数据控制语言(负责用户权限管理)root

Mysql:c/s类型的服务器端软件
Custom--------server
客户端 服务器端
B/S
Brower-----------server
浏览器端 服务器端

优势:

  1. 运行速度快;
  2. 体积小;(可以实现相同功能前提下:Oracle、SQLserver)
  3. 复杂程度较低,比较容易学;
  4. 可移植性比较好:Windows、macOS、Linux、Unix;
  5. 接口比较丰富:C语言、C#、Python、PHP等都提供了相应的API接口;
  6. 安全;
  7. 免费的;
    使用:
    现在客户端链接软件:Navicat for mysql,cmd命令框、PHPmyadmin
    MySQL -hlocalsot -uroot -p
    Localsot/127.0.0.1 本机
    -u 用户名
    -p 密码
    R

MySQL库操作:
查看所有数据库:
Show databases;
创建数据库:
Create datebase 数据库名称 charset 字符集;
列:Create datebase school charset utf-8
数据库名称不能再MySQL里面直接更改
删除数据库:
Drop database 数据库名称;
修改数据库字符集:
Alter database 数据库名称 charset 字符集;
查看数据库结构:
Show create database 数据库名称;

数据表:
数据类型:
数值型
整数型;
Tinyint 一个字节 unsigend 有符号:-128——127
无符号:0——255
Smallint 两个字节 unsigend 有符号:-32768——32767
无符号:0——65535

Mediumint 三个字节 有

Int 四个字节 有

Bigint 八个字节 有

浮点型;
单精度类型:float(m,d) 占用4个字节
双精度类型:double(m,d) 占用8个字节
精确值类型:decimal(m,d) 占用8个字节+d
Ex: m为位数,d为精确到小数点后几位
字符串类型;
Char类型;定长类型 char(n)n为字节数 节数不够空格来凑
Varchar类型;不定长类型 char(n) 节数不够不补
区别: 储存上varchar 更节省空间,运行速度上
运算速度上char比varchar快;char比varchar省了一步计算节数的过程
Text类型;长文本类型
时间类型;
Date类型: 年月日 1000-01-01–9999-12-31
Datetime类型: 年月日时分秒 1000-01-01 00:00:00–9999-12-31 23:59:59
Time类型: 时分秒 -838:59:59–838:59:59
Timest ramp类型: 时间戳 1970-01-01–2038-01-19之间的时间戳
Year类型: 年 1901–2155

一个字节=8位
二进制:11111111
十进制:256

数据表的创建:
语法结构:
Create table 表名(
列名/字段名1 数据类型 约束类型
列名/字段名2 数据类型 约束类型
列名/字段名3 数据类型 约束类型
列名/字段名4 数据类型 约束类型
) default charset 字符集
Enum(‘1’,‘2’)单选
Set(‘1’,‘2’)复选

MySQL约束类型
约束:限制行和列
五大约束:

  1. 主键约束:不能为空,并且是唯一的 primary key
    A. 单字段主键 primary key
    B. 联合主键 primary key(‘n’,‘m’)
  2. 外键约束(多表联合)
  3. 唯一约束:unique 内容可以为空,但是有字必须是唯一
  4. 非空约束:not null 该字段/列,不能有空值,必须有值
  5. 默认约束:default

主键约束
添加主键约束 :
Alter table 名称 add 字段名 数据类型 primay key
删除主键约束:
Alter table 名称 drop primary key;
修改主键约束:
Alter table 名称 modify 字段名称 primary key;

唯一约束
添加唯一约束:
Alter table 名称 modify 字段名称 数据类型 unique
删除唯一约束:
Alter table 名称 drop index 字段名

非空约束

添加非空约束:
Alter table 名称 modify 字段名称 数据类型 not null
删除非空约束:
Alter table 名称 modify 字段名 数据类型

外键约束
在表中添加外键约束
Constraint 任意名 foreign key (外键) references 表名 (主键1)

删除外键
ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;
在表外添加外键
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称);

数据表的修改
auto_increment :自动填充
Zerofull:用零填充

  1. 数据表结构的修改
    A. 修改数据表名称:rename table 旧表名 to 新表名;
    B. 修改数据表选项: alter table 表名 表选项 值;
  2. 数据表字段的修改
    A. 在数据表中添加新字段:
    Alter table 表名 add column 新字段名称 数据类型 约束类型 位置;
    B. 修改已有字段名:
    Alter table 表名 change 旧字段名 新字段名 数据类型 约束类型 位置;
    C. 修改字段类型

D. 删除字段
Alter table 表名 drop 字段名;

数据操作

  1. 数据插入
    A. 全值插入
    Insert into 表名(字段名列表) value(值列表)
    B. 多条插入
    Insert into 表名(字段名列表)values(值列表),(值列表)
    C. 选择 插入
    Insert into 表名(字段名列表) select (字段名列表) from 表名 where 条件
  2. 数据修改
    A. 选择修改
    Update 表名 set字段名=内容 where 位置
    B. 全部修改
    Update 表名 set 字段名=内容
  3. 数据删除
    Delete from 表名 where 位置
  4. 数据查询

MYSQL-----where字句
Or:或;

And:与;
<> !=:不等于;
In( ):是否存在里面;
Concat( ):连接符,两个值变为一个值
Between a an b:介于A和B之间;

删除:
Delete from 表名 where 语句;
Delete from soft where 字段名=‘内容’;
Delete from soft where 字段名<>‘内容’;
Delete from soft where 字段名!=‘内容’;

添加:
Update 表名 set 字段1=新值 where 字句;

查询:

单表查询:

Select [*] [字段列表] from 表名 where 条件 [group by 字段 [having 筛选

条件] [order by字段] limit起始值 , 个数值;

1·查询全部字段

Select * from 表名

2·查询部分字段

Select 列1,列2,… from 表名

空值查询

Is null

Is not null

模糊查询 :like | not like 通配符 :%代表任何字符 _代表一个字符

去除重复: distinct

排序 :order by 字段名 asc(升序)|desc(降序)

MYSQL-----视图
什么是视图?视图是干什么用的?

视图(view)是一种虚似存在的表,是一个逻辑表,本事并不包括数据。作为一个select 语

句保存在数据字典中的。通过视图,可以展现基本表的部分数据;视图数据来自定义的查询

中使用的表,使用视图动态生成。

基表:用来创建视图的表叫做基表 base table

为什么要使用视图?

因为视图的诸多优点,如下

    1、简单:使用视图的用户完全不需要关系后面对应的表的结构、关联条

件和筛选条件对户来说已经是过滤好的复合条件的结果集。

    2、安全:使用视图的用户只能访问他们被允许查询的结果集,对表的权

限管理并不能限制到某个列,但是通过视图就可以简单的实现 。

    3、数据独立:一旦视图的构成确定了,可以屏蔽表结构变化对用户的影

响,源表增加列对 视图没有影响;原表修改列名,则可以通过修改视图来解决,不会造成

对访问者的影响。总而言之,使用的大部分情况是为了保障数据安全性,提高查询效率。

创建视图

create [or reolace] view view_name [(column_list)]

AS select_statement (查询语句)

[with[acscaded | local]check option ] (表示视图在更新时保证在视图

的权限范围之内)

1、在表单上创建视图

    create view v_studnet(编号,姓名,性别,电话)as 

    select usersno,username,sex,userphone,from studnet where se

x=‘f’ with check option;

2、多表上创建视图 as 语句为表链接查询

查看视图

1、使用show create view 语句查看视图信息

2、视图一旦创建完毕,就可以像普通表那样使用,视图主要用了查询

3、有关视图的信息记录information_schema数据库中的views表中视图的修改

drop 删除视图

drop view 视图名称

4、不能执行dml操作的:
Select字句中包含disinct;

Select字句中包含聚合函数;

Select字句中包含group by语句;

Select字句中包含order by语句;

Select字句中包含union、union all 等集合运算符

Where语句中包含相关子查询

From语句中包含多个表

视图如果计算列则不更新

如果基表中某个具有非空约束的列未出现在视图定义中,则不能做insert操作

MySQL------索引
一、索引知识
要写出运行效率高的sql,需要对索引的机制有一定了解,下面对索引的基本知识做一介绍。
1、索引的优点和局限
索引可以提高查询的效率,但会降低dml操作的效率。
所以建立索引时需要权衡。对于dml操作比较频繁的表,索引的个数不宜太多。
2、什么样的列需要建索引?
经常用于查询、排序和分组的列(即经常在where、order或group by子句中出现的列)。
3、主键索引和复合索引
对于一张表的主键,系统会自动为其建立索引。
如果一张表的几列经常同时作为查询条件,可为其建立复合索引。
4、建立索引
Create index 名字 on 表名 (字段名); ----普通索引
Create unique index 名字 on 表名 (字段名);----唯一索引
Create index 名字 on (字段1,字段2) ----组合索引
5、删除索引
Drop index 名字 on 表名
6、索引特点
A·不同值较多的列上可建立检索,不同值少的列上则不要建。
B· 如果在索引列上加表达式,则索引不能正常使用
C· where子句中如果使用in、or、like、!=,均会导致索引不能正常使用
D·使用复合索引进行查询时必须使用前置列
二、索引分类
1、常规索引
常规索引也叫普通索引,它可以常规地提高查询效率.一张数据表中可以有多个常规索引.常规索引是使用最普遍的索引类型,如果没有明确指明索引的类型,我们所说的索引都是指常规索引.
2、主键索引
主键索引也简称主键,它可以提高查询效率,并提供唯一性约束,一张表中只能有一个主键.被标志为自动增长的字段一定是主键,但主键不一定是自动增长
3、唯一索引
提供唯一性约束,一张表中可以有多个唯一索引,当现有数据中存在重复的键值时,大多数数据库不允许将新创建的唯一索引与表一起保存。数据库还可能防止添加将在表中创建重复键值的新数据
唯一和主键索引的区别:
A·主键是一种约束,唯一索引是一种索引,两者在本质上是不同的。

    B·主键创建后一定包含一个唯一性索引,唯一性索引并不一定就是主键。

    C·唯一性索引列允许空值,而主键列不允许为空值。

    D·主键列在创建时,已经默认为空值 + 唯一索引了。

    E·主键可以被其他表引用为外键,而唯一索引不能。

    F·一个表最多只能创建一个主键,但可以创建多个唯一索引。

    G·主键更适合那些不容易更改的唯一标识

三、索引的优缺点
1、索引的优点
A·大大加快数据的检索速度;

 B·创建唯一性索引,保证数据库表中每一行数据的唯一性;

 C·加速表和表之间的连接;

 D·在使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间。

2、索引的缺点
A·索引需要占物理空间。
B·当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,降低了数据的维护速度。在创建索引之前,您必须确定要使用哪些列以及要创建的索引类型。

MySQL-------触发器
一、触发器感念
触发器是一种特殊类型的存储过程,不由用户直接调用。创建触发器时会对其进行定义,以便在对特定表或列作特定类型的数据修改时执行。
触发器从本质上来说,是一个存储过程,但是它与普通的存储过程不一样的地方在于,普通的存储过程是通过CALL方法进行调用的,而触发器不是用CALL调用,触发器是在我们提前设定好的事件出现以后,自动被调用的。
二、触发器语法
1.创建触发器
CREATE TRIGGER <触发器名称> --触发器ss必须有名字
2.查看触发器
SHOW TRIGGERS <触发器名称>
3.删除触发器:DROP TRIGGER <触发器名称>
三、为什么使用触发器
(1)MySQL早期版本的用户长期有需要触发器的要求。
(2)我们曾经许诺支持所有ANSI标准的特性。
(3)您可以使用它来检查或预防坏的数据进入数据库。
(4)您可以改变或者取消INSERT, UPDATE以及DELETE语句。
四、触发器的主要用途
触发器主要用于在多个有相互关系的表之间,做一些相互关联的操作。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值