mysql安装简单总结
如果忘记密码怎么办?
- 1.找到my.ini 文件
- 2.设置权限认证跳过 也就是在 [mysqld] 下 加上 skip-grant-tables
- 3.重启 mysql 服务
这里可以直接在命令行中连续输入 或者在服务里找到mysql 服务重启
重启后, 以 mysql -uroot -p 登陆 会发现我们可以不需要密码就可以登陆
- 4.重新设置密码
首先先选择 mysql 数据库
- 然后更新 password
- 5.在 my.ini 文件中去掉 加上的 skip-grant-tables
- 6.重启 mysql 服务
- 7.以新密码登陆命令行进入 mysql 环境
修改字符集编码
- 在mysql的安装目录下面创建一个 my.ini 配置文件(unxi系统是 my.cnf 文件),文件中写上以下内容:
1.创建数据库
- 语法
- 数据库命名规则
- 可以由字母、数字、下划线、@、#、$
- 区分大小写
- 唯一性
- 不能使用关键字,如 create select
- 不能单独使用数字
- 最长128位
2.数据库相关操作
1.查看数据库
2.选择数据库
3.删除数据库
4.修改数据库
3.数据表相关操作
引擎简单使用
1.创建表时指定引擎
2.在配置文件中指定默认的存储引擎
3.不同引擎在创建表的时候生成文件不同
创建四个表,分别使用innodb, myisam, memory, blackhole存储引擎, 进行插入数据测试
建表语法
示例代码
插入数据
查看表结构
MySQL的基本数据类型
- 数值类型
浮点型测试
日期类型
类型:date, time, datetime, timestamp, year
作用:存储用户注册时间,文章发布时间,员工入职时间,出生时间,过期时间等
日期类型测试
字符串类型
类型:char, varchar
作用:名字,信息等等
char和varchar性能对比:
以char(5)和varchar(5)来比较,假入我要存三个人名:sb, ssb1, ssbb2
char:(存储块,浪费空间,安全性低)
优点:简单粗暴,不管你是多长的数据,我就按照规定的长度来存,5个5个的存,三个人名就会 类似这种存储:sb ssb1 ssbb2,中间是空格补全,取数据的时候5个5个的取,简单粗暴速度快
缺点:貌似浪费空间,并且我们将来存储的数据的长度可能会参差不齐
varchar:(存储慢,节省空间,安全性高)
varchar类型不定长存储数据,更为精简和节省空间
例如存上面三个人名的时候类似于是这样的:sbssb1ssb2, 连着的
优点:节省了一些硬盘空间,一个accsii吗的字符用一个bytes长度就能表示,但是也并不一定比char省,看一下官网给出的一个表格对比数据,当你存的数据正好是你规定的长度的时候,varchar反而占用的空间比char要多。
缺点:存取速度都慢
其他的字符串类型:binary、varbinary、blob、text
枚举和集合
字段的值只能在给定范围中选择,如单选框,多选框,如果你在英语程序或者前端不做选项限制,在MySQL的字段里面也能做 限制
enum单选 只能在给定的范围内选一个值,如性别sex 男 male/女 female
set多选 在给定的范围内可以选择一个或一个以上的值(爱好1,爱好2,爱好3…)
测试
表的完整性约束
介绍
约束条件与数据类型的宽度一样,都是可选参数
作用:用于保证数据库的完整性和一致性
主要分为:
说明
not null与default
是否可空,null表示空,非字符串 not null - 不可空 null- 可空
测试
注意一点:如果是非严格模式,int类型不传值的话会默认为0,因为null不是int类型的,字段是int类型,所以它会自动将null变为0
unique
独一无二,唯一属性:id,身份证号等
是一种key,唯一键,是在数据类型之外的附加属性,其实还有加速查询的作用,后面再讲这个。
创建unique
创建联合唯一
primary key
从约束角度看primary key字段的值不为空且唯一,那我们直接使用not null+unique不就可以了吗,要它干什么?
主键primary key是innodb存储引擎组织数据的依据,innodb称之为索引组织表,一张表中必须有且只有一个主键。
一个表中可以:
单列做主键 多列做主键(复合主键或者叫做联合主键)
在没有设置主键的时候,not null+unique会被默认当成主键
单列主键测试
联合主键解释
多列(联合)主键测试
auto_increment
约束字段为自动增长,被约束的字段必须同时被key约束,也就是说只能给约束成key的字段嘉自增属性,默认起始位置为1,步长也为1。
auto_increment测试
foreign key
快速理解foreign key(外键其实就是标明表和表之间的关系,表和表之间如果有关系的画就三种:一对一,多对一,多对多)
总结一下foreign key的下面的几个约束作用:
1.先要建立被关联的表才能建立关联表
2.在插入数据记录的时候,要先想被关联表中插入数据,才能王关联表里面插入数据
3.更新或者删除数据的时候,都需要考虑关联表和被关联表的关系
解决方案:
a.删除表的时候,先删除关联表,再删除被关联表
b.重建表的时候,在加外键关联的时候加上这两句:on delete cascade 和 on update cascade
一对多简单示例
多对多简单示例
一对一简单示例
修改表 alter table
给一个字段添加外键属性的语句:alter table 表2名 add foreign key(表2的一个字段) references 表1名(表1的一个字段);
注意一点:在mysql里面表名是不区分大小写的
简单示例:
MySQL数据操作:DML
1.插入数据insert
语法
2.更新数据update
3.删除数据delete
4.查询数据select
关键字的执行优先级(重点)
简单查询
查询操作示例
where约束
where语句中可以使用:
- 1.比较运算符:> < >= <= <> !=
- 2.between 80 and 100 值在80到100之间
- 3.in(80,90,100) 值是80或90或100
- 4.like 'egon%'
- 5.逻辑运算符:在多个条件直接可以使用逻辑运算符 and or not
示例如下:
分组查询group by
为什么要分组?
注意:
聚合函数
having过滤
having与where不一样的地方在于!!!!!!
having简单测试
distinct去重
查询排序order by
limit显示查询的记录数
正则表达式查询
5.多表查询
多表连接查询
交叉连接:不适用于任何匹配条件。生成笛卡尔积
补充一点:select查询表的时候,后面可以跟多张表一起查询下:
内连接:只连接匹配的行
但是你看上面的代码有没有上面不太好的地方,是让我们能够完成我们的事情,但是代码可读性不好,所以以后不要这么写
所以mysql为我们提供了一些专门做连表操作的方法
外连接之左连接:优先显示左表全部记录
外连接之右连接:优先显示右表全部记录
全外连接:显示左右两个表全部记录
子查询
看操作
带in关键字的子查询示例
带比较运算符的子查询示例
带exists关键字的子查询示例
exists关键字表示存在。在使用exists关键字时,内层查询语句不返回查询的记录。而是返回一个真假值。True或False 当返回True时,外层查询语句将进行查询;当返回值为False时,外层查询语句不进行查询。还可以写not exists,和exists的效果就是反的
们把上面的查询结果用括号括起来,它就表示一条id=200的数据,然后我们通过员工表来查询dep_id=这条数据作为条件来查询员工的name
select name from employee
where dep_id = (select id from department
where name = ‘技术’);
带in关键字的子查询示例
带比较运算符的子查询示例
带exists关键字的子查询示例
exists关键字表示存在。在使用exists关键字时,内层查询语句不返回查询的记录。而是返回一个真假值。True或False 当返回True时,外层查询语句将进行查询;当返回值为False时,外层查询语句不进行查询。还可以写not exists,和exists的效果就是反的
到此这篇sql文件转换word(sql文件转换工具)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/sqlbc/33882.html