Mysql

查询语句 DQL查询数据(最重点)
(Data query language:数据查询语言)

MD5扩展

事务介绍
索引

数据库的权限管理与备份

数据库设计与三大范式

数据库分类:

关系型数据库:表于表之间,行和列之间的关系进行数据存储

  • 非关系型数据库:对象储存,通过对象的属性来决定(Not only Sql)
    MySql是最好的关系数据管理系统
    中小型网站、或者大型网站、集群!

数据库命令:
flush privileges;–刷新权限
use ***;切换表
show tables;查看数据库中所有得表信息
describe student;显示数据库中所有的表的信息
create database **; 建表
exit; 退出

所有的语句都要 ;结尾

------------------------------------------------------
DDL 定义
DML 操作
DQL 查询
DCL 控制

数据类型
数值
tinyint十分小的数据1个字节
smallint较小的数据2个字节
mediumint中等大的数据3个字节
int标准的整数4个字节
bigint较大的数据8个字节
float浮点数4个字节
double双精度浮点8个字节
decimal字符串形式的浮点数金融计算的时候,一般使用decimal
字符串
char字符串固定大小的0-255
varchar可变字符串0~65535常用的变量String
tinytext微型文本2^8-1
text文本串2^16-1保存大文本
时间日期java.util.Date
dateYYYY-MM-DD,日期格式
timeHH:mm:ss,时间格式
datetimeYYYY-MM-DD HH:mm:ss 最常用的时间格式
timeStamp时间戳,1970.1.1到现在的毫秒数!也较为常用
year年份表示

NULL:没有值,未知,不要用NULL进行计算,结果为NULL;

数据库的字段属性(重点)

Unsigned

  • 无符号的整数
  • 该列不能声明为负数

zerofill

  • 0填充的
  • 不足的位数,使用0来填充,int(3),5 — 005

自增

  • 通常理解为自增,自动在上一条记录的基础上+1(默认)
  • 通常用设计唯一的主键-index,必须是证书类型
  • 可以自定义设计主键自增的起始值和步长

非空 not null

  • 假设设置为not null,如果不给它赋值,就会报错!
  • Null,如果不填写,默认就是null!

默认

  • 设置默认的值 不指定就为该值

创建表语句:

create table if not exists student
(   id int(4) auto_increment comment '学号',
	name varchar(30) default '匿名' not null comment '姓名',
	pwd varchar(20) default '123456' not null comment '密码',
	sex varchar(2) default '女' not null comment '性别',
	birthday datetime null comment '出生日期',
	address varchar(100) null comment '家庭住址',
	email varchar(50) null comment '邮箱',
	primary key(id)
)engine=INNODB default charset=utf8

格式

CREATE TABLE [IF NOT EXISTS] 表名(
'字段名' 列类型 [属性] [索引] [注释],
'字段名' 列类型 [属性] [索引] [注释]
)[表名][字符集设置][注释]
数据库引擎
myisaminnodb
事务支持不支持支持
数据行锁定不支持支持
事务支持不支持支持
全文索引支持不支持
表空间的大小较小较大,约为2倍
常规使用操作:
  • MYISAM 节约空间,速度较快
  • INNODB 安全性高,事务的处理,多表多用户操作

在物理空间存在的位置:

  • 所有的数据库文件都存在data目录下
  • 本质还是文件的存储

MySQL引擎在物理文件上的区别

  • InnoDB在数据表中只有一个*.frm文件,以及上级目录下的idata1文件
  • MYISAM对应文件
    1. *.frm 表结构的定义文件
    2. *.MYD 数据文件(data)
    3. *.MYI索引文件(index)

设置数据库表的字符集编码:CHARSET=utf8
不设置的话,会是mysql默认的字符集编码-(不支持中文)
MYSQL的默认编码是Latin1,不支持中文
在my.ini中配置默认的编码:charcter-set-server=utf8

修改和删除
 修改表名:alter table ***[旧表名] rename as ******[新表名]
 增加表的字段:alter ***[表名] add ****[字段名]  int(8)[类型(长度)] 
 修改表的字段(重命名,修改约束!):alter table ***[表名] modify ****[字段] varchar(11) 修改约束
 alter table ***[表名] change ****[字段] *****[字段新命名] int(1) 

最终结论:change用来字段重命名,不能修改字段类型的约束;modify不用来字段重命名,只能修改字段类型和约束。

 --删除表的字段:alter table ****[表名] drop *****[字段名]
 
--删除表:drop table if exists ****[表名]

所有的创建和删除操作尽量加上判断,以免报错
sql关键字大小写不敏感

MySQL数据管理

外键(了解即可)

create table if not exists student
(
	id int(4) auto_increment comment '学号',
	gradeid int(10) not null comment '年级',
	name varchar(30) default '匿名' not null comment '姓名',
	pwd varchar(20) default '123456' not null comment '密码',
	sex varchar(2) default '女' not null comment '性别',
	birthday datetime null comment '出生日期',
	address varchar(100) null comment '家庭住址',
	email varchar(50) null comment '邮箱',
    primary key (id),
    key fk_grade (gradeid),
    constraint fk_grade foreign key (gradeid) references grade(gradeid)
);

create table grade
(
	gradeid int(4) auto_increment comment '年级id'
		primary key,
	gradename varchar(30) not null comment '年纪名称',
	primary key (gradeid)
)engine=InnoDB default charset = utf8;

创建表时没有外键没有关系可以使用语句增加
alter table [表名] add constraint [约束名] foreign key(gradeid[外键名]) references [哪个字段]

物理外键(不建议使用)

DML语言(全部记住,背下来)
添加
insert into 表名([字段名1,字段名2,字段名3])values([‘值1’,‘值2’,‘值3’])
写插入语句一定要一一对应!
插入多个字段
insert into grade(gradename) values(‘大二’),(‘大三’);
insert into grade(gradeid,gradename) values(3,‘大二’),(6,‘大三’);
insert into grade values(5,‘大二’),(4,‘大三’);
修改
update [表名] set [列名]=[] where [条件]

指定条件

update student set name='阿土伯伯' where id=1 [and 其他条件];

无条件

update student set name='阿土伯伯',email='wanaei@qq.com';
操作符含义范围结果
=等于5=6false
<>或!=
>
<
<=
>=
between…and…在某个范围内[2,5]
and我和你&&5>1 and a>2
or5>1 or 1>2true

删除
delete from [表名] where [条件]

truncate 作用:完全清空一个数据库表,表的结构和索引约束不变

delete 和 truncate 得区别
不同:
truncate 重新设置,自增列计数器,
truncate 不影响事务

了解即可:

  • InnoDB 自增列会从1 开始(存在内存当中,断电即世)
  • MyISAM 继续从上一个自增量开始(存在文件中,不会丢失)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不想当个程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值