1 数据库的操作
- 显示当前有的数据库
show databases;
执行结果如下图所示:
-
选中数据库
当你在使用某个数据库的时候,一定得先选中,命令行语句为:
use 数据库名;
-
查看当前选中的这个数据库中是否有表
show tables;
-
删除数据库
数据库删除以后,内部看不到对应的数据库,里边的表和数据全部被删除。
drop database 数据库名;
-
创建数据库
语法:
create database [if not exists] db_name [create_specification [,create_specification] ...]
create_specification: [DEFAULT] CHARACTER SET charset_name [DEFAULT] COLLATE collation_name
说明:
a. [ ] 是可选项。
b. CHARACTER SET: 指定数据库采用的字符集。
c. COLLATE: 指定数据库字符集的校验规则。
示例:
(1)创建名为 db_test1 的数据库:
create databas db_test1
说明: 当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则是:utf8_ general_ci
(2)如果系统没有 db_test2 的数据库,则创建一个名叫 db_test2 的数据库,如果有则不创建:
create database if not exists db_test2
(3)如果系统没有 db_test 的数据库,则创建一个使用utf8mb4字符集的 db_test 数据库,如果有则不创建:
create database if not exists db_test character set utf8mb4;
说明:MySQL的utf8编码不是真正的utf8,没有包含某些复杂的中文字符。MySQL真正的utf8是使用utf8mb4,建议大家都使用utf8mb4。 -
在MySQL当中进行注释操作
-- 空格 注释内容
例如注释一下“创建数据库”这句话 :-- 创建数据库
同时大家注意:MySQL是不区分大小写的。
2 常用数据类型
这里的数据类型是指,在创建表的时候,表中的字段的数据类型。
2.1 数值类型
分为整型和浮点型:
数据类型 | 大小 | 说明 | 对应Java类型 |
---|---|---|---|
BIT[ (M) ] | M指定位数,默认为1 | 二进制数,M范围从1到64,存储数值范围从0到2^M-1 | 常用Boolean对应BIT,此时默认是1位,即只能存0和1 |
TINYINT | 1字节 | Byte | |
SMALLINT | 2字节 | Short | |
INT | 4字节 | Integer | |
BIGINT | 8字节 | Long | |
FLOAT(M, D) | 4字节 | 单精度,M指定长度,D指定小数位数。会发生精度丢失 | Float |
DOUBLE(M,D) | 8字节 | Double | |
DECIMAL(M,D) | M/D最大值+2 | 双精度,M指定长度,D表示小数点位数。精确数值 | BigDecimal |
NUMERIC(M,D) | M/D最大值+2 | 和DECIMAL一样 | BigDecimal |
注:
(1) M代表有效长度,13.45的M是4。
(2) D代表小数点后几位。例如:DECIMAL(4,2)能否存储123.4这样的数据?不可以,因为实际上会被解析为123.40,此时M将变为5。
(3) 数值类型可以指定为无符号(unsigned),表示不取负数。
(4) 1字节(bytes)= 8bit。对于整型类型的范围:
- 有符号范围:
-2^(类型字节数 * 8-1) 到 2 ^(类型字节数 * 8-1)-1,如int是4字节,就
是-2^ 31到2^31-1。- 无符号范围:
0到2^(类型字节数*8)-1 ,如int就是2^32-1。
(5)尽量不使用unsigned,对于int类型可能存放不下的数据,int unsigned同样可能存放不下,与其如此,还不如设计时,将int类型提升为bigint类型。
2.2 字符串类型
数据类型 | 大小 | 说明 | 对应Java类型 |
---|---|---|---|
VARCHAR (SIZE) | 0-65,535字节 | 可变长度字符串 | String |
TEXT | 0-65,535字节 | 长文本数据 | String |
MEDIUMTEXT | 0-16 777 215字节 | 中等长度文本数据 | String |
BLOB | 0-65,535字节 | 二进制形式的长文本数据 | byte[ ] |
2.3 日期类型
数据类型 | 大小 | 说明 | 对应Java类型 |
---|---|---|---|
DATETIME | 8字节 | 范围从1000到9999年,不会进行时区的检索及转换。 | java.util.Date、java.sql.Timestamp |
TIMESTAMP | 4字节 | 范围从1970到2038年,自动检索当前时区并进行转换。 | java.util.Date、java.sql.Timestamp |
3 表的操作
需要操作数据库中的表时,需要先使用该数据库:
use 数据库名;
-
创建表
语法:
CREATE TABLE table_name ( field1 datatype, field2 datatype, field3 datatype );
示例:
create table stu_test ( id int, name varchar(20) , password varchar(50), age int, sex varchar(1), birthday timestamp, amout decimal(13,2), resume text );
可以使用comment增加字段说明。例如:
create table stu_test ( id int, name varchar(20) comment '姓名', password varchar(50) comment '密码', age int, sex varchar(1), birthday timestamp, amout decimal(13,2), resume text );
-
显示表
show tables;
-
显示表结构
desc 表名;
执行结果如下图所示:
-
删除表
drop table 表名
或
drop table if exists 表名;
4 练习题
有一个商店的数据,记录客户及购物情况,有以下三个表组成:
- 商品goods(商品编号goods_id,商品名goods_name, 单价unitprice, 商品类别category, 供应商provider)
- 客户customer(客户号customer_id,姓名name,住址address,邮箱email,性别sex,身份证card_id)
- 购买purchase(购买订单号order_id,客户号customer_id,商品号goods_id,购买数量nums)
SQL语句解答如下:
-- 创建数据库
create database if not exists bit32mall
default character set utf8 ;
-- 选择数据库
use bit32mall;
-- 创建数据库表
-- 商品
create table if not exists goods
(
goods_id int comment '商品编号',
goods_name varchar(32) comment '商品名称',
unitprice int comment '单价,单位分',
category varchar(12) comment '商品分类',
provider varchar(64) comment '供应商名称'
);
-- 客户
create table if not exists customer
(
customer_id int comment '客户编号',
name varchar(32) comment '客户姓名',
address varchar(256) comment '客户地址',
email varchar(64) comment '电子邮箱',
sex bit comment '性别',
card_id varchar(18) comment '身份证'
);
-- 购买
create table if not exists purchase
(
order_id int comment '订单号',
customer_id int comment '客户编号',
goods_id int comment '商品编号',
nums int comment '购买数量'
);