1

1436141288

V1

2022/03/13阅读:31主题:全栈蓝

sql day1

Mysql 基础

Mysql 安装

因为我用的是ubuntu,安装就不讲了,大家添加了软件源然后直接sudo apt-get install mysql -server就OK啦。

只是在这里记一个坑:ubuntu重启以我的mysql用service或者sysctl都启动不了,只有用

/etc/init.d mysql restart

才能启动,不然通过命令行访问mysql都会提示找不到sock文件。

SQL分类

分类 全称 说明
DDL Data Definition
Language 数据定义语言,用来定义数据库对象(数据库,表,字段)
DML Data Manipulation
Language 数据操作语言,用来对数据库表中的数据进行增删改
DQL Data Query Language 数据查询语言,用来查询数据库中表的记录
DCL Data Control Language 数据控制语言,用来创建数据库用户、控制数据库的访问权限

DDL

Data Definition Language,数据定义语言,用来定义数据库对象(数据库,表,字段) 。

数据库操作

  1. 查询所有数据库
 show databases ;
  1. 查询当前数据库
select database() ;
  1. 创建数据库
create database [ if not exists ] 数据库名 [ default charset 字符集 ] [ collate 排序
规则 ] ;
  • 注:若创建的数据库需要制定字符集,使用语句
create database Temp default charset utf8mb4;
  1. 删除数据库
drop database [ if exists ] 数据库名 

如果删除一个不存在的数据库,将会报错。此时,可以加上参数 if exists ,如果数据库存在,再执行删除,否则不执行删除。

  1. 切换数据库
use 数据库名 ;

表操作

查询创建

  1. 查询当前数据库所有表
show tables;
  1. 查看指定表结构
desc '';
  1. 查询指定表的建表语句
show create table 表名 ;
  1. 创建表结构

CREATE TABLE 表名(
字段1 字段1类型 [ COMMENT 字段1注释 ],
字段2 字段2类型 [COMMENT 字段2注释 ],
字段3 字段3类型 [COMMENT 字段3注释 ],
......
字段n 字段n类型 [COMMENT 字段n注释 ]
) [ COMMENT 表注释 ] ;

注意: [...] 内为可选参数,最后一个字段后面没有逗号

比如,我们创建一张表user ,对应的结构如下,那么建表语句为:create

table user(
id int comment '编号',
name varchar(50comment '姓名',
age int comment '年龄',
gender varchar(1comment '性别'
comment '用户表';

表操作-数据类型

和Java一样,sql也有很多的数据类型

类型 大小 有符号(SIGNED)范围 无符号(UNSIGNED)范围 描述
TINYINT 1byte (-128,127) (0,255) 小整数值
SMALLINT 2bytes (-32768,32767) (0,65535) 大整数值
MEDIUMINT 3bytes (-8388608,8388607) (0,16777215) 大整数值
INT/INTEGER 4bytes (-2147483648,2147483647) (0,4294967295) 大整数值
BIGINT 8bytes (-2^63,2^63-1) (0,2^64-1) 极大整数值
FLOAT 4bytes (-3.402823466 E+38,3.402823466351 E+38) 0 和 (1.175494351 E38,3.402823466 E+38) 单精度浮点数值
DOUBLE 8bytes (-1.7976931348623157E+308,1.7976931348623157E+308) 0 和(2.2250738585072014E-308,1.7976931348623157E+308) 双精度浮点数值
DECIMAL 依赖于M(精度)和D(标度)的值 依赖于M(精度)和D(标度)的值 小数值(精确定点数)

如: 1). 年龄字段 -- 不会出现负数, 而且人的年龄不会太大 age tinyint unsigned 2). 分数 -- 总分100分, 最多出现一位小数 score double(4,1)

字符串类型

类型 大小 描述
CHAR 0-255 bytes 定长字符(需要指定长度)
VARCHAR 0-65535 bytes 变长字符串(需要指定长度)
TINYBLOB 0-255 bytes 不超过255个字符的二进制数据
TINYTEXT 0-255 bytes 短文本字符串
BLOB 0-65535 bytes 二进制形式的长文本数据
TEXT 0-65 535 bytes 长文本数据
MEDIUMBLOB 0-16 777 215 bytes 二进制形式的中等长度文本数据
MEDIUMTEXT 0-16 777 215 bytes 中等长度文本数据
LONGBLOB 0-4 294 967 295 bytes 二进制形式的极大文本数据
LONGTEXT 0-4 294 967 295 bytes 极大文本数据

char 与 varchar 都可以描述字符串,char是定长字符串,指定长度多长,就占用多少个字符,和字段值的长度无关 。而varchar是变长字符串,指定的长度为最大占用长度 。相对来说,char的性 能会更高些。

如: 1). 用户名 username ------> 长度不定, 最长不会超过50 username varchar(50) 2). 性别 gender ---------> 存储值, 不是男,就是女 gender char(1) 3). 手机号 phone --------> 固定长度为11 phone char(11)

日期时间类型

类型 大小 范围 格式 描述
DATE 3 1000-01-01至9999-12-31 YYYY-MM-DD 日期
TIME 3 -838:59:59 至 838:59:59 HH:MM:SS 时间值或持续时间
YEAR 1 1901 至 2155 YYYY 年份值
DATETIME 8 1000-01-01 00:00:00 至9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期和时间值
TIMESTAMP 4 1970-01-01 00:00:01 至2038-01-19 03:14:07 YYYY-MM-DD HH:MM:SS 混合日期和时间值,时间戳

如: 1). 生日字段 birthday birthday date 2). 创建时间 createtime createtime datetime

分类:

后端

标签:

其他

作者介绍

1
1436141288
V1