1.基本概念
1)数据库:以某种方式保存数据的集合
2)数据库应用程序:使用数据库的方式保存数据,以其他语言开发的程序。
3)数据库管理系统:管理数据库的软件,可以对数据库进行增删查改、备份等。例如MySQL、Oracle
4)数据库管理员:管理和维护数据库管理系统的人员
5)数据库开发工程师:使用数据库开发应用程序的工程师
2.数据库的分类
1)传统的数据库:关系型数据库SQL,特点:以表为单位保存数据。
一行记录为一条数据,一列的名称叫字段。
MySQL、Oracle、MS SQL server、Sybase、DB2、Excel...
2)新兴的数据库:非关系型数据库 NoSQL(Not only SQL)
保存方式多种多样,数据没有固定格式。
3.MySQL数据类型
整数
mysql 与 java 类型对应
tinyint byte
smallint short
int int
bigint long
浮点
float
double
定长字符串
char(n):n表示长度,效率高
变长字符串
varchar(n):n表示最大长度
日期时间类型
date:保存日期
time:保存时间
datetime:同时保存日期和时间
timestamp:保存日期、时间和微秒数
4.数据约束
数据约束的作用:保证数据的安全性、完整性和一致性。
非空约束
Not null
必须有值,不能为null值
唯一约束
unique
一个字段中的所有值不可重复
主键约束=非空+唯一
Primary key
每个表都应当有一个主键,没有实际意义,可以唯一的表示一条记录
检查约束
Check
规定一个字段中的数据必须符合某种条件(MySQL不支持)
外键约束
Foreign key
体现表和表的关系,一个字段引用了另一个表中的字段值
5.结构化查询语言SQL
作用:用来给数据库管理系统发送指令
特点:不区分大小写
分类:
数据查询语言DQL
Select
查询数据
数据定义语言DDL
Create
Alter
Drop
创建对象
修改对象
删除对象
数据操纵语言DML
Insert
Update
Delete
插入数据
修改数据
删除数据
数据控制语言DCL
Grant
Revoke
授予权限
收回权限
事务控制语言TCL
Commit
Rollback
提交事务
回滚事务
6.注释
#单行注释
-- 单行注释
/*多行注释*/
7.操作数据库
#查看所有的数据库
show databases;
#创建数据库
create database xuyundatabase;
#切换使用的数据库
use xuyundatabase;
#查看当前数据库中所有表
show tables;
#创建用户
#create user 用户名@主机名 identified by '密码';
create user xuyun@localhost identified by 'xuyun';
#授予权限
#grant all on 数据库名.表名 to 用户名@主机名;
grant all on xuyundatabase.* to xuyun@localhost;
#收回权限
revoke all on xuyundatabase.* from xuyun@localhost;
#删除用户
drop user xuyun@localhost;
8.操作表
(1)创建表:
Create table 表名(
字段名 字段类型 约束,
字段名 字段类型 约束,
……
) charset=utf8 ;
注意:最后一个字段之后没有逗号。
MySQL中可以在创建表时指定字符集编码
(2)删除表:
Drop table 表名;
(3)查看表结构:
Desc 表名;
(4)修改表
#增加字段
#alter table 表名 add 字段名 字段类型 约束;
alter table t_student add cid int not null references t_class(id);
#修改字段类型
#alter table 表名 modify 字段名 字段类型 约束;
alter table t_student modify name varchar(100) not null;
#修改字段名
#alter table t_student rename column birth to birthdate;#版本问题?
#alter table 表名 change 字段名 新字段名 字段类型 约束;
alter table t_student change birth birthdate date;
#删除字段
#alter table 表名 drop [column] 字段名;
alter table t_student drop cid;
#重命名表
#alter table 表名 rename to 新表名;(SQL通用)
alter table t_student rename to t_student1;
#rename table 表名 to 新表名;(MySQL)
rename table t_student1 to t_student;
(5)重建表:
Truncate table 表名;
意义:一次性删除所有数据,重新创建表。
注意:应该在此表不含外键或索引试图的情况下使用truncate进行表的重建,不然不生效。要么取消外键,再truncate。要么使用delete进行级联删除。
9.操作数据
(1)增加数据insert
Insert into 表名 (字段名,字段名,……)
Values (值,值,……);
Insert into 表名 values(值,值,……);
如果省略字段,则所有值必须和表中所定义的类型、顺序、个数完全相同。
(2)查询数据select
Select * from 表名;
查询一个表中的所有数据
(3)修改数据update
Update 表名 set 字段=值,字段=值,……
Where 条件;
(4)删除数据delete
Delete from 表名 where 条件;
10.日期类型
获取当前系统时间:
Select sysdate() from dual;
Sysdate()是MySQL的函数,可以获得当前系统时间
Dual,是一个虚表,用来查询系统时间等其他信息,为了保证select语句的完整性
在更新数据时,可以直接使用sysdate()表示当前时间
把字符串转换成date:str_to_date(‘日期字符串’,’格式字符串’)
把日期字符串按照格式字符串规定的格式转换成日期类型
把date转换成字符串:date_format(时间,‘格式字符串’)
把时间按照格式字符串规定的格式转换成字符串
%y
2位年份
%Y
4位年份
%m
月份
%d
日期
%H
24小时制
%h
12小时制
%i
分钟
%s
秒
11.查询语句
(1)基本查询:
#效率低
Select * from 表名;
#效率高,可以查询部分字段
Select 字段名,字段名,...... from 表名;
#查询时计算
select id+100,name from t_student;
#查询时做字符串拼接:concat()
select id,concat(name,'同学') from t_student;
#查询时起别名
select id,concat(name,'同学') as name from t_student;
#MySQL中可以省略as
select id,concat(name,'同学') name from t_student;
#查询时排重
select name from t_student;
select distinct name from t_student;
#不可查询其他字段
#查询时排序
select id,name from t_student order by name desc;
select id,name from t_student order by name desc,id desc;
#按照多个字段排序
热门工具 换一换