快速复习数据库(包含代码举例注释)

登录数据库

mysql -u用户名 -p
密码

数据库命令以**分号;**结尾,一条可以分为好几行,不区分大小写

注释方式是

单行 – 内容 注意–后面有一个空格

多行 /* */

SQL语句

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

数据库设计DDL

DDL数据库设计
创建数据库

database也可以改为schema


create database 数据库名字;
-- create schemas 数据库名字

如果创建的数据库已经有了会报错。加一个判断语句if not exists


create database if not exists 数据库名字;
CREATE DATABASE mydatabase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
查询数据库

show databases
-- show schemas
切换数据库

use 数据库名字;

查看当前正在使用的数据库是哪个数据库


select database();
删除数据库

drop database 数据库名

如果该数据库已经没有了在删除会报错,此时使用判断语句if exists


drop database if exists 数据库名
DDL表操作
约束关键字
字段 描述 约束
非空约束 该字段值不能为null not null
唯一约束 保证字段的所有有效数据都是唯一的,不能重复 unique
主键约束 主键是一个或数个的唯一标识,要求非空且唯一,主键自增auto_increment primary key
默认约束 保存数据时,如果未指定该字段值,则采用默认值 default
外键约束 让两张表的数据建立逻辑连接,保证数据的一致性和完整性 foreign key
创建表

create table 表名(
 字段1 字段1类型 [约束] [comment '字段1注释' ],
 字段2 字段2类型 [约束] [comment '字段2注释' ],
 ......
 字段n 字段n类型 [约束] [comment '字段n注释' ]
) [ comment '表注释' ] ;
[]代表可写可不写

create table tb_user(
    id int primary key comment '用户id',
    username varchar(20) not null unique comment '用户账号', -- 约束可以多个存在
    name varchar(5) not null comment '名字',
    age int comment '年龄',
    gender char(1) default '男' comment '性别'
)comment '用户表';

查询表

  • 查看当前数据库所有表格:show tables;
  • 查看表结构:desc 表名;
  • 查看建表语句:show create table 表名;

修改表

  • 添加字段:alter table 表名 add 字段名 类型(长度) [comment 注释] [约束];
  • 修改字段类型:alter table 表名 modify 字段名 新类型(长度);
  • 修改字段名和字段类型:alter table 表名 change 原字段名 新字段名 类型(长度) [comment 注释] [约束];
  • 删除字段:alter table 表名 drop column 字段名;
  • 重命名表:rename table 旧名 to 新名;

以上操作最好以可视化工具的方式修改,不使用sql语句

Mysql数据类型

数值类型
分类 类型 大小 (byte) 有符号 (SIGNED) 范围 无符号 (UNSIGNED) 范围 描述
数值类型 tinyint 1 (-128, 127) (0, 255) 小整数值
smallint 2 (-32768, 32767) (0, 65535) 大整数值
mediumint 3 (-8388608, 8388607) (0, 16777215) 大整数值
int 4 (-2147483648, 2147483647) (0, 4294967295) 大整数值
bigint 8 (-2^63, 2^63-1) (0, 2^64-1) 极大整数值
float 4 (-3.402823466 E+38, 3.402823466351 E+38) 0 和 (1.175494351 E-38, 3.402823466 E+38) 单精度浮点数值
double 8 (-1.7976931348623157 E+308, 1.7976931348623157 E+308) 0 和 (2.2250738585072014 E-308, 1.7976931348623157 E+308) 双精度浮点数值
decimal 小数值 (精度更高)
关键字unsigned。控制是否有符号
-- 创建一个无字符的极小整数值
gender  tinyint unsigned  not null,

float(5,2)5表示整个数字长度,2 表示小数位个数
double(5,2)5表示整个数字长度,2 表示小数位个数
decimal(5,2)5表示整个数字长度,2 表示小数位个数
字符串类型
分类 类型 大小 描述
字符串类型 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(10): 最多只能存10个字符,不足10个字符,占用10个字符空间  AB  性能高 浪费空间
varchar(10): 最多只能存10个字符,不足10个字符, 按照实际长度存储   ABC 性能低 节省空间
日期类型
分类 类型 大小(byte) 范围 格式 描述
日期类型 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 混合日期和时间值,时间戳

数据库操作DML

insert语法
  • 插入字段映射规范插入: insert into 表名 (字段1, 字段2) values (值1, 值2);
  • 全部字段映射规范插入: insert into 表名 values (值1, 值2, ...);
  • 批量映射插入(指定字段): insert into 表名 (字段1, 字段2) values (值1, 值2), (值1, 值2);
  • 批量映射插入(全部字段): insert into 表名 values (值1, 值2, ...), (值1, 值2, ...);

insert into table_emp(id, username, name, gender, img, entrydate, create_time, update_time)
              values (null,'zhizhu','蜘蛛'
  • 26
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然,我可以为您提供一个简单的Java代码示例来演示数据库事务的使用。 ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; public class TransactionExample { public static void main(String[] args) { Connection connection = null; try { // 建立数据库连接 connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "username", "password"); // 关闭自动提交 connection.setAutoCommit(false); // 执行第一个SQL语句 String sql1 = "INSERT INTO table1 (column1, column2) VALUES (?, ?)"; PreparedStatement statement1 = connection.prepareStatement(sql1); statement1.setString(1, "value1"); statement1.setString(2, "value2"); statement1.executeUpdate(); // 执行第二个SQL语句 String sql2 = "UPDATE table2 SET column3 = ? WHERE column4 = ?"; PreparedStatement statement2 = connection.prepareStatement(sql2); statement2.setString(1, "new value"); statement2.setString(2, "some condition"); statement2.executeUpdate(); // 提交事务 connection.commit(); } catch (SQLException e) { // 发生异常时回滚事务 try { if (connection != null) { connection.rollback(); } } catch (SQLException ex) { ex.printStackTrace(); } e.printStackTrace(); } finally { // 关闭连接 try { if (connection != null) { connection.close(); } } catch (SQLException e) { e.printStackTrace(); } } } } ``` 以上示例代码演示了如何在Java中使用数据库事务。首先,我们通过`DriverManager.getConnection()`方法建立与数据库的连接。然后,通过`setAutoCommit(false)`关闭自动提交功能,这样我们就可以手动控制事务的提交和回滚。接下来,我们执行多个SQL语句,并使用`PreparedStatement`来设置参数并执行更新操作。如果发生任何异常,我们将回滚事务。最后,我们关闭数据库连接。请注意,您需要将示例代码中的数据库URL、用户名和密码替换为您自己的实际值。 希望这个示例能对您有所帮助!如果您有任何其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值