1. 命令行操作数据库
1.1 数据库连接:
mysql -u root -p123456 //mysql -u root -p //123456此处u:user=root p:password=123456
1.2数据库操作:
所有的数据库命令末尾都要加;表示结束或在cmd中->后面单独补上“;”
数据库已存在
show databaseS; --查看mysq里面的所有数据库
mysql> use school --切换数据库里面
show tables; --显示数据库里面的表
describe student;--查看表中所有的信息
数据库不存在
create database web;--创建数据库
show databaseS;
use web--可不加";"--切换到数据库里面
show tables--展示数据库里面的表
tip:GUI中刷新一下
小知识:
exit;--退出连接
--:单行注释
/*
多行注释
*/
数据库XX语言 CRUD(create,retrieve检索查询,update,delete)
DDL 定义
DML 操作
DQL 查询(数据库80%的语言都是在查询)
DCL 控制
2.GUI操作数据库
tip:不分大小写
2.1创建
create database if not exists web /[if not exists]加上[]是可选的,不加[]是必选的
2.2删除
drop database [if exists] web
2.3使用数据库
use school
切换数据库,最上边更改目录了,``在tab键的上面,表名和列名是特殊字符时 show
2.4查看所有数据库
show databaseS; 对照sqlyog的可视化操作:历史记录
desc table; 查看数据库里面的表的字段类型//或者可以用show columns from table
select * from table ;查看表里面的数据
3. 数据库的数据类型:
3.1数值:
tinyint 1个字节
smallint 2个字节
mediunint 3个字节
int 4个字节
bigint 8个字节
float 浮点数 4个字节
double 浮点数 8 个字节
decimal 字符串类型的浮点型 金融计算的时候,一般是使用decimal
3.2字符串:
char 字符串固定的大小 0~255
varchar 可变字符串 0~65535 ( !常用的变量用varchar保存 String)
tinytext 微型文本 2^8-1 text 文本串 2^16-1 (常用保存大文本)
3.3时间与日期:
java.util.Date
1. date YYYY-MMMM-DD ,日期格式
2. time HH:mm:ss 时间格式
3. datetime YYYY-MM-DD HH:mm:ss 最常用的时间格式
4. timestamp 时间戳 1970.1.1到现在的毫秒数,全国统一,也常用
5. year 年份表示
6. Null: 没有值未知,不能用null进行计算结果为null
3.4常用:
int varchar text datetime timestamp 数据库字段属性中,固定的长度e:int就不要再长度里面写,会出错
3.5数据库字段属性
Unsigned
无符号的整数,声明了该列不能为负数
zerofill
0填充的,不足的位数,使用0来填充
自增
自动在上一条记录的基础上+1(默认),通常用来设计唯一的主键-index, 必须是整数类型,可以自定义设计主键的起始值和步长
非空NULL not null
not null 如果不给赋值,就会报错 null不赋值,默认就是null
默认
设置默认值,e:sex默认值为男,不写也是男,刷新一下
4.练习
4.练习
create table if not exists `student`(
`id` int(4) not null auto_increment comment '学号',
`name` varcar(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 --查看student数据表的定义语句
desc student --显示表的结构
--关于数据库引擎
/*
INNODB默认应用
MYISAM 早些年使用的
*/
MYISAM | INNODB | |
---|---|---|
事务支持 | 不支持 | 支持 |
数据行锁定 | 不支持 | 支持 |
外键约束 | 不支持 | 支持 |
全文索引 | 支持 | 支持 |
表空间的大小 | 较小 | 较大,约为MY的2倍 |
常规使用操作:
-
MYISAM 节约空间,速度较快
-
INNODB 安全性高,事务的处理,多表多用户操作 "shift+tab退出无序列表"
在物理空间存在的位置 所有的数据库文件都存在data目录下 本质还是文件的存储! MySQL引擎在物理文件上的区别
-
InnoDB在数据库中只有一个*.frm文件,以及上级目录下的ibdata1文件
-
MYISAM对应文件
-
*.frm 表结构的定义文件
-
*.MYD 数据文件 (data)
-
*.MYI 索引文件 (index)
-
设置数据库表的字符集编码
charset=utf8
不设置的话,会是Mysql默认的字符集编码~(不支持中文!) MySQL的默认编码是Latin1,不支持中文 在my.ini中配置默认的编码
character-set-server=utf8
5.修改删除表
5.1修改表的属性
修改表名:
alter table 旧表名rename as 新表名
增加表的字段
alter table 表名 add 字段名 列属性
alter table teacher ADD age INT(11)
修改表的字段(重命名,修改约束)
alter table teacher1 modify age varchar(11)--修改约束
alter table teacher change age age1 int(1)--字段重命名
删除表的字段
alter table teacher1 drop age1
删除表
drop table if exists teacher1
所有的创建和删除操作尽量加上判断,以免报错 “couple==”