MySQL数据库
安装
mysql5.7的安装
启动mysql服务 net start mysql
停止mysql服务 net stop mysql
本机登录mysql: mysql -u root -p
远程连接时需要写 -h 如果端口修改过 需要写 -P
数据库三层结构
DBMS(database manage system) 数据库管理系统 管理多个数据库
一个数据库可以创建多个表等数据对象,以保存信息
行 row
lie column
表的一行称为一条记录
在 java程序中,一行记录往往使用对象来表示
SQL语句分类
DDL:数据定义语句【create 表,库】
DML:数据操作语句【增加 insert,修改update,删除delete】
DQL:数据查询语句【selete】
DCL:数据控制语句【管理数据库:例如用户权限grand(授权) revoke(撤销权限)】
指令
创建数据库
查询数据库
注意查看所有数据库是 database后面需要加上s
备份和恢复数据库
备份数据库
mysqldump -p root -p -B zhl_demo02 >d:\\bak.sql
在dos执行
执行后 d盘下就出现了一个 bak.sql 文件 即是该数据库文件
恢复数据库
source d:\\bak.sql 将备份的bak.sql 恢复到数据库中
进入mysql命令行再执行
删除原来的数据库后
命令行登录mysql
然后数据库又回来了
备份数据库中的某些表
mysqldump -u root -p test01 users > d:\\test01.sql
该语句是将test01 数据库中的 表users 备份到 d:\\test01.sql 文件中
然后在需要恢复表的数据库中 粘贴运行该文件中的内容 即可将表恢复
创建表
CREATE TABLE user (
id INT(11),
name VARCHAR(255),
passwd VARCHAR(255),
birthday DATE
) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
列的类型
即mysql的数据类型
整型
tinyint smallint middleint int bigint
有符号
CREATE TABLE t1 (id TINYINT); 定义有符号
INSERT INTO t1 VALUES(123);
SELECT * FROM t1;
无符号
CREATE TABLE t2 (id TINYINT UNSIGNED); 定义无符号
INSERT INTO t2 VALUES(240);
SELECT * FROM t2;
超出范围会报错
bit类型
小数类型
float/double [unsigned]
decimal[(M,D)] [unsigned] // M表示小数的总位数,D表示小数的总位数
字符串类型
char
固定长度字符串 最大255字符
char(4) 是定长 ,即使插入‘aa’ 也会占用分配的四个字符的空间。
varchar
可变长度字符串 最大65532字节【utf-8 编码最大21844 1—3字节用于记录大小】
text 0-1^16
mediumtext 0-1^24
longtext 0-1^32
如果是固定长度是用char可以提高速度
日期类型
data 年月日
datetime 年月日 时分秒
timestamp 年月日 时分秒
修改表
增添字段
alter table t7 add sex varchar(1) not null default '男' after job_time;
修改字段
alter table t7 modify sex char(1);
删除字段
alter table t7 drop sex; 删除sex字段
修改表名
rename table t7 to tSeven;
修改字符集
alter table tSeven character set utf8; 将字符集修改为utf8
修改列名
alter table tSeven change name user_name varchar(5) not null default ' '
insert 的使用
insert into goods(id,goods_name,price) values(10,'华为手机',2000)
1:插入的数据应与字段的数据类型相同 比如把'abc'添加到int类型会错误
2:数据的长度应该在列规定的范围内
3: 在values中列出的数据位置必须与被加入的列的排列位置相对应
4:字符和日期型数据应包含在单引号中
5:列可以插入空值【前提是该字段允许为空】,insert into table value(null)
6:insert into tab_name values(列名...) values (),(),(); 形式添加多条记录
insert into goods(id,goods_name,price) values(10,'三星手机',2300),(20,'苹果手机',3000);
7:如果是给表中的所有字段添加数据,可以不写前面字段的名称
8:默认值的使用,当不给某个字段值时,如果又默认值就会添加,否则报错
如果某个列 没有指定not null ,那么当添加数据时,没有给定值,则会默认给null