Mysql数据库
一、数据库
mysql服务启动,在cmd输入net start mysql
#创建数据库
CREATE DATABASE hsp_db01;
#创建一个使用 utf8 字符集的 hsp_db02 数据库
CREATE DATABASE hsp_db02 CHARACTER SET utf8
#创建一个使用 utf8 字符集,并带校对规则的 hsp_db03 数据库
CREATE DATABASE hsp_db03 CHARACTER SET utf8 COLLATE utf8_bin
#校对规则 utf8_bin 区分大小 默认 utf8_general_ci 不区分大小写
#查看当前数据库服务器中的所有数据库
SHOW DATABASES
#查看创建的 hsp_db01 数据库的定义信息
SHOW CREATE DATABASE `hsp_db01` #为了规避关键字,可以使用反引号
#删除前面创建的 hsp_db01 数据库
DROP DATABASE hsp_db01
数据库的备份、恢复(导入)(必须在dos下运行)
备份恢复数据库
mysqldump -u 用户名 -p 密码 -B 数据库名 > 路径(例:d:\\database.sql)
备份恢复数据库的表
备份数据库的多个表不能带-B,否则会被认为是多个数据库
mysqldump -u 用户名 -p 密码 数据库名 表1 表2 > 路径(例:d:\\database.sql)
使用mysqldump命令来恢复一个叫data01数据库的一个叫table01的表(已有备份文件)。具体步骤如下:
-
打开cmd窗口,输入mysql -u 用户名 -p,然后输入mysql密码,进入mysql数据库。
-
输入use data01,选择您要恢复的数据库。
-
输入source d:/table01.sql,执行您的备份文件,恢复您的表。
恢复数据库(必须在mysql命令行下运行)
先进入mysql命令行:mysql -u 用户名 -p 密码
恢复:source 文件路径.sql(例:d:\\database.sql)
左上角写了mysql -u 用户名 -p 的界面才叫mysql命令行
备份,恢复数据库实践
先用mysqldump -u 用户名 -p 密码 -B 数据库名 > 路径(例:d:\\database.sql)
从数据库里备份一个到E盘里,然后在数据库中用drop指令将其删除
然后通过mysql -u 用户名 -p 密码进入mysql命令行,输入source d:\\database.sql将其备份
二、Mysql基本数据类型
基本数据类型的使用细节
数值型:
decimal(M,D)中的M默认为10(最大65),D默认为0(最大30),M是位数,D是小数点后有几位
如果没有指定 unsinged , 就是有符号
#创建一个无符号的tinyint类型数据,0~255
CREATE TABLE t4 (id TINYINT UNSIGNED)
字符串型:
VARCHAR虽然可以有65535个字节,但是首先去掉3个字节用于记录字段大小,所以最大为65532个字节,
如果用的编码是UTF-8的话,一个字符消耗3个字节,最多存放65532 / 3 = 21844个字符,
GBK是2个字节,最多存放65532 / 2 = 32766个字符。
#我们来创建一个数据类型为varchar,编码为GBK的表
CREATE TABLE t10 (`name` VARCHAR(32766)) CHARSET gbk;
日期类型:
DATE / DATETIME / TIMESTAMP
CREATE TABLE t14 (
birthday DATE , -- 年月日
job_time DATETIME, -- 年月日 时分秒
login_time TIMESTAMP -- 如果希望 login_time 列自动更新, 需要配置这两句
NOT NULL DEFAULT CURRENT_TIMESTAMP -- 不允许为空,默认为当前时间
ON UPDATE CURRENT_TIMESTAMP -- 更新当前时间戳
);
三、表
创建表
CREATE TABLE `emp` (
id INT,
`name` VARCHAR(32),
sex CHAR(1),
brithday DATE,
entry_date DATETIME,
job VARCHAR(32),
salary DOUBLE,
`resume` TEXT
)
CHARSET utf8 COLLATE utf8_bin ENGINE INNODB
#charset是character set的简写,即字符集
#字符集,校验规则,存储引擎不写的话就是默认的(默认的话跟随当前数据库)
要用cmd在一个叫database的数据库下新建一个表,你需要先用mysql命令登录到数据库,然后用use命令选择database数据库,再用create table命令创建表。具体的步骤如下:
-
打开cmd,输入mysql -u root -p,回车后输入密码,登录到数据库。
-
输入use database;,选择database数据库。
-
输入如上代码完成创建。
删除表
DROP TABLE `emp`
修改表
举例演示:
ALTER TABLE emp
-- 员工表 emp 的上增加一个 image 列,varchar 类型(要求在 birthday 后面)。
ADD image VARCHAR(32) NOT NULL DEFAULT '' AFTER birthday ;
-- DEFAULT ''默认为''这个字符
-- 修改 job 列,使其长度为 60。
ALTER TABLE emp
MODIFY job VARCHAR(60) NOT NULL DEFAULT '' ;
-- 删除 sex 列。
ALTER TABLE emp
DROP sex;
-- 表名改为 employee。
RENAME TABLE emp TO employee;
-- 修改表的字符集为 utf8
ALTER TABLE emp CHARACTER SET utf8;
-- 列名 name 修改为 user_name
ALTER TABLE emp;
-- 显示表结构,可以查看表的所有列
DESC emp ;
四、CRUD增删改查
1. Insert
用法:
INSERT INTO 表名 (列名1,列名2...)
values (对应列名的值);
INSERT INTO `emp` (id, birthday)
VALUES(1, '2003-05-15'); -- 注意date等日期类型一定要按照规则写否则报错或者错位写入
insert使用细节
-
插入的数据应与字段的数据类型相同
-
数据的长度应在列的规定范围内
-
在 values 中列出的数据位置必须与被加入的列的排列位置相对应
-
字符和日期型数据应包含在单引号中
-
列可以插入空值[前提是该字段允许为空]
-
可以用 values ( ),( ) ,( ) ; 的形式添加多条记录
INSERT INTO `goods` (id, goods_name, price) VALUES(50, '三星手机', 2300),(60, '海尔手机', 1800);
-
如果是给表中的所有字段添加数据,可以不写前面的字段名称
-
默认值的使用,当不给某个字段值时,如果有默认值就会添加默认值,否则报错
-- 如果某个列 没有指定 not null ,那么当添加数据时,没有给定值,则会默认给 null
-- 如果我们希望指定某个列的默认值,可以在创建表时通过 not null default xxx 指定
#表里有3个数据,id,goodname,price有默认值10
INSERT INTO `goods` (id, goods_name)
VALUES(80, '格力手机');
#最后会插进去一个(80,格力手机,10)进去
2. Update
用法:
UPDATE 表名 SET 列名 = 值 WHERE 布尔表达式,筛选满足条件的行
#将所有员工薪水修改为 5000 元。如果不带 where 条件,会修改该列所有的记录,因此要小心
UPDAT