由于Mysql处于开源状态,加上机缘巧合之下,便接触了MySql数据库。 之前本科的时候学过了SQL Server, 所以上手MySQL也很容易(可能是自己接触的部分超级简单吧,哈哈~自high一下)。下面看下今天的主题:
1.PRIMARY KEY 和 UNIQUE KEY 的区别
PRIMARY KEYs(主键):(1)每一行数据独一无二的标识(2)一个表必须有主键(只能有一个主键)(3)不能为NULL(空值)(4)由一列或者多列组成。
UNIQUE KEY : (1)表示该项数据不能重复 (2)允许一条可以为NULL
相同点:(1)PRIMARY KEY 和 UNIQUE KEY 都是用来保证列上数据的为原型 (2)都可以在一列或者多列上加
总结:一张表只能有一个 PRIMARY KEY,但可以有很多 UNIQUE KEY。 当给一列设置为 UNIQUE KEY 之后,该列上不能有相同的数据。 PRIMARY KEY 不允许有 NULL值,但是 UNIQUE KEY 可以。如果 PRIMARY KEY 的1个或多个列为NULL,在增加PRIMARY KEY时,列自动更改为 NOT NULL 。而UNIQUE KEY 对列没有要求是通过参考索引实施的,如果插入的值均为NULL,则根据索引的原理,全NULL值不被记录在索引上,所以插入全NULL值时,可以有重复的,而其他的则不能插入重复值。
顺带说一下Foreign key(外键),它表示这列数据引用了另外一个表的主键。
2.增删改查命令
(1)创建表
create table tablename(
col_name_1 type not null auto_increment,
col_name_2 type default,
primary key(col_name_n)
);
(2)插入
insert into tablename(col_name_1,col_name_2,col_name_3)
values(value1, value2, value3, value4, value5);
(3)更新(修改)
update tablename set col_name_1 = value, col_name_2 = value where condition;
(4)删除
delete from tablename where condition;
(5)查询
select column_list from tablename
where filter_condition //条件
order by column_list (desc) //升序还是降序
limit rom_limit; //结果限制
注意:在查询的适合,可以通过as修改这一列的列名,但无法修改真实表的列名。
(6)Where条件
1)数字 >大于 <小于 =等于 ≥大于等于 ≤小于等于 <>不等于
2)字符串 = ‘’ >大于 <小于 =等于 ≥大于等于 ≤小于等于 <>不等于 !=不等于
3)逻辑操作 and与 or或 not非 注意: and的优先级大于or
where condition1 and condition2 or condition3;//是否同时满足条件1,2或者满足条件3
4)范围判断
where col_name in (范围1, 范围2, ...); //在该范围内
where col_name not in(范围1, 范围2, ...); //不在该范围内
where col_name between 范围1 and 范围2; // 介于范围1与范围2之间的数据
eg:where col_name between 1 and 9; //取得[1,9]之间的数据
where col_name not between 范围1 and 范围2;// 不介于范围1与范围2之间的数据
where col_name like 表达式;(not like) //模糊查询
eg1:where col_name like 'a%'; //%代表0个或多个任意字符
eg2:where col_name like 'a_'; //_代表1个任意字符
5)关于NULL的条件 is NULL is not NULL 注意:is仅用is null 或 is not null.
3.常用SQL命令
show databases; //查看所有数据库
desc tablename; //查看表结构
drop table tablename; //删除指定表
drop database databasename; //删除指定数据库
select * from tablename limit x; //查询前x条数据
select * from tablename limit x1,x2;//删除前x1条数据,从x1+1开始查询x2条数据 用于分页查询
select distinct col_name from tablename; //去掉该列重复的值
4.SQL中的静态值
学习文档:https://dev.mysql.com/doc/refman/8.0/en/functions.html
select 'some string';
select 1+1; //加法运算
select now(); //获取当前系统具体时间
select curdate();//获取当前日期
select curtime();//获取当前系统时间;
select pi(); //Π值
select mod(45,7); //取余
select sqrt(25); //开方
select round(4.5); //四舍五入 5
select round(col_name, x); //四舍五入保留x位小数
eg: select round(4.44, 1); //四舍五入保留1位小数 4.4
select floor(45.23); //直接舍弃小数 45
select ceiling(45.23); //直接入 46
5.SQL中的数学运算
select 7*8; //56
select 7/8; //0.8750
select 7 div 8; //0
select 7.1%8; //7.1
select 7.1 mod 8; //7.1
select 7+8; //15
select 7-8; //-1
6.SQL中的字符串操作
select concat(col_name_1,col_name_2,...); //将参数里面所有字符串连接起来
select left(col_name_1,x); //取得改字符串前x个字符
select length(col_name); //获取该列字符串的长度
select reverse(col_name); //获取该列字符串的逆序字符串
select repalce(col_name, str1 , str2); //将该列字符串的指定字串str1替换成str2
//日期操作
select data_format(col_name, '%y/%m/%d'); //将日期列按照年月日的格式输出;
//若想其它格式输出则参考 https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_date-format
select quarter(date) //返回季节 返回值为1~4
7.Mysql数据库备份与恢复
备份(Data Export):
(1)Export to Dump Project Folder :按照单个表的格式进行导出
(2)Export to Self-Contained File: 将整个数据库导出为一个sql文件 (优先考虑)
恢复(Data Import/Restore):怎样导出就怎样导入
(1)按照导出方式选择对应的导入方式
(2)点击New DB 新建一个目标数据库
(3)点击开始导入按钮