一、数据表相关操作
1、什么是表?
数据表是数据库最重要的组成部分之一,是其它对象的基础
数据库是存储数据的数据结构
数据表是包含了特定实体类型的数据
数据表由row行和列column构成的二组网络
数据表一定要先有表结构,再有数据
数据表至少有一列,可以没有行或者多行
2、如何创建数据表
语法:
CREATE TABLE [IF NOT EXISTS] tbl_name(
字段名称 字段类型 [完整约束条件]
)ENGINE=引擎名称 CHARSET='编码方式';
二、数据类型
1、整数类型:
TINYINT最小整数,范围是0-255
INT 整数 范围0-4294967295
SMALLINT 短整型 范围0-65535
BOOL,BOOLEAN 等价于TINYINT(1),0为false,其余为True
浮点类型:FLOAT像薪水,就需要用到浮点类型
或使用help帮助查看
2、字符串类型
CHAR(M) 定义的列的长度是固定长度,括号里的M代表的是存储的字符数,最多能存储0-255个字符,当保存CHAR值时,在它们右边填充空格以达到指定的长度
VARCHAR(M) ,可变长字符串,M取值为0-65535之间。
TEXT 文本类型字符串
ENUM ,枚举类型 像性别,不是男就是女,可以列举出来的值
3、日期时间类型
三、MySQL存储引擎
1、什么是存储引擎?
存储引擎就是指表的类型,数据库的存储类型决定了表在计算机中的在存储方式,用户可以根据不同的存储方式,是否进行事务处理来选择合适的存储引擎。
2、如何查看mysql存储引擎
常用参数:
show engines
查看显示支持的存储引擎信息:show variables like 'have%'
查看默认的存储引擎:show variables like 'storage_engine'(5.7版本,查看是空的)
查看支持的存储引擎信息
3、Mysql常用存储引擎及特点
Inododb存储引擎:而InnoDB支持事务,读写效率比较低,占用数据空间较大,支持事务提交回滚
MyISAM存储引擎:占用磁盘空间小,处理速度快、MyISAM不支持事务
Memory存储引擎:使用存储在内存中内容创建表、所有数据存放在内存中,读取速度快、只存储表结构
意外断电,数据丢失
4、MyISAM 和Innodb的区别
MySQL默认采用的是MyISAM,5,5以前采用的都是MyISAM引擎
占用磁盘空间小,处理速度快、MyISAM不支持事务,而InnoDB支持,读写效率比较低,占用数据空间较大
InnoDB支持数据行锁定,MyISAM不支持行锁定,只支持锁定整个表。即 MyISAM同一个表上的读锁和写锁是互斥的,MyISAM并发读写时如果等待队列中既有读请求又有写请求,默认写请求的优先级高,即使读请求先到,所以 MyISAM不适合于有大量查询和修改并存的情况,那样查询进程会长时间阻塞。因为MyISAM是锁表,所以某项读操作比较耗时会使其他写进程饿死。
InnoDB支持外键,MyISAM不支持。
InnoDB的主键范围更大,最大是MyISAM的2倍。
InnoDB不支持全文索引,而MyISAM支持。
MyISAM支持GIS数据,InnoDB不支持。
5、如何选择合适的存储引擎?
如果你需要对事务完整性比较高,并且实现并发控制,创建表不指定引擎,默认使用innodb,频繁更新删除操作选择innodb
优点:Innodb支持外键,事务处理,崩溃自动修复能力、并发控制
MyISAM引擎:插入数据速度快,空间和内存使用率低,如果表主要是插入和读取记录,选择MyISAM存储引擎、不支持事务 ,对数据的完整性、并发性
Memory:数据存储在内存中,读写速度快,数据安全性比较低,使合一次性、不适合太大的表
四、创建表
注意:在创建表时,先把创建表的语句写在一个记事本上
1、创建一个学员表
-- 创建学员表
-- 编号id
-- 用户名 username
-- 年龄 age
-- 性别 sex
-- 邮箱 email
-- 地址 addr
-- 生日 birth
-- 薪水 salary
-- 电话 tel
-- 是否结婚 married
-- 注意,当需要输入中文的时候 ,需要临时转换客户端的编码方式为gbk(5.7默认是gbk)
-- SET NAMES GBK;
-- 字段注释,通过COMMENT 注释内容给字段添加注释
crete database lisa;
use lisa;
create table `user`(
id int,
usernasme varchar(20),
age tinyint,
sex enum('男','女','保密'),
email varchar(30),
addr varchar(100),
birth year,
salary float(8,2),
tel int,
married tinyint(1) comment '0代表未婚,非0代表结婚'
)ENGINE=INNODB CHARSET=UTF8;
在mysql上执行创建表语句
2、查看数据库里的表
常用命令:
show tables;#查看所有表
desc user; #查看表结构
show create table 表名
show columns from 表名
select * from columns where talbe_name='表名'
3、创建课程表 course
-- 创建课程表course
-- 编号 cid
--课程名称 courseName
-- 课程描述 courseDesc
create table course(
cid tinyint,
courseName varchar(40),
courseDesc varchar(100)
);
创建及查看表:
4、创建一个新闻分类表
-- 创建新闻分类表cms_cate
-- 编号、分类名称、分类描述
create table cms_cate(
id TINYINT,
cateName varchar(30),
cateDesc varchar(100)
)ENGINE=MyISAM CHARSET=UTF8;
查看表结构:
5、创建新闻表cms_news
-- 创建新闻表cms_news
-- 编号、新闻标题、新闻内容、新闻发布时间、点击量、是否置顶
create table cms_news(
id int,
title varchar(30),
content text,
pubTime int,
clickNum int,
istop tinyint(1)
);