文章目录
MySQL数据库基础
语法前提
- SQL的关键字不区分大小写的
- 创建数据库的名字可以随便起,但是不能重复
- 单词之间至少有一个空格,也可以有多个空格
- 当我们使用命令行中输入sql必须以 ; 作为结尾
1数据库操作
1.1 显示当前的数据库
show databases;
1.2 创建数据库
语法:
create databases [if not exists] db_name [create_specification [,
create_specification] ...]
create_specification:
[defalut] character set charset_name
[default] collate collation_name
说明:
1. 关键字
create databases;
if not exists;
defalut;
character set;
collate;
2. []中的内容是可选项
3. character set:指定数据库采用的字符集
4. collate:指定数据库字符集的校验规则
示例:
创建名为test1的数据库
create database test1;
当我们选用第二种方式创建test2数据库
如果系统中没有一个名为test2的数据库,则创建如果有则不创建
create database if not exists test2;
如果系统不存在test3的数据库,则创建一个使用utf8mb4字符集的数据库,反之则不创建
create database if not exists test3 character set utf8mb4;
此时我们使用
show databases;
可以看到我们创建的数据库
1.3 使用数据库
use 数据库名;
1.4 删除数据库
drop database [if exists] 数据库名;
2.常用数据类型
2.1 数据类型:
数据类型 | 大小 | 说明 | 对应的Java类型 |
---|---|---|---|
bit[(m)] | m指定数,默认为1 | 二进制数,m范围从1到64存储数值范围从0到2^m-1 | 常用Boolean对应bit,此时默认是1位,即只能存0和1 |
tinyint | 1字节 | Byet | |
smallint | 2字节 | Short | |
int | 4字节 | Integer | |
bigint | 8字节 | Long | |
float(m,d) | 4字节 | 单精度,m指定长度,d指定小数位数,会发生精度丢失 | Float |
double(m,d) | 8字节 | Double | |
declmal[m,d] | m/d最大值+2 | 双精度,m指定长度,d表示小数点位数.精确数值 | BigDecimal |
numeric(m,d) | m/d最大值+2 | 和decimal一样 | BigDecimal |
补充:
数值类型可以指定为无符号(unsigned),表示不取负数.
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
- 尽量不使用unsigned,对于int类型可能存放不下的数据,int unsigned同样可能存放不下,与其如此,还不如设计时,将int类型提升为bigint类型。
2.2字符串类型
数据类型 | 大小 | 说明 | 对应Java类型 |
---|---|---|---|
varchar(size) | 0~65535字节 | 可变长度字符串 | Srting |
text | 0~65535字节 | 长文本数据 | String |
mediumtext | 0-16 777 215字节 | 中等长度文本数据 | String |
blob | 0~65535字节 | 二进制形式的长度文本数据 | 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 数据库名;
3.1查看表结构
desc 表名;
3.2创建表
语法:
create table table_name (
field1 datatype,
field2 datatype,
field3 datatype
);
可以使用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
);
3.4删除表
语法
dorp [temporary] table [if exists] 表名;
示例:
-- 删除 stu_test 表
drop table stu_test;
-- 如果存在 stu_test 表,则删除 stu_test 表
drop table if exists stu_test;