本来早就写的,拖了好几天,人都懒散了。

关系数据库:储存的是实体与实体之间的关系。

mysql服务器与数据、表之间的关系:

*机器安装tomcat称为web服务器。

*机器安装了mysql称为数据库服务器。

总结:一个数据库的服务器中有多个数据库,一个数据库中有多个表,每个表中有多个字段。每个字段和java中类的属性是相对应的。每一条记录对应一个java实例对象。

在安装好了mysql以后,首先得输入mysql -uroot -p    然后登录密码就可以使用了mysql了。

一.数据语言的分类

DDL(数据定义语言):

*创建数据库、创建表的;

DML(数据操纵语言):

*插入数据(insert)、修改数据(update)、删除数据(delete);

DCL(数据控制语言):

*设置用户权限和控制语句;如if......else;

DQL(数据查询语言):

*查询数据select;

二.数据库(CRUD--增删查改):

*创建数据库:

语法:create database 数据库名称;

create database 数据库名称 character set 编码 collate 校对规则;

注意:校对规则跟编码是成对出现的。

*查看数据库:show databases;

*查看数据库的定义:show create database 数据库名称;

*删除数据库:drop database 数据库名称;

*修改数据库:语法:alter database 数据库名称 character set 编码 collate 校对规则;

*切换数据库:use 数据库名称;

*查看当前使用的数据库: select database();

三.表(table)(CRUD--增删查改):

*语法:create table 表名(

字段名 类型(长度) 约束,

字段名 类型(长度) 约束,

字段名 类型(长度) 约束

);

注意:表名小括号后面有分号;每一行后面有逗号,但最后一行没有逗号;数据的类型后面有长度,如果是字符串类型,长度必须加,如果是其他类型,可以不加。

*约束(单表):

*主键约束:

标识该条记录。通过pramary key声明主键。(默认 唯一、非空);

auto_increment数据库维护主键。自动增长。

*唯一约束:

值是惟一的。使用unique声明

*非空约束:

值不能为空 not null

例如:
create table employee2(     id int primary key auto_increment,     
//主键id,自动增长     name varchar(20) unique not null,      //name的值是唯一的,非空     
gender varchar(10),        birthday date,        entry_date date,      job
varchar(100),       salary double,     resume text     );
*删除表:

drop table 表名;跟数据库类似    例子:drop table employee2;

*修改表:

alter table 表名 add 字段 类型(长度)  约束;---添加字段

alter table 表名 drop 字段;--删除字段

alter table 表名 modify 字段 类型(长度) 约束 ;--修改字段或约束

alter table 表名 change 旧字段 新字段 类型(长度) 约束;--修改字段的名称

rename table 表名 to 新表名;修改表名

alter table 表名 charater set utf8;--修改字集

*使用desc 表名;查看表的信息

show tables;查看当前库内所有表名

show create table 表名;查看建表语句和字符集;

四.数据(CRUD--增删查改):

*数据的类型:

字符串类型:varchar、char

varchar和char的区别:

varchar(经常使用)长度是可变的。stuname varchar(8) 存入数据,但是如果存入helleoworld会报错。

char    长度是不可变的。stuname char(8)   存入数据如果是helloworld,数据类型的长度不够用就会用空格补全;

char的效率高;

*大数据类型(一般不用):

BLOB\TEXT:

BLOB:二进制文件

TEXT:字符

数值型:

tinyint、samllint、int、bigint、float、double.

逻辑型: 对应boolean

bit

日期型:

date、time、datetime、timestamp

date只包含日期

time只包含时分秒

datetime和timestamp包含日期和时分秒区别:

datetime需要手动录入时间。

timestamp不传入数据,默认选择当前系统时间。

*数据的插入:

insert into 表名(字段1,字段2,字段3......) values(值1,值2,值3....);有几列插入几列

insert into 表名 values(值1,值2,....);插入所有列

注意:

数据与字段的类型相同。

字段长度需要控制。

字符串或日期类型需要使用单引号''。

*修改语句:

语法:delete  ...... from  表名  ;删除数据

truncate删除数据,先删除整个表,再新建一个新的表。

delete删除数据,是一条一条的删除的。

事物中使用到的(insert、update、delete)

*修改语句:

语法:update 表名 set 字段1=值,字段2=值,......   [where]

如果没有where条件,默认更新所有的条件。

有where提交,选择某一条记录。

*查询语句:

select * from 表名;//查询所有的字段

select 字段1,字段2,.... from 表名;//显示查询所有字段

select DISTINCT 字段名 from 表名;//过滤表中重复的数据

例题(过滤表中重复的数据): select distinct english from stu;

查询的列可以运算,可以使用别名: 使用as别名, 并且as可以省略。

常用的符号:

> <     <=    >=   =  !=

语法:  in(范围内的内容)

like    --模糊查询     写法: like'张_'或者'张%'都可以查询姓张的,名字是两个字的。

_和%的区别:占位符。_只占一位,而%可以占多位。

*排序 使用order by升序默认的(asc)/降序(desc)

注意:排序语句出现在select语句的末尾

*聚集函数:

count    获取数量

sum      求和

avg       平均数

max      最大值

min      最小值

group  by分组(一起使用)条件过滤需要用到having,不能使用where;

小结:select语句顺序:S-F-W-G-H-O组合

select.....from.....where....group  by....having....order by.....;