使用软件:mysql+navicat premium
mysql,oracle db2,sqlsever属于关系型数据库,
二维表是指由行和列组成的表,如excel,基于二维表存储数据的数据库就是关系型数据库,不基于二维表存储数据的数据库就是非关系型数据库
一个数据库服务器可以创建多个数据库,一个数据库可以包含多张表,一张表又可以包含多行记录
sql语句可以单行或多行书写,以分号结尾。可以用空格/缩进增加可读性
sql语句不区分大小写,关键字建议大写
单行注释:--注释内容 或 #注释内容
多行注释:/*注释内容*/
分类 | 全称 | 说明 |
DDL | Data Definition Language | 数据定义语言,用来定义数据库对象(数据库,表,字段) |
DML | Data Manipulation Language | 数据库操作语言,增删查改 |
DQL | Data Query Language | 数据库查询语言 |
DCL | Data Control Language | 数控制语言,用来创建数据库用户,控制数据库的访问权限。 |
DDL
#查询所有的数据库
show databases;#注意加s
#查询当前数据库
select database(); #没有s
#创建数据库
create database [if not exists] 数据库名 [default charset 字符集] [collate 排序规则];
create database tt;
create database if not exitists itcast;
create database itheima default charset utf8m4;
#删除数据库
use 数据库名;
use itcast;
#查询当前所有表
show tables;
use sys;
show tables;
#查看指定表的结构
desc tables;
#查询指定表的建表语句
show create table 表名;
#创建表结构
create table 表名(
字段1 字段1类型 [comment 字段1注释], #注意加逗号
字段2 字段2类型 [comment 字段2注释],
字段3 字段3类型 [comment 字段3注释],
..........
字段n 字段n类型 [comment 字段n注释] #注意最后一个没有逗号
)[comment 表注释]; #别忘了分号
#表的操作-修改
#添加字段
alter table 表名 ADD 字段名 类型(长度)[comment 注释] [约束]
alter table emp ADD nickname varchar(20) comment '昵称';
#修改数据类型
alter table 表名 modify 字段名 新数据类型(长度)
alter table emp modify nickname varchar(10);
#修改字段名和字段类型
alter table 表名 change 旧字段名 类型(长度) [comment 注释] [约束];
alter table emp change nickname username varchar(30) comment '昵称';
#删除字段
alter table 表名 drop 字段名;
alter table emp drop username;
#修改表名
alter table 表名 rename to 新表名;
alter table emp rename to employee;
#删除表
drop table [if exists]表名;
drop table if exists inform;
#删除指定表,并重新创建表
turncate table 表名;
truncate table tb_user;
数值类型
类型 | 大小 | 有符号(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 E- 38,3.402823466 E+38) | 单精度浮点数值 |
DOUBLE | 8bytes | (-1.7976931348623157 E+308, 1.7976931348623157 E+308) | 0 和(2.2250738585072014 E-308, 1.7976931348623157 E+308) | 双精度浮点数值 |
DECIMAL | 依赖于M(精度)和D(标度) 的值 | 依赖于M(精度)和D(标度)的值 | 小数值(精确定点数) |
s字符串类型
类型 | 大小 | 描述 |
CHAR | 0-255 bytes | 定长字符串(需要指定长度) |
VARCHAR | 0-65535 bytes | 变长字符串(需要指定长度) |
TINYBLOB | 0-255 bytes | 不超过255个字符的二进制数据 |
TINYTEXT | 0-255 bytes | 短文本字符串 |
BLOB | 0-65 535 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的性能会更高些。
日期时间类型
类型 | 大小 | 范围 | 格式 | 描述 |
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 | 混合日期和时间值,时间戳 |
brithday date
DML
数据操作语言(增删查改)
#给指定字段添加数据
insert into 表名 (字段1,字段2.....) values (值1,值2,.....);