数据库初识:
数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除及查询操作.
数据库管理系统:
数据库管理系统(DataBase Management System,DBMS):指一种操作和管理数据库的大型软件,用于建立.使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性.用户通过数据库管理系统访问数据库中的数据.
数据库与数据管理系统的关系.
数据库表:
数据库中以表为组织单位存储数
表类似我们的java类,每个字段都有对应的数据类型.
我们熟悉的java程序来与关系型数据对比,就会发现如下关系:
类=============>表
类中属性=======>表中字段
对象===========>记录
表数据:
根据表字段所规范的数据类型,向其中填入一条条的数据,而表中的每条数据类似类的实例对象.表中的一行一行的信息称之为记录.
表数据与java类对象的对应:
常见数据库:
常见的数据库管理系统:
Mysql:开源免费的数据库,小型的数据库.已经被oracle收购.mysql6.x版本也开始收费
Oracle:收费的大型数据库,oracle公司的产品,oracle收购sun公司,收购mysql.
DB2:IBM公司的数据库产品,收费的.常应用在银行系统中
SQLSERVER:Microsoft公司收费的中型的数据库.c#,.net等语言常使用.
SyBase:已经淡出历史舞台.提出了一个非常专业数据建模的工具powerDesigner.
SQLite:嵌入式的小型数据库,应用在手机端.
常用的数据库:mysql,oracle
SQL语句:
数据库不识别java语言,我们使用数据库认识的sql语句.是数据库的代码.
结构化查询语言(Structured Query Language)简称sql.是关系型数据库管理系统都需要遵循的规范.不同的数据库生产厂商都支持sql语句,但都有特有内容.
SQL规范(普通话) =====>mysql特有(方言)
====>oracle特有(方言)
SQL语句分类:
Sql分类:
数据定义语言(DDL data Definition Language):用来定义数据库对象:数据库,表,列等.关键字:create,alter,drop等;
数据操作语言(DML data Manipulation Language):用来对数据库表的记录进行更新.关键字:insert,delete,update等;
数据控制语言(DCL data control Language):用来定义数据库的访问权限和安全级别,及创建用户
数据查询语言(DQL data query language):用来查询数据库中表的记录.关键字:select,from,where等;
SQL通用语法:
Sql语句可以单行或多行书写,以分号结尾;
可使用空格缩进来增强语句的可读性.
Mysql数据库的sql语句不区分大小写,关键字建议使用大写.(SELECT * FROM user)
同样使用/**/的方式完成注释
Mysql中的我们常使用的数据类型是:int 整型,double 浮点型,varchar 字符串型 ,date 日期类型,格式为yyyy-MM-dd,只用年月日,没有时分秒.
DDL:
操作库:
创建库:create database 数据库名 character set 字符集;
查看数据库:show databases;
查看某个数据库的定义信息:show create databases 数据库名;
删除数据库:drop database 数据库名称;
查看正在使用的数据库:select datatbase();
切换数据库: use 数据库名;
操作表:
建表:create table 表名(字段名 类型(长度)[约束],字段名 类型(长度)[约束]);
类型:varchar(n) 字符串 int 整型 double 浮点 date 时间 timestamp 时间 戳
约束:primary key主键.被主键修饰字段中的数据,不能重复.不能为null
查看表:
查看数据库中的所有表: show tables;
查看表结构: desc 表名;
删除表:
Drop table 表名;
修改表结构:
Alter table 表名 add 列名 类型(长度)[约束]; 作用:修改表添加列.
Alter table 表名 modify 列名 类型(长度) 约束; 作用:修改表修改列的类型及 约束;
Alter table 表名 change 旧列名 新列名 类型(长度) 约束; 作用:修改表修改 列名
Alter table 表名 drop 列名; 作用:修改表删除列.
Rename table 表名 to 新表名; 作用:修改表名;
Alter table 表名 character set 字符集; 作用:修改表的字符集.
DML:
插入表记录:insert
Insert into 表 (字段1,字段2,字段3..) values (值1,值2,值3...);向表中插 入某些字段:
Insert into 表 values (值1,值2,值3,..,值n);向表中插入所有字段.
注意:值与字段必须对应,个数相同,类型相同;
值的数据大小必须在字段的长度范围内.
处理数值类型外,其他的字段类型的值必须使用引号引起(建议单引号)
如果要插入空值,可以不写字段,或者插入null;
更新表记录:update
用来修改指定条件的数据,将满足条件的记录指定列修改为指定值.
Update 表名 set 字段名=值,字段名=值,...;更新所有记录的指定字段
Update 表名 set 字段名=值,字段名=值,...where 条件;只更新满足条件的 字段
注意:列名的类型与修改的值要一致
修改值的时候不能超过最大长度
除了数值类型外,其他的字段类型的值必须使用引号引起.
删除记录:delete:
Delete from 表名 [where 条件]; 或 truncate table 表名;
注意:delete 一条一条记录删除,不清空auto_increment记录数;
Truncate直接将表删除,重新建表.auto_increment将置为零,从新开始.
DOS下面乱码问题:
Insert语句时报错 error 1366 Incorrect string value: '\xB7\xFE\xD7\xB0' for column 'cname' at row 1;
解决1: cmd命令窗口中输入命令 set names gbk;
原因:因为mysql的客户端设置编码是utf-8,而系统的cmd窗口编码是gbk.
查看mysql内部设置的编码:
Show variables like ‘character%’; 查看所有mysql的编码.
修改client connection results 的编码一致(GBK编码)
将客户端编码修改为gbk.
#方式1:单独设置
set character_set_client=gbk;
set character_set_connection=gbk;
set character_set_results=gbk;
#方式2:快捷设置
set names gbk;
DQL:
DQL数据查询语言(优化是难点):
语法:select [distinct] * | 列名,列名 from 表 where 条件;
简单查询:select * from 表名;
查询表中某个某几个字段: select 字段名1,字段名2 from 表名;
别名查询,使用关键字 as
表别名:select * from 表名 as p;
列别名:select 列名 as p from 表名;
去掉重复值:select distinct price from 表名;
查询结果是表达式(运算查询):将所有商品的价格+10元进行显示:
Select pname ,price+10 from product;
条件查询:<>小于大于等
Between..and 显示在某一区间的值(含头含尾)
IN(set) 显示在in列表中的值,set 无重复.
Like ‘张pattern’ 模糊查询like语句中,%代表0个或多个任意字符 _代表一个 字符
isNUll 判断是否为空;
逻辑运算符:and 多个条件同时成立
Or 多个条件任意成立
Not 不成立