数据库基本操作
DDL
数据库模式定义语言DDL(Data Definition Language),是用于描述数据库中要存储的现实世界实体的语言。
1.对数据库创建、删除、修改操作
2.对表结构创建、删除、修改操作
创建数据库(database)
n多张不同的表结构
user1
user2
.......
数据库操作
查询
-- 查询所有数据库的名称:
show databases;
-- 查询某个数据库的字符集:查询某个数据库的创建语句
show create database 数据库名称;
-- 查询当前正在使用的数据库名称
select database();
-- 使用数据库
use 数据库名称;
创建
-- 创建数据库:
create database 数据库名称;
-- 创建数据库,判断不存在,再创建:
create database if not exists 数据库名称;
-- 创建数据库,并指定字符集
create database 数据库名称 character set 字符集名;
删除
-- 语法: 删除数据库
drop database 数据库名称;
-- 判断数据库存在,存在再删除
drop database if exists 数据库名称;
修改
-- 基本操作:修改数据库的字符集
alter database 数据库名称 character set 字符集名称;
注意:一般不对数据库进行修改操作,因为修改的安全性低,容易导致数据的缺失。
表操作
创建表
create table if not exists 表名(
列名1 数据类型1[长度] 【字段约束】,
列名2 数据类型2[长度] 【字段约束】,
....
列名n 数据类型n[长度] 【字段约束】
);
* 注意:最后一列,不需要加逗号(,)
use demo;
CREATE TABLE if not exists t_user(
id INT,
name VARCHAR(20),
age int,
create_time date,
address VARCHAR(100)
);
修改
1.修改表名称:
-- 语法:alter table 表名 rename to 新的表名;
ALTER TABLE t_user RENAME TO m_user ;
删除表
drop table 表名;
drop table if exists 表名;
数据类型
MySQL 支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。
数值类型
类型 | 大小 | 范围(有符号) | 范围(无符号) | 用途 |
TINYINT | 1 Bytes | (-128,127) | (0,255) | 小整数值 |
SMALLINT | 2 Bytes | (-32 768,32 767) | (0,65 535) | 大整数值 |
MEDIUMINT | 3 Bytes | (-8 388 608,8 388 607) | (0,16 777 215) | 大整数值 |
INT或INTEGER | 4 Bytes | (-2 147 483 648,2 147 483 647) | (0,4 294 967 295) | 大整数值 |
BIGINT | 8 Bytes | (-9,223,372,036,854,775,808,9 223 372 036 854 775 807) | (0,18 446 744 073 709 551 615) | 极大整数值 |
FLOAT | 4 Bytes | (-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) | 0,(1.175 494 351 E-38,3.402 823 466 E+38) | 单精度 |
DOUBLE | 8 Bytes | (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) | 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) | 双精度 |
DECIMAL | 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 | 依赖于M和D的值 | 依赖于M和D的值 | 小数值 |
日期和时间类型
表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。
类型 | 大小(bytes) | 范围 | 格式 | 用途 |
YEAR | 1 | 1901/2155 | YYYY | 年份值 |
DATE | 3 | 1000-01-01/9999-12-31 | YYYY-MM-DD | 日期值 |
TIME | 3 | ‘-838:59:59’/‘838:59:59’ | HH:MM:SS | 时间值或持续时间 |
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:00/2038 结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07 | YYYYMMDD HHMMSS | 混合日期和时间值,时间戳 |
字符串类型
类型 | 大小 | 用途 |
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(n) 和 varchar(n) 中括号中 n 代表字符的个数,并不代表字节个数,比如 CHAR(30) 就可以存储 30 个字符
DML
数据操作语句,用于添加、删除、更新和查询数据库记录,并检查数据完整性,常用的语句关键字主要包括 insert、delete、udpate 和select 等。(增添改查)
DML与DDL区别?
DDL 对数据库 表结构 增加、修改 删除操作
DML 表结构中的数据 增加(insert)、修改(update) 删除(delete) 查询(select )
insert
INSERT INTO 语句用于向表格中插入新的行。
语法格式:
INSERT INTO 表名称 (列名1,列名2 ...) VALUES (值1, 值2,....) // 插入数据列与值的顺序需要一一对应。
INSERT INTO 表名称 VALUES (值1, 值2,....) // 向表中插入所有列
例子:
-- 指定列名
INSERT INTO `t_user` (`id`, `name`, `age`, `addres`, `create_time`)
VALUES (1, 'mm', 1, '1', '2022-01-20 03:51:54');
-- 不指定列名
INSERT INTO `t_user` VALUES (1, 'mm', 1, '1', '2022-01-20 03:51:54');
update
语法格式:
update 表名称 set 字段=值,字段=值,...; ---直接修改整张表的所有行数据
update 表名称 set 字段=值,字段=值,... where 条件 ---- 根据条件查找到对应行数据 修改
例子:
---修改id=1
UPDATE t_user ` SET `name` = 'mm', `age` = 25 WHERE `id` = 1;
---修改所有
UPDATE t_user ` SET `name` = 'mm', `age` = 25;
delete
语法格式:
delete from 表名称 where 条件 根据条件删除表中的数据
TRUNCATE mayikt_user --清空表中所有的数据
例子:
-- 根据条件id=1 删除id=1 行数据
delete from t_user where where id=1;
---清空表中所有的数据
delete from t_user
--清空表中所有的数据
truncate t_user ;
truncate table t_user ;
TRUNCATE 与delete 不同?
truncate:会清空表中所有的数据,速度快,不可回滚;实质是删除整张表包括数据再重新创建表;
delete:逐行删除数据,每步删除都是有日志记录的,可以回滚数据;实质是逐行删除表中的数据;