MYSQL :开源免费的数据库,小型的数据库.已经被Oracle收购了.MySQL6.x版本也开始收费。
Oracle :收费的大型数据库,Oracle公司的产品。Oracle收购SUN公司,收购MYSQL。
DB2 :IBM公司的数据库产品,收费的。常应用在银行系统中.
SQLServer:MicroSoft 公司收费的中型的数据库。C#、.net等语言常使用。
SyBase :已经淡出历史舞台。提供了一个非常专业数据建模的工具PowerDesigner。
SQLite : 嵌入式的小型数据库,应用在手机端。
Java相关的数据库:MySQL,Oracle
数据库与数据库管理系统的关系
SQL语言
数据定义语言:DDL(Data Definition Language)
用来定义数据库对象:数据库,表,列等。
关键字:create,alter,drop等
数据操作语言:DML(Data Manipulation Language)
用来对数据库中表的记录进行更新。
关键字:insert,delete,update等
数据控制语言:DCL(Data Control Language)
用来定义数据库的访问权限和安全级别,及创建用户。
数据查询语言:DQL(Data Query Language)
用来查询数据库中表的记录。
关键字:select等
java中数据类型对应MySQL中的数据类型
Java数据类型 | 简写数据类型 | 标准SQL数据类型 |
byte、java.lang.Byte | byte | TINYINT |
short、java.lang.Short | short | SMALLINT |
int、java.lang.Integer | integer | INGEGER |
long、java.lang.Long | long | BIGINT |
float、java.lang.Float | float | FLOAT |
double、java.lang.Double | double | DOUBLE |
java.math.BigDecimal | big_decimal | NUMERIC |
char、java.lang.Character | character | CHAR(1) |
boolean、java.lang.Boolean | boolean | BIT |
java.lang.String | string | VARCHAR |
boolean、java.lang.Boolean | yes_no | CHAR(1)(‘Y’或‘N’) |
boolean、java.lang.Boolean | true_false | CHAR(1)(‘Y’或‘N’) |
java.util.Date、java.sql.Date | date | DATE(日期类型,格式为yyyy-MM-dd,只有年月日,没有时分秒) |
java.util.Date、java.sql.Time | time | TIME |
java.util.Date、java.sql.Timestamp | timestamp | TIMESTAMP |
java.util.Calendar | calendar | TIMESTAMP |
java.util.Calendar | calendar_date | DATE |
byte[] | binary | VARBINARY、BLOB |
java.lang.String | text | CLOB |
java.io.Serializable | serializable | VARBINARY、BLOB |
java.sql.Clob | clob | CLOB |
java.sql.Blob | blob | BLOB |
java.lang.Class | class | VARCHAR |
java.util.Locale | locale | VARCHAR |
java.util.TimeZone | timezone | VARCHAR |
java.util.Currency | currency | VARCHAR |
having与where的区别:
having是在分组后对数据进行过滤,where是在分组前对数据进行过滤
having后面可以使用分组函数(统计函数),where后面不可以使用分组函数。
DOS操作数据乱码解决
乱码原因:
因为mysql的客户端编码的问题我们的是utf8,而系统的cmd窗口编码是gbk
解决方案
临时修改mysql客户端编码
set character_set_results=gbk; / set names gbk;
永久修改
1.在mysql安装目录下有my.ini文件
2.default-character-set=gbk 客户端编码设置
3.character-set-server=utf8 服务器端编码设置
4.重启服务
查看所有mysql编码
show variables like 'character%';
client connetion result 和客户端相关
database server system 和服务器端相关
SQL Select语句执行顺序
* from子句组装来自不同数据源的数据
* where子句基于指定的条件对记录进行筛选
* group by子句将数据划分为多个分组
* 使用聚集函数进行计算
* 使用having子句筛选分组
* 计算所有的表达式
* 使用order by对结果集进行排序
* select集合输出
数据复制
-- 同一个服务器上,同一个数据库中,复制表tb_src中的数据到tb_dest表(tb_dest表不存在,需要新建)
create table tb_dest select * from tb_src where ...;
-- 同一个服务器上,同一个数据库中,复制表tb_src中的数据到tb_dest表(tb_dest表存在,不需要新建)
insert into tb_dest select * from tb_src where ...;
-- 同一个服务器上,不同数据库中,复制数据库db1上的表tb_src中的数据到db2上的表tb_dest表(tb_dest表不存在,需要新建)
create table db1.tb_dest select * from db2.tb_src where ...;
-- 同一个服务器上,不同数据库中,复制表db1上的表tb_src中的数据到db2上的表tb_dest表(tb_dest表存在,不需要新建)
insert into db1.tb_dest select * from db2.tb_src where ...;
命令行执行sql文件
1.登录mysql
2.使用如下命令执行服务器上/tmp下的tb_user.sql
mysql> \. /tmp/tb_user.sql
备份数据库
mysql命令行备份数据库MySQL数据库使用命令行备份|MySQL数据库备份命令
例如:
数据库地址:127.0.0.1
数据库用户名:root
数据库密码:pass
数据库名称:myweb
备份数据库到D盘根目录
mysqldump -h127.0.0.1 -uroot -ppass myweb > d:/backupfile.sql
备份到当前目录 备份的sql文件中包含删除表的sql语句,使用该备份文件恢复时能够让该备份覆盖已有数据库而不需要手动删除原有数据库
mysqldump --add-drop-table -h127.0.0.1 -uroot -ppass myweb > backupfile.sql
直接将MySQL数据库压缩备份 备份到D盘跟目录
mysqldump -h127.0.0.1 -uroot -ppass myweb | gzip > d:/backupfile.sql.gz
备份MySQL数据库某个(些)表。此例备份table1表和table2表。备份到linux主机的/home下
mysqldump -h127.0.0.1 -uroot -ppass myweb table1 table2 > /home/backupfile.sql
同时备份多个MySQL数据库
mysqldump -h127.0.0.1 -uroot -ppass --databases myweb myweb2 > multibackupfile.sql
仅仅备份数据库结构。同时备份名为myweb数据库和名为myweb2数据库
mysqldump --no-data -h127.0.0.1 -uroot -ppass --databases myweb myweb2 > structurebackupfile.sql
备份服务器上所有数据库
mysqldump --all-databases -h127.0.0.1 -uroot -ppass > allbackupfile.sql
还原MySQL数据库的命令。还原当前备份名为backupfile.sql的数据库
mysql -h127.0.0.1 -uroot -ppass myweb < backupfile.sql
还原压缩的MySQL数据库
gunzip < backupfile.sql.gz | mysql -h127.0.0.1 -uroot -ppass myweb
将数据库转移到新服务器。此例为将本地数据库myweb复制到远程数据库名为serweb中,其中远程数据库必须有名为serweb的数据库
mysqldump -h127.0.0.1 -uroot -ppass myweb | mysql --host=***.***.***.*** -u数据库用户名 -p数据库密码 -C serweb