MySQL 手记(1)
注:摘自《MySQL入门很简单》
下载安装
dev.mysql.com
优势:开源、开放跨平台、价格优势、功能全。
数据库存储阶段:人工管理阶段、文件系统阶段、数据库系统阶段。
数据库泛型:数据库应该遵循的规则。第一(表中字段不能重复)、二、三、BCN范式。
数据库技术主要包括数据库系统、SQL语言、数据库访问技术。
数据库系统(DBS):数据库、数据库管理系统(DBMS,是用来定义数据、管理和维护数据的软件)、应用开发工具(是使用数据库的软件)。
SQL(结构化查询语言):管理数据库。DDL(定义语言)、DML(操作语言)、DCL(控制语言)
数据库访问技术:c#(ODBC)、Java(JDBC)、PHP(mysqli)
常用数据库:
命令行登录数据库:mysql -u root -p
创建数据库
show databases; //显示已经存在的数据库
create database 数据库名;
删除数据库:drop database 数据库名;
注:删库需慎重,因为会将库中的所有数据全部删除,应当先备份。
数据类型:整数(int)、浮点数、定点数类型;日期和时间类型(datatime);字符串类型(char、VARCHAR、longtest);二进制类型(BLOB)。
常见问题:
MySQL报错:Can't connect to MySQL server on localhost (10061)
https://blog.csdn.net/*g861/article/details/78919060
安装时最后一步未响应:
打开C盘,然后设置显示隐藏文件,然后找到programData,进去找到mysql,删除,重新安装。
在命令行用net start mysql 开启服务应要有管理员权限
卸载MySQL后仍存在MySQL服务:
在管理员权限中的命令行输入:sc delete mysql
------------------------------------------------------------------------------------------------------------------
数据库存储引擎(表的类型,插入式概念)
show engines \G 或 show variables like 'have%';
查看默认存储引擎(InnoDB): show variables like 'storage_engine';
若想更改默认引擎可在my.ini文件中修改"default-storage-engine=INNODB"
InnoDB引擎:提供了良好的事务管理、崩溃修复能力和并发控制,但读写效率稍差,占用的数据空间相对比较大。
MyISAM引擎:占用空间小,处理速度快,但不支持事物的完整性和并发性。
MEMORY引擎:处理速度非常快,但其数据已丢失,生命周期短,选用时应特别小心
------------------------------------------------------------------------------------------------------------------
表
表是数据库存储数据的基本单位,一个表包含若干个字段或记录。
创建表,语法如下:
首先要选择数据库:use 数据库名;
完整性约束条件要求用户对该属性进行的操作符合特定的要求,若不满足,数据库将不执行用户的操作,其目的是为了保证数据库中数据的完整性。
主键(必须是唯一的,值为非空值,可以是一个字段,也可是多个字段,主要目的是帮助MySQL以最快速度查找到表中的某一条信息)
多字段主键:
外键:
设置表外键的原则是必须依赖于数据库中已存在的父表的主键,值可以为空。作用是建立该表与其父表的关系。父表删除某条信息,子表信息也会有相应的改变。语法如下:
创建外键:
注:子表的外键关联的必须是父表的主键,而且,数据类型必须是一致的。
设置表的非空约束:属性名 数据类型 NOT NULL
设置表的唯一性约束:属性名 数据类型 NOT UNIQUE
设置表的属性值自动增加:
设置表的属性的默认值:属性名 数据类型 DEFAULT 默认值
查看表的结构:DESCRIBE 表名;或 DESC 表名;
查看表详细结构:SHOW CREATE TABLE 表名;
修改表名:
修改字段的数据类型:
修改字段名:
增加字段:
删除字段:
修改字段的排列位置:
更改表的引擎(如果表中存在较多数据最好不要轻易更改引擎):
删除表的外键约束:
删除没有被关联的普通表:DROP TABLE 表名;
删除被其他表关联的父表:先删除子表的外键约束,再删除父表;
------------------------------------------------------------------------------------------------------------------
索引
索引是一种特殊的数据库结构,可以用来快速查询数据库表中的特定记录,由表中一列或多列组合而成,其作用是提高对表中数据的查询速度。但创建和维护索引需要耗费时间。不同的存储引擎定义了每个表的最大索引数和最大索引长度。
分类:普通、唯一性、全文、单列、多列、空间索引。
索引的设计原则
创建索引:
1.创建表时建立索引:
查看索引是否被使用:
2.在已经存在的表上建立索引:
3.用AILTER TABLE语句来创建索引:
删除索引
常见问题:
------------------------------------------------------------------------------------------------------------------
视图
视图(不支持输入参数)是由数据库中的一个表或多个表导出的虚拟表,其作用是方便用户对数据的操作。
视图的作用:1.使操作简单化。2.增加数据的安全性。3.提高表的逻辑独立性。
创建视图:
使用SELECT语句查询是否具有相应的权限:
在单表上创建视图:
在多表上创建视图:
查看视图:
1.DESCRIBE 视图名;或 DESCRIBE 视图名;
2.SHOW TABLE STATUS LIKE '视图名';
3.SHOW CREATE VIEW 视图名;
在view表中查看视图的详细信息:
修改视图:
更新视图:
删除视图(只能删除定义,不会删除数据):
------------------------------------------------------------------------------------------------------------------
触发器
创建只有一个执行语句的触发器:
创建有多个执行语句的触发器:
查看触发器:
查看所有触发器:SHOW TRIGGERS;
在triggers表中查看触发器:
触发器执行的顺序:BEFORE 触发器、表操作(INSERT、UPDATE、DELETE)和AFTER触发器
删除触发器:DROP TRIGGER 触发其名;