MySQL数据库 常用命令 SQL语法组成 数据库事务 元数据 反射

数据库基础知识
数据库由一批数据构成的有序集合,这些数据被分门别类地存放在一些结构化的数据表里,而数据表之间又往往存在交叉引用的关系,这种关系使数据库又被称为关系型数据库。
数据库:按照数据结构来组织、存储、和管理数据的仓库。

数据库发展历史

  • 人工管理阶段
    人力手工整理存储数据
  • 文件系统阶段
    使用磁盘文件来存储数据
  • 数据库系统阶段
    关系型数据库
  • 高级数据库阶段
    关系-对象型数据库

常用的数据库

  • Oracle
    应用广泛、功能强大、分布式数据库系统 “关系-对象“型数据库
  • MySQL
    快捷 可靠 开源 免费 与PHP组成经典的LAMP组合
    特征:性能快捷、优化SQL语言 容易使用 多线程和可靠性 多用户支持
    可移植性和开放源代码 遵循国际标准和国际化支持 为多种编程语言提供API
  • SQL Server
    针对不同用户群体的五个特殊的版本 易用性好
  • DB2
    应用于大型应用系统,具有较好的可伸缩性

MySQL命令:
登录命令:mysql -h 127.0.0.1 -u root -p root;
选定默认数据库:use dbname;
显示所有数据库:show databases;
显示默认数据库中所有的表:show tables;
放弃正在输入的命令:\c
显示命令清单:\h
退出mysql程序:\q
查看mysql服务器状态信息:\s
用来备份:mysqldump

mysqladmin命令:
创建数据库:mysqladmin -u root -p create newdb
删除数据库:mysqladmin -u root -p drop newdb
更改密码:mysqladmin -u root -p password “newpassword”

SQL是Structured Query Language(结构化查询语言)的缩写。SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。

SQL语法组成

  • DML(Data Manipulation Language数据操作语言)
    查询、插入、删除和修改数据库中的数据
    select insert update delete等

  • DCL(Data Control Language数据控制语言)
    用来控制存取许可、存取权限等
    grant revoke等

  • DDL(Data Definition Language数据定义语言)
    用来建立数据库、数据库对象和定义其列
    create table、drop table、alter table等

  • 功能函数
    日期函数、数学函数、字符函数、系统函数等

DDL语句

  • 创建表
    create table 表名(
    列名1 列类型 列约束,
    列名2 列类型 列约束,
    …);
  • 显示表结构:desc 表名
  • 表复制
    create table 新表 select * from 旧表 ;复制表结构和数据
    create table 新表 select * from 旧表 where 1=2; 只复制表结构
  • 删除表
    drop table if exists 表名;
  • 修改表
    alter table 表名 action(修改的具体内容);
    action可为以下语句:
    add 列名 列类型 列约束 [first|after 列名]
    add primary key (列名)
    add foreign key(列名) references 表名(列名)
    add 列名 set default 默认值
    change 旧列名 新列名 列类型 列约束[first|after 列名]
    modify 列名 列类型 列约束[first|after 列名]
    drop 列名
    drop primary key
    engine 类型名 改变表类型
    rename as 新列名 将表名更改
  • 截断表
    truncate table 表名; 作用:将表中的所有数据全部清空,并且不能回退

drop与truncate的区别:
drop是删除表及数据
truncate只是清空表中的数据,表并没有删除

数值列类型
tinyint 非常小的整数 1字节
smallint 较小的整数 2字节
mediumint 中等大小的整数 3字节
int 标准整数 4字节
bigint 大整数 8字节
float 单精度浮点数 4字节
double 双精度浮点数 8字节
decimal 一个串的浮点数
字符串列类型
char 定长字符串
varchar 可变长字符串
tinyblob 非常小的blob(二进制大对象)
blob 小blob
mediumblob 中等的blob
longblob 大blob
tinytext 非常小的文本串
text 小文本串
mediumtext 中等文本串
longtext 大文本串
enum 枚举 列可赋予某个枚举成员
set 集合 列可赋予多个集合成员
日期和时间列类型
date “1000-01-01"到"9999-12-31” 3字节
time “-838:59:59"到"838:59:59” 3字节
datetime “1000-01-01 00:00:00"到"9999-12-31 23:59:59” 8字节
timestamp 19700101000000到2037年的某个时刻 4字节
year 1901到2155 1字节

约束
not null 非空约束
auto_increment 自动标识列 自增1,唯一标志符号或者顺序值
primary key 主键约束 列值不能重复且不为空
unique 唯一约束 被约束的列的取值不能重复,但可以为空
unsigned 无符号 此属性禁用负值,将数值的取值范围从零开始
foreign key 外键约束 通常为另外一个表的主键
default 默认值约束
character set name 指定字符集(仅适用于字符串)
check age>18 (mysql不支持) 检查约束

主表和从表

  • 当主表中没有对应的记录时,不能将记录添加到子表
  • 不能更改主表中的值而导致子表中的记录孤立
  • 子表存在与主表对应的记录,不能从主表删除该行
  • 删除主表前,先删子表

DML语句:

  • 插入数据
    insert into 表名(列名) values(值列表);
    insert into 表名(列名) select 列名 from 源表名;

  • 查询数据
    select *|列名,列名 from 表名
    where 条件
    group by (having)分组统计
    order by 列名|表达式 排序(默认升序asc,desc为倒序)
    limit start,length 对结果范围的限制
    where子句中使用
    (not) between and:(不)在两数之间
    in(值列表):在一个范围内相当于or
    like:模糊查询 %通配符 _占位符
    regexp:正则
    is (not) null:(不)空
    <=>:判断两列一样的值
    五个聚合函数
    count( 列名| * ):计数
    sum(列):求总和
    avg(列):求平均值
    max(列):最大值
    min(列):最小值
    where与having的区别
    where在分组统计之前执行,having在分组统计之后执行
    where中不能使用聚合函数作为条件,having中可以使用聚合函数

  • 修改数据
    update 表名 set 列名=值 where 条件;

  • 删除数据
    delete from 表名 where条件;
    delete from 表名 where 字段名 in(值列表);

drop,truncate,delete的区别
drop:删除表结构和表中的所有数据,不可回退
truncate:清空表中的数据,但不删除表结构,也不可回退
delete:可以有选择性的删除部分数据,可以回退

高级查询

  • 多表查询:
    select * from 表1,表2;
    查询结果为两个表中数据的乘积,笛卡尔积
    表连接条件可以使用等值连接和非等值连接
    内连接就是等值连接

  • 子查询
    也称为嵌套查询,可以放置的位置:from之后 where having
    子查询在主查询之前一次执行完成,子查询的结果被主查询使用

数据库事务
事务是用户定义的一个数据库操作序列,这些操作序列要么全做要么全不做,是一个不可分割的工作单位。

事务的四个特性
原子性:最小的执行单元,不能再分
一致性:从一个状态到另一个状态后,应保持一致
隔离性:两个事务互不干扰
持久性:一旦提交,不能回退

事务操作的三个语句
commit:提交
rollback:回退到事务开始处,撤销当前事务的所有操作
savepoint:设置保存点

mysql的事务:
默认是自动提交事务
通过set autocommit=0 修改成手动提交

元数据
获取数据的数据就是元数据
数据库表的数据放到jdbc的ResultSet中
元数据是在执行查询操作的时候获取的
常用方法:
getColumnCount();获取数据库的字段个数
getColumnName(第一个); 获取数据库的字段名字
getColumnType(1);字段类型
getCatalogName(1);获取数据库名

java中提供了 三种获取反射对象的方式:
1.Class.forName(“类的全路径名包括 类名”);
2.对象.getClass(); 方法 , 这个方法是 Object 类的
3.类名.class

我们拿到这个反射对象就可以 获取类的结构
类由哪些属性,方法,构造器组成,属性的访问修饰符, 数据类型…

通过反射对象获取类的属性 Field
Field[] field = clazz.getFields(); 获取所有公共的属性对象
Field类的常用方法:
getName();获取共有的属性名

Field[] field = clazz.getDeclaredFields();获取所有属性 包括私有
getName();

field.getModifiers();
field.getType();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值