MySQL基础
1.数据库概述
1.1数据的存储方式
Java中创建对象: Student = new Student(1,“张三”);存在内存中
学习了Java IO流,把数据保存到文件中
存储位置 | 优点 | 缺点 |
---|---|---|
内存 | 速度快 | 不能永久保存,数据是临时状态 |
文件 | 数据可以永久保存 | 操作数据不方便,查询某个数据 |
数据库 | 1)数据可以永久保存2)查询速度快 3)对数据的管理方便 | 占用资源需要购买 |
1.2什么是数据库
1).存储数据的库
2).本质上是一个文件系统,还是以文明的方式存在服务器的电脑上的.
3).所有的关系型数据库都可以使用通用的SQL语句进行管理 DBMS DataBase Management System
2.SQL的概念
2.1什么是SQL
结构化查询语言
2.2SQL作用
1).是一种所有关系数据型数据库的查询规范,不同的数据库都支持
2).通用的数据库操作语言,可以用在不同的数据库中
3).不同的数据库SQL语句有一些区别
2.3SQL语句分类
1)DDL数据定义语言 如:建库,建表
2)DML数据操纵语言 如:对表中的记录操作增删改
3)DQL数据查询语言 如:对表中的查询操作
4)DCL数据控制语言 如:对用户权限的设置
2.4MySQL的语法
1).每条语句以分号结尾
2).SQL中不区分大小写,关键字中认为大写和小写是一样的
3).3中注释
注释的语法 | 说明 |
---|---|
–空格 | 单行注释 |
/* */ | 多行注释 |
# | 这是mysql特有的注释方式 |
3.DDl操作数据库
3.1创建数据库
3.1.1创建数据库的几种方式
创建数据库
create database 数据库名;
判断数据库是否已经存在,不存在则创建数据库
create database if not exists 数据库名;
创建数据库并指定字符集
create database 数据库名 character set 字符集;
--创建数据库
create database db1;
--判断数据库是否已经存在,不存在则创建数据库
create database if not exists db2;
-- 创建数据库并指定字符集
create database db1 character set gbk;
3.2查看数据库
3.2.1按tab键可以自动补全关键字
--查看所有的数据库
show databases;
--查看某个数据库的定义消息
show create database db3;
show create database db1;
3.2.2修改数据库
/*
修改数据库默认的字符集
alter database 数据库名 default character set 字符集;
具体操作
将db3 数据库的字符集改成utf8
*/
alter database db3 default character set utf8;
3.2.3删除数据库
/*
删除数据库的语法
drop database 数据库名;
具体操作
删除db2数据库
*/
drop database db2;
3.2.4使用数据库
/*
1.查看正在使用的数据库
select database(); 使用的一个mysql中的全局函数
2.使用/切换数据库
use 数据库名;
*/
--具体操作
--查看正在使用的数据库
select database();
--改变要使用的数据库
use db4;
4.DDL操作表结构
*前提先使用某个数据库
4.1创建表
/*
创建表的格式
create table 表名{
字段名1 字段类型1,
字段名2 字段类型2
};
关键字说明
create --->创建
table --->表
*/
4.2MySQL数据类型
4.2.1常使用的数据类型如下:
类型 | 描述 |
---|---|
int | 整型 |
double | 浮点型 |
varchar | 字符串型 |
date | 日期类型,格式为 yyyy-MM-dd,只有年月日,没有时分 |
4.2.2详细的数据类型如下:
分类 | 类型名称 | 类型说明 |
---|---|---|
整型 | tinyInt | 微整形:很小的整数(占8位二进制) |
smallint | 小整型:小的整数(占16位二进制) | |
mediumint | 中整型:中等长度的整型(占24位二进制) | |
int(integer) | 整型:整数类型(占32位二进制) | |
小数 | float | 单精度浮点数,占4个字节 |
double | 双精度浮点数,占8位字节 | |
日期 | time | 表示时间类型 |
date | 表示日期类型 | |
datetime | 同时可以表示日期和时间类型 | |
字符串 | char(m) | 固定长度的字符串,无论使用几个字符都占满全部,M为0~255之间的整数 |
varchar(m) | 可变长度的字符串,使用几个字符就占用几个,M为0~65535之间的整数 | |
大二进制 | tinyblobBigLargeObject | 允许长度0~255字节 |
blob | 允许长度0~65535字节 | |
mediumblob | 允许长度0~167772150字节 | |
longblob | 允许长度0~4294967295字节 | |
大文本 | tinytext | 允许长度0~255字节 |
4.2.3具体操作
--创建student表包含id,name,birthday字段
create table student
{
id int, --整数
name varchar(20), --字符串
birthday date --生日,最后没有逗号
};
4.3查看表
1).查看某个数据库中的所有表
show tables;
2).查看表结构
desc 查看表结构
3).查看创建表的SQL语句
show create table 表名;
--具体操作
#查看 day数据库中的所有表
use day;
show tables;
#查看student 表结构
desc student;
#查看student的创建表SQL语句
show create table student;
--执行结果:
CREATE TABLE `student` (
`id` int(11) DEFAULT NULL,
`name` varchar(20) DEFAULT NULL,
`birthday` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
`存在的目的是为了避免关键字的冲突
4.4快速创建一个表结构相同的表
--语法
create table 新表名 like 旧表名;
--具体操作
#创建s1表结构和student表结构相同
create table s1 like student;
desc s1;
4.5删除表
/*
1.直接删除表
drop table 表名;
2.判断表是否存在,如果存在则删除表
drop table if exists 表名;
*/
--具体操作
#直接删除s1表
drop table s1;
#判断表是否存在并删除s1表;
drop table if exists s1;
4.6修改表结构
/*
1.添加列表add
alter table 表名 add 列名 类型;
2.修改列类型 modify
alter table 表名 modify 列名 新的类型;
3.修改列名change
alter table 表名 change 旧列名 新列名 类型;
4.删除列 drop
alter table 表名 drop 列名;
5.修改表名 rename to
rename table 表名 to 新表名;
6.修改字符集 character set 字符集;
alter table 表名 character set 字符集;
*/
--1.为学生表添加一个新的字段 remark,类型为varchar(20)
alter table student add remark varchar(20);
--2.将student表中的remark字段的类型改成varchar(100)
alter table student modify remark varchar(100);
--3.将student表中的remark字段名改成intro 类型 varchar(30)
alter table student change remark intro varchar(30);
4.将student表中的字段intro删除
alter table student drop intro;
5.将学生表student改名为student2
rename table student to student2;
6.将学生student2表的编码修改为gbk
alter table student2 character set gbk;
5.DML操作表中的数据(用于对表的记录进行增删改操作)
5.1插入记录
/*
insert into 表名 (字段名1,字段名2...)values(值1,值2..);
insert into 表名:表示往那张表中添加数据
(字段1,字段2...):要给那些字段设置值
values(值1,值2..):设置具体值
1)插入全部字段
方式1:
所有字段名都写出来
insert into 表名 (字段名1,字段名2...)values(值1,值2..);
方式2:
不写字段名
insert into 表名 values(值1,值2,值3..);
2)插入部分数据
insert into 表名 (字段名1,字段名2...)values(值1,值2..);
注:没有添加的数据的字段会使用null
*/