一、 MySQL 介绍及安装
1. 相关定义和特点
数据(Database,简称DB):描述事物的基本符号。在现实生活中。任何可以用来描述事物属性的数字、文字、图像、声音等等,都可以看做数据。
数据库(Database Management System,简称DBMS):存放数据的仓库,数据库中的数据是按照一定的格式存放的。
MySQL:是现流行的开源、免费的关系型数据库。
MySQL特点:1.开源、免费;2.小巧;3.支持跨平台使用;4.功能强大,使用方便。
2. 安装
下载:MySQL官网下载安装包。安装和卸载用同一安装包
安装注意事项:端口 3306,编码 utf8
安装后需配置环境:环境变量—path路径—添加MySQL的bin目录
二、数据库基本操作
1. 登录数据库
CMD: mysql -uroot -p回车输入密码;mysql -uroot -p123456 直接接密码会警告。
Navicat: 连接MySQL
2. 数据库模式定义语言DDL(Data Definition Language)
创建create
创建数据库:create database[if not exists] 数据库名;
#默认字符集 utf8,排序规则 general_ci(模糊大小写)
创建数据表: create table[if not exists] 表名(字段名1 列类型[属性] [索引][注释]...)[表类型][表字符集][注释];
修改alter
修改表名:alter table 旧表名 rename as 新表名;
添加字段:alter table 表名 add 字段名 列类型[属性];
修改字段:alter table 表名 modify 字段名 列类型[属性]; alter table 表名 change 旧字段名 新字段名 列类型[属性];
删除字段:alter table 表名 drop 字段名
删除drop
删除数据库:drop database [if not exist] 数据库名;
删除数据表:drop table [if not exist] 表名;
查看和使用
查看数据库:show databases;
CMD切换数据表: use 数据库名;
查看数据表:show tables;
查看数据表结构:desc 表名;
3、数据操纵语言DML(Data Manipulation Language)
添加数据:insert into 表名 [( 字段1, 字段2, 字段3, ... ) ] values ( '值1', '值2', '值3', ...)
eg. 表间复制: insert into 新表名(字段) select 字段 from 旧表名;
修改数据:update 表名 set column_name=value [,column_name2=value2,... ]WHERE condition];
删除数据:delete from 表名 [where condition]; #针对table和view
truncate [table] 表名 #只针对table;更快;重设auto_increment计数器;对事务无影响
速度上说,drop> truncate > delete
4、数据查询语言标准语法DQL(Data QueryLanguage)
SELECT [ALL| DISTINCT]
{ *| table.*| [ table.field1[ as alias1][, table.field2[as alias2]][,…]] } #*=all
FROM table_name [as table_alias ] #as取别名,对数据无影响
[left|out|inner join table_name2]
#联合查询select 字段1,字段2,...from 表1 inner|rig*|lef* join 表2 on 表1.字段x=表2.字段y;
[WHERE …] #like: %匹配一或多个字符,_匹配单个字符;A in (a1,a2,a3) [GROUP BY …] #分组统计
[HAVING …] #分组后筛选,与group by一起使用
[ ORDER BY…] #order by 字段1 desc[,字段2 asc]。 默认是asc
[LIMIT { [offset,] row_count | row_countOFFSET offset }] ;
#limit[m,]n 或 limit n offset m 返回m+1条到n条记录,m默认为0
[] 括号代表可选的;{} 括号代表必须的;#MySQL语句中的注释符,也可以用/*该处为注释*/
四、视图
1、含义:一个虚拟表,是从数据库中一个或者多个表中导出来的表。
2、作用:简单性、安全性、逻辑数据独立性
3、语法
创建视图 create view 视图名 as select 字段1 [,字段2....] from 表名;
create view 视图名(新字段名,...) as select 原字段名,... from 表名; #视图自定义列名
查看视图
select * from 视图名; #查看视图详细信息
desc 视图名; #查看视图表结构
show table status like 视图名; #查看视图表状态
show create view 视图名; #查看视图创建信息
修改视图:alter view 视图名 as select 字段1 [,字段2....] from 表名;
更新视图数据:
更新视图数据会同步更新原表。不建议视图更新数据,最好回原表更新。因为视图仅用于查看
删除视图:drop 视图名1 [,视图名2,...] [if exists] #需要有drop权限
四、事务
1、定义:用户定义的一个数据库操作序列。这些操作要么全做,要不全部做,例如银行转账。
2、ACID原则:
原子性(Atomic) 最小单元,保证多个操作作为一个处理过程同生共死;
一致性(consist) 如有步骤失败,整个过程回滚(rollback);所有步骤成功,整个过程提交(commit);
隔离性(Isolated) 事务之间相互独立,互不影响;
持久性(Durable) 事务成功提交后,会被永久存储下来,状态不再改变。
3、MySQL事务实现步骤
五、触发器
1、定义:在某种操作执行的同时触发另一种操作
2、触发器创建语法四要素
监视地点(table);
监视事件(insert/update/delete);
触发时间(after/before);
触发事件(insert/update/delete)
3、触发器语法
create trigger <触发器名称>
{ before| after}
{ insert| update| delete}
on 表名
for each row
begin
<触发器SQL语句> #update 表名2 set count=count+1,modify_date-now();
end;
# 触发器删除: drop Trigger 触发器名称
#查看触发器和视图信息: 在information_schema
六、日期函数和日期格式化
1、日期函数
当前日期和时间 now()
当前日期 Curdate()
当前日期的未来5年 date_add(date,interval expir unit)
#例 date_add(Curdate(),interval 5 year)
当月最后一天 last_day(curdate())
当月第一天 date_add(Curdate(),interval -day(curdate)+day)
2、日期格式化
Date_Format(date,format)
Y完整年 y取后两位年 M英语月份 m数字型月
D英语日 d数字型日 H 24进制时 h 12进制时 i分钟 s秒
#例 Date_Format('2017-11-11','%Y-%m') Date_Format('2017-11-11','%Y/%m')
七、数据库备份和还原
1、数据库备份(三选一)
a、Navicat数据库右键 “转储”;
b、从MySQL/data文件夹中拷贝相关数据库;
c、CMD命令行:mysqldump -h 主机名 -u 用户名 -p [option] 数据库名 [表1,....] >预存路径
#例mysqldump - u root -p 数据库名 >路径;
#查找mysqldump帮助信息(关于option) mysqldump -?
2、数据库还原
a、Source语法: source /路径/数据库(表)名.sql #要先创建或选择数据库
b、CMD命令行:mysql -u root -p 数据库(表)名 <路径/数据库(表)名.sql
c、Navicat数据库右键 “运行MySQL文件”;
3、数据导出
a、cmd命令行:select * into outfile '路径/数据表名.sql' from 表名;
#如已存在输出的文件,会报错
b、Navicat设计表-导出向导;
4、数据导入
a、load data infile '路径/数据表名.sql' into table 表名; #要先有表结构
b、Navicat设计表-导入向导;