复习一下以前学过的数据库知识
在mysql配置文件my.ini中默认配置了数据库文件存放目录
datadir="C:/ProgramData/MySQL/MySQL Server 5.5/Data/"
mysql库选项 : 只有字符集,校对集的概念.
在数据库目录下db.opt文件中
default-character-set=utf8
default-collation=utf8_general_ci
校对集,指的是,在某个字符集下,字符的排序关系应该是什么,称之为校对集
典型的后缀:
_bin 二进制编码层面直接比较:
_ci 忽略大小写(大小写不敏感)比较
_cs 大小写敏感比较
我们一般选择忽略大小写的校对集.
数据库名:Windows不区分大小写,linux区分.
数据库管理操作命令
查询语句 show databses
可以使用通配符(通用匹配符,可以匹配多个字符)
% 匹配任意字符的任意次数(包括0次)的组合!
_ 匹配任意字符的一次!
注意如需要匹配特定的通配符,则需要对通配符转义,使用反斜杠完成转义
修改语句
alter database 数据库名 只能修改数据库选项,即校对集和字符集
删除语句
drop database 名字
表操作
建表语句
修改表选项
alter table table_name [新选项]
增加字段
alter table table_name add column 字段定义 [字段位置]
修改已有字段(只能修改字段定义)
alter table table_name drop column column_name;
增加字段
alter table table_name modify column column_name 新的定义!
可以修改位置
字段改名
alter table table_name change column 原字段名新字段名新字段定义!
注意,不是纯粹的改名,而是需要在修改定义的同时改名!
数据存储的编码
确定数据的存储编码是由以下的方案完成的:
1, 先看字段的编码!如果存在则确定完毕!
2, 如果字段没有设置编码,查看表的编码,如果有,则确定数据编码!
3, 如果表没有编码,查看库的编码,如果有,则确定数据编码!
4, 如果库也没有编码,则有服务器程序确定!
客户端操作,查询的编码
在客户端与服务器端交互时,存在两个重要的编码:
1. 客户端发送数据的编码
2. 客户端接收到服务器数据编码.
set names gbk,就是一个快捷操作,将上面两个配置同时更改成目标编码.
列约束,字段属性
null,not null属性约束
mysql的NULL不是数据,也不是类型!只是标识属性!
用于说明某个字段,是否可以为null(是否可以什么都不存)
NULL采用关键NULL表示!(不是字符串)
是:NULL,而不是:‘NULL’
default 默认属性值约束
采用 default 关键字,来限定一个字段的默认值,在没有指定字段数据时,采用默认值
如果一个字段没有指定默认值,那么默认为NULL
current_timestamp,用在第一个时间戳类型的字段上,表示当前的时间
典型在很多表上增加一个 update_time 将其默认值设置成 current_timestamp。就可以记录下当前记录的最后操作时间
主键约束/唯一约束
删除主键:
alter table表名 drop primary key;
添加主键
alter table 表名 add primary key(‘字段列表’);
删除唯一
alter table 表名 drop index index_name
查看索引名字 show create table
增加唯一
alter table 表名 add unique key 索引名字 (字段列表)
自动增长 auto_increment
用于主键,只有一个字段主键,才能使用auto_increment!
可以,从1开始,逐一递增的数值!
目的是保证唯一,计算方面!
unsigned,不是列属性,是类型的一部分(包括zerofill)因此位置上与类型在一起
comment 注释
外键约束
约束的作用,是用于保证数据的完整性或者合理性的工具!
外键:foreign key,当前表内,指向其他表的主键的字段,称之为外键!
虚拟表名 dual
只是为了语法更加规范, 没有实际意义.
例如 : select 1 + 1 from dual;
with rollup
对group by 分组后的每个结果再进行一次统计
使用with rollup 后
视图
只是一张select出来的虚拟表, 不保存真实数据.
mysqldump 备份
mysqldump -h127.0.0.1 -p3306 -uroot -p data > data.sql 将data数据库备份生成data.sql
在不使用on语法时,join、inner join、逗号、cross join结果相同,都是取2个表的笛卡尔积。逗号与其他操作符优先级不同,所以有可能产生语法错误,尽量减少用逗号
join、inner join、cross join支持on和using语法,逗号不支持on和using语法