Mysql详解(一)

1.基本的命令行操作

-- 连接数据库
mysql -uroot -p123456

-- 修改用户密码
update mysql.user set authentication_string = password('123456') where user = 'root' and Host = 'localhost';

-- 刷新权限
flush privileges;

-- 查看所有数据库
show databases;

-- 切换数据库
use `数据库名`;

-- 查看数据库下所有表
show tables;

-- 查看表信息
describe `表名`;

-- 退出连接
exit;

-- 单行注释

/*
  多行注释
*/

DDL:  数据库定义语言

DML: 数据库操作管理语言

DQL:    数据库查询语言

DCL:    数据库控制语言

2.操作数据库

   mysql关键字不区分大小写

  2.1 创建数据库

create database [if not exists] databaseName;

  2.2 删除数据库

drop database [if exists] databaseName;

  2.3 使用数据库

-- 如果数据库名、表名、字段名是关键字,我们必须要使用 ``
use `数据库名`; 

  2.4 查看数据库

show databases;

  2.5 查看创建数据库的语句 

show create database `库名`;

  2.6 查看创建表的语句

show create table `表名`;

  2.7 查看表结构信息

desc `表名`;

3. 列的数据类型

  3.1 数值

  • tinyint                    十分小的数据                   1个字节
  • smallint                 较小的数据                       2个字节
  • mediumint            中等大小的数据                3个字节
  • int                         标准的整数                       4个字节
  • bigint                    较大的数据                       8个字节
  • float                      浮点数                              4个字节 
  • double                  浮点数                              8个字节
  • decimal                字符串形式的浮点数(金融计算的时候,一般使用decimal)           

  3.2 字符串

  • char                   字符串固定大小的              0~255
  • varchar              可变字符串                         0~65535
  • tingtext              微型文本                             2^8-1
  • text                    文本串                                2^16-1

  3.3 时间日期

  • date                  YYYY-MM-DD 日期格式
  • time                  HH:mm:ss  时间格式
  • datetime           YYYY-MM-DD  HH:mm:ss  最常用的时间格式
  • timestamp        时间戳  1970.1.1 到现在的毫秒数
  • year                  年份

  3.4 null

  • 没有值,未知
  • 注意:不要使用null进行运算,结果为null

4.数据库的字段属性 

  • Unsigned (无符号的整数) :   声明了该列不能为负数
  • zerofill (填充0) : 不足位数的,使用0来填充
  • 自增:  自动在上一条记录的基础上 +1 (默认),通常用来设计唯一的主键,必须是整数类型。也可以自定义设计主键自增的起始值
  • 非空:假设设置了非空,如果在插入时不给它赋值,就会报错。
  • 默认:设置默认值

5. 拓展

  在实际开发中,每个表中必须包含以下字段

  • id  主键
  • version  乐观锁
  • is_delete  伪删除
  • create_time 创建时间
  • update_time 修改时间

6. 创建数据库表

-- 表的名称和字段尽量使用``括起来
-- auto_increment 自增
-- comment 注释
-- primary key  主键,一般一个表只有一个主键
-- engine 引擎
-- charset 编码集
create table if not exists `student`(
  `id` int(4) not null auto_increment comment '学号',
  `name` varchar(10) not null default '匿名' comment '姓名',
  `sex`  varchar(2) not null default '女' comment '性别',
  `pwd`  varchar(10) not null default '123456' comment '密码',
  `birthday` datetime default null comment '出生日期',
  `address`  varchar(20) default null comment '地址',
  `email`   varchar(20) default null comment '邮箱',
  primary key(`id`)  
)engine=InnoDB default charset=utf8 comment='学生表';

7.数据表的类型

 7.1 常见的两种 InnoDB(默认) 和 MyISAM

 7.2 InnoDB 和 MyISAM的区别

MYISAMInnoDB
事务支持不支持支持
数据行锁定不支持支持
外键约束不支持支持
全文索引支持不支持
表空间的大小较小较大,约为MyISAM的2倍

7.3 常规使用操作:

  • MyISAM  节约空间,速度较快
  • InnoDB   安全性高,事务的处理,多表多用户操作 

7.4 在物理空间存在的位置

   所有的数据库文件都存在data目录下。

   本质:还是文件存储。

7.5 Mysql引擎在物理文件上的区别

  • InnoDB 在数据库表中只要一个*.frm文件,以及上级目录下的ibdata1文件
  • MyISAM对应文件
  1. *.frm  -- 表结构的定义文件
  2. *.MYD  --- 数据文件
  3. *.MYI  --- 索引文件

8. 数据库表的字符集编码

charset = utf8

  不设置的话,会是mysql默认的字符集编码(不支持中文)

  在my.ini文件中配置编码

character-set-server=utf8

 9、修改、删除数据表字段

  

-- 修改表名
alter table 旧表名 rename as 新表名

-- 增加表字段
alter table 表名 add 字段名 列属性

-- 修改表字段(重命名、约束)
alter table 表名 modify 字段名 列属性   --修改约束
alter table 表名 change 旧字段名 新字段名  列属性   -- 字段重命名

-- 删除表字段
alter table 表名 drop 字段名

-- 删除表 (如果表存在则删除)
drop table if exists 表名

change 和 modify 的区别 
--  change用来字段重命名,不能修改字段类型和约束
--  modify不用来字段重命名,只能修改字段类型和约束

10. mysql数据管理

 10.1 外键

-- 添加外键
alter table 表名 add constraint  约束名  foreign key (外键字段) references 目标表(目标字段)

 总结:不建议使用数据库外键,避免数据库表过多造成困扰,想使用外键可以通过程序来实现。

 10.2 DML语言(insert , update ,  delete)

-- 插入语句
insert into 表名 (字段名1,字段名2,字段名3,......) values (值1,值2,值3,......)


-- 修改语句
update 表名 set 字段名1 = 值1,字段名2=值2,字段名3=值3 where 条件


--删除语句
delete from 表名 where 条件

-- 清空表数据 
truncate 表名  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值