mysql基础知识
Mysql
数据库的介绍:
定义:高效的处理数据的介质
A. 硬盘
B. 内存
仓库:存储数据的仓库:有规律的储存数据
2. 分类
根据存储介质的不同可以分成两类:
A. 关系型数据库 : 二维表(行和列组成的一张二维表)
大型:Oracle、DB2
中型:SqlServer、MySQL
小型:Acces
B. 非关系型数据库 :键值对 key—— value hash
Redis、MongoDB、memcached(缓存 )
3. 区别
关系型数据库:
优点:安全,数据保存在硬盘中;基本上不可能出现数据丢失的情况4
缺点:比较浪费空间
非关系型数据库
优点:直接操作内存,存储数据的效率比较高;
缺点:安全性较低
关系型数据库
- 定义
建立在关系模型(教学模型)上的数据库
关系模型:
数据结构:数据储存形式(二维表(行和列)的形式)
操作指令集合:所以SQL语句
完整性约束:表内约束和表与表之间的约束(外键约束) - 设计
- 关键词
DB:database(数据库)
DBMS:datebase mangement system (数据库管理系统)
DBA:datebase administratorn (系统库管理员)
DBS:datebase system (数据库系统)
行/记录/:row/record
列/字段:column/field - 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
浏览器端 服务器端
优势:
- 运行速度快;
- 体积小;(可以实现相同功能前提下:Oracle、SQLserver)
- 复杂程度较低,比较容易学;
- 可移植性比较好:Windows、macOS、Linux、Unix;
- 接口比较丰富:C语言、C#、Python、PHP等都提供了相应的API接口;
- 安全;
- 免费的;
使用:
现在客户端链接软件: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约束类型
约束:限制行和列
五大约束:
- 主键约束:不能为空,并且是唯一的 primary key
A. 单字段主键 primary key
B. 联合主键 primary key(‘n’,‘m’) - 外键约束(多表联合)
- 唯一约束:unique 内容可以为空,但是有字必须是唯一
- 非空约束:not null 该字段/列,不能有空值,必须有值
- 默认约束: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:用零填充
- 数据表结构的修改
A. 修改数据表名称:rename table 旧表名 to 新表名;
B. 修改数据表选项: alter table 表名 表选项 值; - 数据表字段的修改
A. 在数据表中添加新字段:
Alter table 表名 add column 新字段名称 数据类型 约束类型 位置;
B. 修改已有字段名:
Alter table 表名 change 旧字段名 新字段名 数据类型 约束类型 位置;
C. 修改字段类型
D. 删除字段
Alter table 表名 drop 字段名;
数据操作
- 数据插入
A. 全值插入
Insert into 表名(字段名列表) value(值列表)
B. 多条插入
Insert into 表名(字段名列表)values(值列表),(值列表)
C. 选择 插入
Insert into 表名(字段名列表) select (字段名列表) from 表名 where 条件 - 数据修改
A. 选择修改
Update 表名 set字段名=内容 where 位置
B. 全部修改
Update 表名 set 字段名=内容 - 数据删除
Delete from 表名 where 位置 - 数据查询
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语句。
四、触发器的主要用途
触发器主要用于在多个有相互关系的表之间,做一些相互关联的操作。
本文地址:https://blog.****.net/weixin_43535057/article/details/110959333
推荐阅读
-
将MySQL命令行的显示数据提取为文本方法[图文]
-
MySQL修改root密码_MySQL
-
mysql5.0触发器后门尝试_MySQL
-
简单的图形计数器需要MYSQL,GD的支持_MySQL
-
MySQL的MyISAM存储引擎修复及修改最大文件大小
-
MySQL管理利器:phpMyAdmin 3.0.1.1发布下载
-
关于eval 与new Function 到底该选哪个?_基础知识
-
MySQL 半同步复制(semi_sync_replication)搭建及使用
-
mysql 1045 access denied for user 解决方法_MySQL
-
PHP MYSQL乱码问题,使用SET NAMES utf8校正_PHP教程