MySQLyog的使用

1.SQLyog管理工具(小海豚)

可手动操作、管理MySQL数据的软件工具
特点:易用、简洁、图形化

创建课程数据表(subject)并添加数据
使用SQLyog连接数据库
创建MySchool数据库

新建数据表( subject )添加数据列

SubjectNo (int(11) , PK)
SubjectName (varchar 50 )

ClassHour (int (4) )

GradeID ( int (4) )

添加数据

首先创建数据库
数据库名称:MySchool
基字符集:utf8
数据库排序规则utf8_unicode_ci
创建表
表名称:subject
列名 数据类型 长度 主键(有且只有一个,不能为空;主键组可以包含多个)

连接数据库的cmd语句:mysql -h 服务器主机地址 –u 用户名 -p用户密码


2.结构化 查询语句SQl

结构化查询语句分类
名称		解释					命令
DDL数据		定义和管理数据对象,		CREATE、DROP、ALTER
定义语言 	如数据库,数据表等
------------------
DML数据		用于操作数据库对象中		INSERT、UPDATE、DELETE
操作语言		所包含的数据
------------------
DQL数据		用于查询数据库数据		SELECT
查询语言
-----------------
DCL数据		用来管理数据库的语言,	GRANT、COMMIT、ROLLBACK
控制语言		包括管理权限及数据更改	REMOVE

【【注意】】

在执行修改删除插入DML操作语言前都需要进行alter命令,但是drop不能删除只有一列的表结构

查看表
select * from tb_test01; ------------------------------------普通查看表数据
show create table tb_test01; -------------------------------查看表结构(PPT上的)
show table status like "tb_test01" --------------------------查看表创建信息
show columns from tb_test01; ------------------------------详细查看表各字段 类型约束设置

添加:

ALTER TABLE tb_test01 add id_01 int(10); -------------------表tb_test01增加 增加字段 id_01 类型限制 int(10)
ALTER TABLE tb_test01 add id_02 int(10) FIRST -------------增加字段 id_02 并且放在第一个字段
ALTER TABLE tb_test01 add id_03 int(10) AFTER id ----------增加字段 id_03 并且放在id 后面

删除(主键:primary key)

ALTER TABLE tb_test01 drop id_03; --------------------------删除字段 id_03
ALTER TABLE tb_test01 drop PRIMARY KEY; -----------------删除主键,注: 如果表有主键,不删除主键,无论添
加主键,还是在修改的时候增加主键设置,都会失败,需要先删除主键,才可以对主键进行操作

修改:

关键字:modify, change, rename, alter [field] set default缺省 [num]
modify: 修改字段类型设置,不可以更改字段名
change: 修改字段类型设置 可以更改字段名
ALTER TABLE tb_test modify id_01 int(5) not null; ---------------把 id_01 字段类型修改 int(5),和非空
ALTER TBALE tb_test change id_01 id_test int(10); ---------------把 id_01 更名 id_test 并且字段类型设置为 INT(10)
ALTER TABLE tb_test RENAME tb_test02; -------------------------把表 tb_test 更名为 tb_test02;
ALTER TABLE tb_test ALTER id_01 set default 1000; --------------把表tb_test 的字段 id_01 设置默认值为1000,其
他的约束不变
ALTER TABLE tb_test ALTER id_01 DROP DEFAULT; --------------删除 字段 id_01 的默认设置值
ALTER TABLE tb_test ENGINE = MYISAM; ----------------------把 表tb_test 类型设置为 MYISAM; myqsl默认 INNODB

drop与delete的区别:
初学sql语言,难免被drop和delete用法弄混,二者都有删除的意思。
那它们又有什么区别呢?

drop主要用于删除结构

1.例如删除数据库:drop database XX,
2.删除表 drop table XX。
3.字段也是结构的一种,也可以使用drop了?对的,但是我们改变了表结构要先alter方法。
例如,我们要删除student表上的age字段的信息,可以这样写:alter table student drop age

delete主要用于删除数据
举个例子
,要删除 student表上名字为‘张三’的所有信息:delete * from student where name=‘张三’。这种情况下用delete,由此
可见delete常用于删除数据。

delete与truncate的区别
在使用truncate时一定要注意,虽然可以恢复,但为了减少麻烦,还是要慎重。
如果想删除部分数据用delete,注意带上where子句,回滚段要足够大(不会删除原来的索引,也不会重置删除内容的原所占内存空间);
如果想保留表而将所有数据删除,如果和事务无关,用truncate即可(他会删除索引并重置内存空间);
如果和事务有关,或者想触发trigger,还是用delete;
如果是整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据。

truncate 表名 ; 直接清空所有数据,下次插入数据时auto_increment字段会自动从0开始。
和delete from tbname不同的是delete只删除数据而不重置auto_incremnet.

SET @@auto_increment_increment = 10; 修改自动增长的步长(全局修改)


where和having的区别 as是用来起别名的

where子句:是在分组之前使用,表示从所有数据中筛选出部分数据,以完成分组的要求,
在where子句中不允许使用统计函数,没有group by子句也可以使用。

having子句:是在分组之后使用的,表示对分组统计后的数据执行再次过滤,可以使用统计
函数,有group  by子句之后才可以出现having子句。

1.grant命令

grant权限用来授权进行数据模式访问,可以用于对对象权限和系统权限的操作。
其基本语法为:grant privilege on object to grantee [with grant option]
其中,privilege表示所需的权限,object是被授予权限可以进行访问的对象,
grantee是需要接收该权限的用户。
如果授予了with grant option,则该grantee可以依次向其他用户进行授权。
在一个grant语句中也可以指定多个权限,举例说明,
对于以下语句:grant select,update on  tableA  to userA;
表示将tableA表的select,update操作权限赋给userA。

2.commit命令?

oracle中的commit是提交数据,在未提交前的操作更新的都是内存,即没有更新到物理文件中。
只有当数据库
发出commit命令,事物才会被终结,并且:
事物完成的所有工作都是永久性的(permanent)。
其他的会话可以看到此事务所进行的修改。
事务所需要执行的所有加锁(lock)处理都被释放了。
其具体语法为:
commit [work];其中work关键字用来提高可读性。当我们commit一个事务以前,只有执行该事务
的对话才看得到自己的修改,而commit这个事务后其他会话才能看到该修改。一般DML 数据操
作语言需要使用commit命令,例如insert将记录插入到数据库 、update修改数据库的记录 、
delete删除数据库的记录。
当我们开表插入(编辑)数据时,在修改之后,也需要点击pl/sql右上角工具栏的“提交”图标,其
本质就是commit命令。

3.rollback命令?

rollback用于存放数据修改之前的值(包括数据修改之前的位置和值)。当对数据库执行rollback
语句时,该事务就被终结,并且:
事务完成的所有工作都被取消(undo)。
事务所需要执行的所有加锁(lock)处理都被释放了。
其具体语法为:rollback?[work];其中work关键字也是可选的,用来提高可读性。当程序检测出
脚本的错误而不能继续运行时,通常会显式使用rollback语句;当会话断开与数据库的连接时,
如果没有使用commit或rollback终止当前事务时,该事务会被数据库撤销。
-----------------

3. 命令行操作数据库

创建数据库的命令
create database 【IF NOT EXISTS】数据库名;
删除数据库的命令
drop database 【IF EXISTS】数据库名;
查询数据库
show databases;
使用数据库
use 数据库名;


工具建表
可能要涉及的聚合函数
count()行数 avg()平均 sum和
max()最大 min()最小

涉及到的order by 和 group by的区别
order by 排序查询、asc升序、desc降序
示例:
select * from 学生表 order by 年龄 查询学生表信息、按年龄的升序(默认、可缺省、从低到高)排列显示
也可以多条件排序、 比如 order by 年龄,成绩 desc 按年龄升序排列后、再按成绩降序排列

group by 分组查询、having 只能用于group by子句、作用于组内,having条件子句可以直接跟函数表达式。使用group by 子句的查询语句需要使用聚合函数。
示例:
select 学号,SUM(成绩) from 选课表 group by 学号 按学号分组、查询每个学号的总成绩
select 学号,AVG(成绩) from 选课表
group by 学号
having AVG(成绩)>(select AVG(成绩) from 选课表 where 课程号=‘001’)
order by AVG(成绩) desc
查询平均成绩大于001课程平均成绩的学号、并按平均成绩的降序排列

显示建表
desc表名 降序显示表
显示表创建语句
show create table 表名

创建数据表**************注意听讲*******************
属于DDL定义操作的一种

create table `表名`(                               //反引号``区别于单引号‘’
  
     `字段名1`    列类型 [ 属性 ]  [ 索引 ] [注释] ,
 
       `字段名2`   列类型 [ 属性 ]  [ 索引 ] [注释] , 
 
        … …    
         
       `字段名n`   列类型 [ 属性 ]  [ 索引 ] [注释]
 

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

【列类型】
规定数据库中该列存放的数据类型
分为

数值类型

类型 			大小 	范围(有符号) 范围(无符号)						 					用途
TINYINT 		1字节 	(-128,127) (0,255) 												小整数值
SMALLINT 		2 字节	(-32 768,32 767) (0,65 535) 										大整数值
MEDIUMINT 		3 字节 	(-8 388 608,8 388 607) (0,16 777 215) 							大整数值
INT或INTEGER 	4 字节	(-2 147 483 648,2 147 483 647) (0,4 294 967 295) 大				整数值
BIGINT 			8 字节	(-9 233 372 036 854 775 808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 极大整数值

类型 说明 取值范围 存储需求

tinyint 非常小的数据
有符值: -2^7 ~ 2^7-1 1字节
无符号值:0 ~ 2^8-1

smallint 较小的数据
有符值: -2^15 ~ 2^15-1 2字节
无符号值: 0 ~ 2^16-1

mediumint 中等大小额数据
有符值: -2^23 ~ 2^23-1 3字节
无符号值: 0 ~ 2^24-1

int 标准整型
有符值: -2^31 ~ 2^31-1 4字节
无符号值:0 ~ 2^32-1

bigint 较大的整数
有符值: -2^63 ~2^63-1 8字节
无符号值:0 ~2^64-1

float 单精度浮点数 ±1.1754351e -38 4字节

double 双精度浮点数 ±2.2250738585072014e -308 8字节

decimal 字符串形式的浮点数 decimal(m, d) m个字节

注意啦!!!
类似int(4),仅设定显示宽度,不影响存储范围,长度超出4照样能存

字符串类型
类型 说明 最大长度
char[(M)] 固定长字符串,检索快 M字符
但费空间,0<=M<=255

varchar[(M)] 可变字符串
0<=M<=65535 变长度
端口号的取值范围就是0-65535(2^16-1)

tinytext 微型文本串 2^8-1字节

text 文本串 2^16-1字节

日期和时间数值类型

 类型		说明							取值范围
DATE		YYYY-MM-DD,日期格式		1000-01-01~ 9999-12-31
TIME		Hh:mm:ss ,时间格式			-838:59:59~838:59:59
DATETIME	YY-MM-DD hh:mm:ss 		1000-01-01 00:00:00  至 9999-12-31 23:59:59
TIMESTAMP	YYYYMMDDhhmmss格式表示的时间戳	197010101000000 ~2037年的某个时刻
YEAR		YYYY格式的年份值			1901~2155

null值
可以理解为没有值,或者未知值
不要用NULL进行算术运算,结果仍为NULL*听讲

mysql独有的,复合数据类型
blob可以提一下
复合类型(MySQL特色,慎用,影响数据库迁移)
  
MySQL 还支持两种复合数据类型 ENUM 和 SET,它们扩展了 SQL 规范。
虽然这些类型在技术上是字符串类型,但是可以被视为不同的数据类型。
一个 ENUM 类型只允许从一个集合中取得一个值;而 SET 类型允许从一个集合中取得任意多个值。

ENUM 类型

ENUM 类型因为只允许在集合中取得一个值,有点类似于单选项。在处理相互排拆的数据时容易让人理解,比如人类的性别。ENUM 类型字段可以从集合中取得一个值或使用 null 值,除此之外的输入将会使 MySQL 在这个字段中插入一个空字符串。另外如果插入值的大小写与集合中值的大小写不匹配,MySQL 会自动使用插入值的大小写转换成与集合中大小写一致的值。
   ENUM 类型在系统内部可以存储为数字,并且从 1 开始用数字做索引。 一个 ENUM 类型最多可以包含 65536 个元素,其中一个元素被 MySQL 保留,用来存
储错误信息,这个错误值用索引 0 或者一个空字符串表示。
  MySQL 认为 ENUM 类型集合中出现的值是合法输入,除此之外其它任何输入都将失败。这说明通过搜索包含空字符串或对应数字索引为 0 的行就可以很容易地找到错误记录的位置。

SET 类型
  
SET 类型与 ENUM 类型相似但不相同。SET 类型可以从预定义集合中取得任意数量的值。并且与 ENUM 类型
相同的是任何试图在 SET 类型字段中插入非预定义的值都会使 MySQL 插入一个空字符串。如果插入一个即有合法的元素又有非法的元素的记录,MySQL 将会保留合法的元素,除去非法的元素。
  一个 SET 类型最多可以包含 64 项元素。在 SET 元素中值被存储为一个分离的“位”序列,这些“位”表示与它相对应的元素。
“位”是创建有序元素集合的一种简单而有效的方式。并且它还去除了重复的元素,所以 SET 类型中不可能包含两个相同的元素。
  希望从 SET 类型字段中找出非法的记录只需查找包含空字符串或二进制值为 0 的行。


数据字段属性
unsigned
无符号的
声明该数据列不允许负数

zerofill
0填充的
不足位数的用0来填充
使用zerofill会默认加unsigned

auto_increment
自动增长的,每增加一条数据,自动在上一个记录数上加1
通常用于主键,且为整数类型

可能会遇到的问题:
使用zerofill会默认加unsigned

`id` tinyint(4) zerofill

id将不能存负数,最大存储255

CREATE TABLE 表名 ( … ) AUTO_INCREMENT = 100;

alter table 表名 auto_increment = x ; 如果x小于现在的值则修改无效

NULL 和 NOT NULL

默认为NULL,即没有插入该列的数值
如果设置为
NOT NULL,则该列必须有值

DEFAULT
默认的
用于设置默认值

例如,性别字段,默认为“男”,否则为“女”;若无指定该列的值,则默认为“男”的值


COMMENT ‘编码号’对象表中的注释


设置数据表的类型
ENGINE = MyISAM

ENGINE = InnoDB

MySQL注释:
1、
①#……
②–空格 单行注释
2、/……/ 多行注释
MySQL的数据表的类型
MyISAM、InnoDB 、HEAP、BOB、CSV等

常见的MyISAM与InnoDB类型

名称		MyISAM	InnoDB
事务处理		不支持	支持
数据行锁定	不支持	支持
外键约束		不支持	支持
全文索引		支持	不支持
表空间大小	较小	较大,约2倍	

使用MyISAM: 节约空间及相应速度
使用InnoDB: 安全性,事务处理及多用户操作数据表

设置数据表字符集
charset=utf8


课上听讲
服务器:必须有软件的支持才叫服务器
Linux服务器兼容性特别好
Apache
1.广义的服务器:主机+linux系统 硬件+软件(系统,服务)
2.狭义的服务器:Tomcat

关系型数据库:存在硬盘上(读取数据快)
非关系型数据库:存在缓存中

MySQL的性价比高,Oracle
MySQL的本质就是DBMS
SQLyog的本质是可视化管理工具

运行机制:
内部运行机制
外部运行机制

JDBC java数据库连接

注释
单行注释
– 注意加空格

多行注释

/* */

使用cmd操作
1.进入bin层
d:
cd D:\Program Files\mysql-5.7.19-winx64

mysql -u root -p回车
输入密码123

show databases;显示所有的数据库
use t25;使用(进入)t25这个数据库

desc grade;进入表

1.数据库 增 删 查;
2.数据库 表 增 删 改 查;
3.表数据 增删改查;
4.索引 增删改查;
5.视图 增删改查;


事务

是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。

显示创建表的过程
show create table

公式
create table 表名(
列名 列类型(长度) 属性(not null) 索引(index/key/pk)注释(comment ’ '),
列名 列类型(长度) 属性(not null) 索引(index/key/pk)注释(comment ’ '),
列名 列类型(长度) 属性(not null) 索引(index/key/pk)注释(comment ’ ')
)charset = utf8;

在java中的int 10位
int的取值范围为: -231——231-1,即-2147483648——2147483647

数据库中
Oracle中不区分“”和(null)
mysql区分“”和(null)

CREATE TABLE `grade` (
  `GradeID` INT(11) NOT NULL,
  `GradeName` VARCHAR(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`GradeID`)
) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci 

你可能感兴趣的:(MySQLyog的使用)