2019北京培训:MySQLday1

1.基本概念

1)数据库:以某种方式保存数据的集合

2)数据库应用程序:使用数据库的方式保存数据,以其他语言开发的程序。

3)数据库管理系统:管理数据库的软件,可以对数据库进行增删查改、备份等。例如MySQL、Oracle

4)数据库管理员:管理和维护数据库管理系统的人员

5)数据库开发工程师:使用数据库开发应用程序的工程师

2019北京培训:MySQLday1_第1张图片

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;

#按照多个字段排序

 

你可能感兴趣的:(MySQL数据库)