数据库
连接数据库
命令行连接
mysql -uroot -p123456 -- 连接数据库 update mysql.user set authentication_string=password('123456') where user='root' and Host='localhost';-- 修改用户密码 -- 所有的语句结尾都是用 ; 结尾 mysql>use school -- 查看数据库中的所有的表 Database changed show tables;--查看数据库中所有的表 describe student; -- 显示数据库中所有的表的信息 create database westons; -- 创建一个数据库 exit; -- 退出连接 -- 单行注释: /* 多行注释 */
DDL 数据库定义语言
DML 数据库操作语言
DQL 数据库查询语言
DCL 数据库控制语言
操作数据库
操作数据库>操作数据库中的表>操作数据库中表的数据
mysql关键字不区分大小写
操作数据库
1、创建数据库
CREATE DATABASE IF NOT EXISTS weston;-- IF NOT EXISTS是可选内容
2、删除数据库
DROP DATABASE IF EXISTS weston; -- IF EXISTS是可选内容
3、使用数据库
USE school;-- 如果表名或者字段名是一个特殊字符,就需要带`` tab键的上面
4、查看数据库
SHOW DATABASES; -- 查看所有的数据库
数据库的数据列类型
数值
-
tinyint 十分小的数据 1字节
-
smallint 较小的数据 2字节
-
mediumint 中等大小的数据 3字节
-
int 标准的整数 4字节 常用
-
bigint 较大的数据 8字节
-
float 浮点数 4字节
-
double 浮点数 8字节
-
decimal 字符串形式的浮点数 金融计算的时候一般使用
字符串
-
char 字符串固定大小 0-255
-
varchar 可变字符串 0-65535
-
tinytext 微型文本 2^8-1
-
text 文本串 2^16-1
时间日期
java.util.Date
-
data YYYY-MM-DD,日期格式
-
time HH:mm: ss 时间格式
-
datatime YYYY-MM-DD HH: mm: ss
-
timestap 时间戳 1970.1.1到现在的毫秒数!
-
year 年份表示
null
-
没有值,未知
-
注意,不要使用NULL进行运算,结果为NULL
数据库的字段属性
unsigned:
-
无符号的整数
-
声明了该列不能声明为负数
zerofill:
-
0填充
-
不足的未知,使用填充
自增:
-
通常理解为自增,自动在上一条记录的基础上+1(默认)
-
通常你是个用来设计唯一的主键 index,你叙事整数类型
-
可以自定义设计逐渐自增的起始和步长
非空NULL not NULL
-
假设设置为not null,如果不赋值,就会报错!
-
null如果不填值,默认为null
默认:
-
设为默认值
-
sex默认值男,不赋值,默认为男
每个表都必须存在以下五个字段
id 主键
version:乐观锁
is_delete : 伪删除
gmt _create创建时间
gmt_update 修改时间
创建数据库表
-- 目标:创建一个school数据库 -- 创建学生表(列,字段) 使用SQL创建 -- 学号int 登录密码varchar(20) 姓名,性别varchar(2),出生日期datatime,家庭住址,email -- 注意使用英文(),表的名称和字段尽可能使用``括起来 --AUTO INCREMENT 自增 -- 字符串使用 单引号括起来 -- 所有的语句后面加英文逗号 最后一个不用加 --PRIMARY KEY 一个表只有一个主键 -- utf8 CREATE TABLE IF NOT EXISTS `student`( `id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号', `name` VARCHAR(30) NOT NULL DEFAULT'匿名'COMMENT'姓名', `pwd` VARCHAR(20) NOT NULL DEFAULT'123456'COMMENT '密码', `sex` VARCHAR(2)NOT NULL DEFAULT'女'COMMENT'性别', `birthday` DATETIME DEFAULT NULL COMMENT'出生日期', `address` VARCHAR(100)DEFAULT NULL COMMENT'家庭住址', `email` VARCHAR(50)DEFAULT NULL COMMENT'邮箱', PRIMARY KEY (`id`) )ENGINE=INNODB DEFAULT CHARSET=utf8
格式 CREATE TABLE[ IF NOT EXISTS] `表名`( `字段名` 列类型 [属性] [索引] [注释], `字段名` 列类型 [属性] [索引] [注释], `name` VARCHAR(30) NOT NULL DEFAULT'匿名'COMMENT'姓名', `pwd` VARCHAR(20) NOT NULL DEFAULT'123456'COMMENT '密码', `sex` VARCHAR(2)NOT NULL DEFAULT'女'COMMENT'性别', `birthday` DATETIME DEFAULT NULL COMMENT'出生日期', `address` VARCHAR(100)DEFAULT NULL COMMENT'家庭住址', `email` VARCHAR(50)DEFAULT NULL COMMENT'邮箱', PRIMARY KEY (`id`) )ENGINE=INNODB DEFAULT CHARSET=utf8 -- [表的类型] [字符集设置] [注释] -- 常用命令 SHOW CREATE DATABASE school-- 查看创建数据库的语句 SHOW CREATE TABLE student --查看创建数据表的定义语句 DESC student-- 显示表的结构
数据表的类型
-- 关于数据表的引擎 /* INNODB 默认使用 MYISAM 早些年使用的 */
MYISAM | INNODB | |
---|---|---|
事务支持 | 不支持 | 支持 |
数据行锁定 | 不支持 | 支持 |
外键约束 | 不支持 | 支持 |
全文索引 | 支持 | 不支持 |
表空间大小 | 较小 | 较大,约为MYISAM的两倍 |
常规使用操作:
-
MYISAM 节约空间,速度较快
-
INNODB 安全性高,事物的处理,多表多用户操作
在物理空间存在的位置 所有的数据库文件都存在data目录下 本质还是文件的存储
数据库引擎在物理文件的区别
-
INNODB在数据库中只有一个*.frm文件,以及上级目录下的ibdata1文件
-
MYISAM对应的文件
-
*.frm-表结构的定义文件
-
*.MYD 数据文件(data)
-
*.MYI 索引文件(index)
-
设置数据库表的字符编码
CHARSET=utf8
不设置的话,会是mysql默认的字符集编码(不支持中文!)
mysql的默认编码是Latin1,不支持中文
在my.ini中配置默认的编码
character-set-server=utf8