MySQL入门 和 SQL语句

1 什么是MySQL?

MySQL原本是一个开放源码的关系数据库管理系统,把数据保存在不同的表中,而不是堆一起,所以它的灵活性强、速度也快,

而且因为它体积小、速度快、成本低、最主要是开放源码,所以中小型的公司都使用它作为网站数据库。

SQL是MySQL中用来访问数据库的结构化查询语言

 

2 MySQL特点?

体积小 、使用成本低 、可移植性强 、适用用户范围广

 

3 什么是数据库?

【数据库 】DataBase(DB)
数据库就是按照数据结构来组织,存储和管理数据的仓库
数据库提供了很多功能,可以通过SQL语句来定义来操作数据

【数据库管理系统】(DataBase Management System,DBMS

操作和管理数据库的大型软件,用于建立、使用和维护数据库

常见的数据库管理系统

MySQL : 开源免费的数据库, 小型的数据库, 被Oracle收购了,  但是MySQL的应用场景多

Oracle   : 收费的大型数据库 ,但是Oracle要比MySQL强大, Oracle里面的数据库管理、监控基本都是配套的。Oracle收购 SUN公司、收购MySQL

SqlServer: Microsoft 公司收费的中型的数据库。 C#、.net等语言常使用

数据库三大范式:

第一范式:原子性,不可分割

第二范式:就是完全依赖,没有部分依赖;【表中必须有一个主键;没有包含在主键中的列必须完全依赖于主键,而不能只依赖于主键的一部分】

第三范式:就是没有传递依赖

【关系型数据库】

关系: 一张二维表,每个关系必须有一个关系名,也就是俗称的表名
字段/属性:二维表中的一列
记录/元祖:二维表中的一行
超键(super key):在关系中能唯一标识元祖的属性集称为关系模式的超键
候选键(candidate key):不含有多余属性的超键, 
主键(primary key):用户选作元祖标标识一个候选键
外键:用于关联两张表
范式:符合某一级别的关系模式的集合,构造数据库的表必须遵循一定的规则

 

4 MySQL安装

 1 安装

参考MySQL安装图解.doc

 

 

2 配置MysQL服务

找到你所安装MySQL的 目录, 找到bin 里面的这个应用程序

 

 

打开就是这个样子的

 

 

 

 

 3 启动和关闭  (以管理运行cmd命令窗口)

 

 

 

 

 4 登录

格式1:cmd>  mysql –u用户名 –p密码

例如:mysql -root–root

 

 

 

格式2:cmd>  mysql --user=用户名 --host=ip地址 --password=密码

cmd命令窗口

启动服务

任务管理器--mysql

控制面板---服务--mysql

cmd ---start mysql

2.启动mysql

1.开始--mysql--命令符

2.cmd: mysql -uroot -proot

3.Sqlyog:视图化工具

3.mysql的命令

--设置cmd显示的编码集 set names gbk;

--help 数据类型 mysql的帮助命令 在cmd中写

 

 

 

5  SQLyog 安装与使用

安装 : 提供的SQLyog 是免费的,可以直接使用

 

使用:

 

 

 输入用户名、密码,点击连接按钮,进行访问MySQL数据库进行操作

 

 

 在Query窗口中,输入SQL代码,选中要执行的SQL代码,按F8键运行,或按执行按钮运行。

 

6 什么是SQL?

SQL全称是“结构化查询语言(Structured Query Language)
SQL(STructured Query Language)是一种资料库查询和程式设计语言,用於存取资料以及查询、更新和管理关联式资料库系统。
SQL同时也是数据库文件格式的扩展名。

什么是sql注入?

就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令

 

7 事务

事务:是数据库中提供的一种机制,一个操作序列。它包含了一组数据库操作命令,将这些命令作为了一个整体,是一组必须要同时完成或同时取消的操作组成,是不可分割的工作单元

事务的属性(ACID):

原子性(Atomicity) : 事务是一个完整的操作,不可再分,必须作为一个整体提交或回滚

一致性(Consistency): 事务完成时,数据应该保持一致,如银行转账:2个用户的总金额应该在事务前后金额一致

隔离性(isolation) :当有事务对数据进行操作时候,其他事务应该要等待该事务操作完毕

持久性(durability) : 事务一旦提供成功,事务的结果是永久的改动到数据库

 

8 SQL语句

1创建表

1.删除表 drop table [if exists] 表名;

2.创建表 create table [if not exists] 表名 (

字段1 数据类型 [字段属性|约束][索引][注释],
字段n 数据类型 [字段属性|约束][索引][注释]

)[表类型][表字符集][注释];

【注意:1、如果数据库名,表名,字段名等与保留字冲突,用【撇号(‘)】括起来
2、多个字段使用【逗号】隔开
3、单行注释:# 多行注释:/*…*/
4、设置为自动增长: auto_increment

3.查看表 show tables;

4.显示创建表的sql show create table 表名;

5.查看表的定义 describe 表名; 或者 desc 表名;

6.显示当前表状态值 show table status like '表名';

7.清空表数据,序列号从1开始 truncate table 表名;

8.设置mysql显示编码 set names gbk ; //解决查询出中文数据乱码问题

示例:
drop table if exists 表名

create table if not exists 表名 #if not EXISTS判断是否存在
(
id int primary key comment '主键' auto_increment, #主键,自动增长(默认从1开始,每次自动增长1) COMMENT 注释的意思

name varchar(50) not null comment '姓名' UNIQUE key, #unique key 唯一约束

address varchar(50) default '地址不详' comment '地址', #default ‘默认值’ 【注意:如果有中文,需指明charset='utf8'】

testId Int unsigned #unsigned无符号

primary key(主键列[,主键列2])#可以定义复合主键 示例,primary key(id,name)

)comment ='测试' charset = 'utf8' auto_increment=10

#comment ='测试'表的注释。charset='utf8' 设置表的编码 【auto_increment=10 设置从10开始增长】

2 修改表

1.修改表名 alter table 旧表名 rename 新表名; #表名在数据库中是唯一的

2.添加字段 alter table 表名 add 字段名 数据类型 属性

3.删除字段 alter table 表名 drop 字段名

4.修改字段 alter table 表名 change 旧字段名 新字段名 数据类型 [属性] #如果不需要修改数据类型使用写出源数据类型,不能为空

5.更新字段 alter table 表名 modify 字段名 数据类型

3 约束

1.添加主键 alter table 表名 add constraint 键名 primary key (列名[,列名2])

2.添加唯一 alter table 表名 add constraint 键名 unique key (列名[,列名2])

3.添加外键 alter table 表名 add constraint 键名 foreign key (外键列) reference 主表名(列名)

4.添加默认 alter table 表名 alter 列名 set default '默认值'

5.添加非空 alter table 表名 modify 列名 INT(5) NOT NULL;

删除默认值:alter table 表名 alter 列名 drop default;
删除主键: alter table 表名 drop primary key;
删除唯一: alter table 表名 drop index 唯一约束名;

MySQL的分页关键字是:limit

4 子查询

--方式一:用表连接

select studentName,studentResult from student s

inner join result r on s.studentNo=r.studentNo

inner join subject b on r.subjectNo = b.subjectNo

where subjectName ='java' and studentResult<60

--方式二:用子查询 【返回多个值使用in】

SELECT StudentName FROM Student where studentNo in

( select studentNo from result r inner join subject s on r.subjectNo =s.subjectNo

where studentResult<60 and subjectName ='java') 【思考,还可以再拆为子查询】

9 运算符

比较运算符

>  <  <=   >=   =  <>

大于、小于、大于(小于)等于、不等于

BETWEEN  ...AND...

显示在某一区间的值(含头含尾)

IN(set)

显示在in列表中的值,例:in(100,200)

LIKE ‘张_’

模糊查询,Like语句中,% 代表零个或多个任意字符,_ 代表一个字符,例first_name like ‘_a%’;

IS NULL

判断是否为空

逻辑运算符

and

多个条件同时成立

or

多个条件任一成立

not

不成立,例:where not(salary>100);

聚合函数:

特点:只对单列进行操作

常用聚合函数:

sum():求某一列的和

avg():求某一列的平均值

max():求某一列的最大值

min():求某一列的最小值

count():求某一列的元素个数

 

 

字段类型:

常用的字段类型:

 

 

分类

类型名称

说明

整数类型

tinyInt

很小的整数

smallint

小的整数

mediumint

中等大小的整数

int(integer)

普通大小的整数

小数类型

float

单精度浮点数

double

双精度浮点数

decimal(m,d)

压缩严格的定点数------开发时用

日期类型

year

YYYY  1901~2155

time

HH:MM:SS  -838:59:59~838:59:59

date

YYYY-MM-DD 1000-01-01~9999-12-3

datetime-开发用

YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00~ 9999-12-31 23:59:59

timestamp

YYYY-MM-DD HH:MM:SS  1970~01~01 00:00:01 UTC~2038-01-19 03:14:07UTC

文本、二进制类型

CHAR(M)            

M为0~255之间的整数

VARCHAR(M)  

M为0~65535之间的整数

TINYBLOB

允许长度0~255字节

BLOB

允许长度0~65535字节

MEDIUMBLOB

允许长度0~167772150字节

LONGBLOB

允许长度0~4294967295字节

TINYTEXT

允许长度0~255字节

TEXT

允许长度0~65535字节

MEDIUMTEXT

允许长度0~167772150字节

LONGTEXT

允许长度0~4294967295字节

VARBINARY(M)

允许长度0~M个字节的变长字节字符串

BINARY(M)

允许长度0~M个字节的定长字节字符串

分组:

SQL语法关键字GROUP BY 和 HAVING

posted @ 2019-12-26 22:28  晶晶很乖hello  阅读(159)  评论(0编辑  收藏  举报