MySQL基本操作
数据库基本操作
创建数据库
使用 Create database + 库名 来创建
Create database T1 ; #创建一个名为"T1"的数据库
创建成功会显示这个:
使用参数 if not exists 可以在创建数据库时,出现相同数据库的时候不报错(一般情况下创建相同名称数据库会报错)。
Create database if not exists T1 ; #创建一个名为"T1"的数据库
当然也是可以设置数据库字符集。
创建字符集为gb2312的数据库
Create database if not exists T1 default character set gb2312 ; #创建名为“T1”的数据库,字符集设定为gb2312
排序规则(校对规则): 是指对指定字符集下不同字符的比较规则。
查看可用的排序规则
show collsation ; #查看可用的排序规则
创建数据库T1,修改字符集为 utf8,更改排序规则为utf8_unicode_ci
Create database T1 default character set utf8 default collate utf8_unicode_ci ; #创建数据库T1,修改字符集为 utf8,更改排序规则为utf8_unicode_ci
查看数据库
查看数据库定义(字符集和排序规则)
show create database + 空格+库名
show create database T1 ; #查询T1数据库定义
使用数据库
use +库名
use T1 ; #使用T1数据库
修改数据库
alter database + 库名 default character set +新字符集 default collate + 新排序规则
alter database T1 default character set gbk ;#将T1数据库的字符集改为gbk
删除数据库
drop database +库名来删除数据库(此命令不可以用来删除数据库中的表)
drop database T1 ; #删除T1数据库
数据库的一些其他指令
MySQL默认结束符为分号 (” ; “)
修改结束符:
delimiter + 空格 + 新结束符
delimiter ! #将结束符换为 "!"
可以用指令验证
show databases + 新结束符:展示数据库
show databases ! #展示数据库
退出MySQL:
quit #退出数据库
exit
查看服务器信息:
Status + 空格 +结束符
Status ; #显示服务器信息
数据表基本操作
数据类型
整型
int 占用四个字节
bigint 占用八个字节
Tinyint 占用一个字节
smallint 占用两个字节
mediumint 占用三个字节
整型类型 | 占用字节 |
int | 4 |
bigint | 8 |
Tinyint | 1 |
smallint | 2 |
mediumint | 3 |
适用于 :有数值,有大小比较的。
浮点型
有小数点的数值
Float (m,d)
double(m,d)
其中:
m表示该数值有几位整数,
d表示小数点后面有几位
float (3,2) ; -9.99 — +9.99
字符串
字母,汉字,数字符号,特殊符号构成的数据对象
适用于:身份证号,编号,电话号码。联系地址,名称等
char:定长字符串,长度为 0 – 255。保存char时,在右边填充空格来达到指定长度
varchar :可变字符串, 长度为 0 – 65535。只保存需要的字符数,另外再加一个字节来记录
如果超出规定长度,char 和 varchar 会对值裁剪以适应,如果裁剪的字符不是空格,会发出警告。
blob 和text类型
(非二进制字符串)
存储声音,视频,头像等设置
时间和日期类型
date , time 和 datatime
固定的格式数据,存储的是日期和时间
date类型
存储格式 : yyyy – mm – dd
支持范围 : 1000 – 01 – 01 ~~9999 – 12 – 31
time类型
存储格式 : hh : mm : ss
支持范围 ; -838 : 59 : 59 ~~ 838 : 59 : 59
datetime类型
表示日期时间
存储格式 : yyyy – mm – dd hh : mm : ss
支持范围 :1000 – 01 – 01 00 : 00 : 00 ~~ 9999 – 12 -31 23 : 59 :59
timestamp类型
客户端插入的时间从当前时区转化为UTC(世界标准时间)进行存储。查询时,将其又转化为客户端当前时区进行返回
创建数据表
在数据库中新建数据表
create table t1 ; #创建名为 t1 数据表
创建数据表,规定长度
创建前记得使用数据库
use t1 ; //使用t1数据库
create table t0
(name char(10),
logintime date,
mail varchar(20),
score float(5,2),
list int(5),
photo text comment"头像");
#创建名为 t0 数据表
comment : 解释。一般放在数据类型后面,表示对于字段名的解释,可以理解成为注释。
comment "解释内容" #comment使用方法
创建临时表
create temporary table (N1) ;
create temporary table () ; //创建临时数据表
N1包含两个字段:id 和 name
查看数据表
查找数据表
XX为需要查找名
show table like "XX%" ;
//可以查找多个字符,只要指定包含查找字段就会被查找到
//如果查找 "X%",则会出现 XXX,XYX,XXYXY,XXYXYX
show table like"XX_" ;
//只能查找单个字符
//如果查找"X_",则会出现XX,
查看数据表的列
//desc + 表名 +列名 ;
//查看teacher表中的teachearID列
desc teacher teacherID ;
查看数据表状况
show table status ; //查看数据表
但是如果数据表太多会难以查找,需要在末尾加个\G,变为横向排列
show table status \G
查看存在数据表的名称
show table + 表名 ; #查看存在数据表的名称
查看数据表结构
desc/describe + 表名 ; #查看数据表结构
查看表的定义语句
查看表里有什么
//show create table + 表名 ;
show create table score ;
查看表的结构
使用describe可查看字段定义,键的信息,默认值等
//desc / describe + 表名 ;
describe score ;
根据指定条配件来查询
消除结果集中的重复行
使用 Distinct 关键字
SELECT DISTINCT [字段名1,字段名2] FROM 表名 ;
实现有条件筛选
运算符
运算符 | 名称 | 说明 |
= | 等于 | |
<> != | 不等于 | |
< <= > >= | 小于,小于等于,大于,大于等于 | |
Between | 在…..之间 | |
is null | 空值 |
between
select
多条件查询
Where条件 | 说明 |
And | 两个或者多个条件同时满足 |
Or | 两个或者多个条件满足一个 |
In | 多个条件中的一个 |
Like | 搭配%通配符或者_通配符来模糊搜索 |
修改数据表
alter table + 表名
alter table + 表名 ;
[warning]注意,以下修改数据表所有操作都要加alter table + 表名。[/warning]
添加新字段
alter table 表名 add 字段名 + 字段名定义 ;
可以在末尾加first 或者 aftear 来在指定字段前新增字段
添加默认值和删除默认值
alter table 表名 alter 字段名 set default + 默认值 ; //修改默认值
alter table 表名 alter 字段名 drop default ; // 删除默认值
修改字段名
alter table 表名 change 旧字段名 + 新字段名 + 字段 ;
修改字段定义
alter table 表名 modify + 字段名 + 字段的新定义 ;
alter table student modify studentmark text ;
删除字段
alter table 表名 drop + 字段名 ;
删除多个字段
alter table 表名 drop 字段1 drop 字段2 ;
为表重命名
alter table 表名 rename to + 新表名 ;
实例
为表添加备注字段,字段名为studentremark,数据类型为varcgar(100),放置在stuname字段之后
alter table score add studentremark varchar(100) after stuname ;
为score添加一个字段,字段名为classid 数据类型为varchar(10),默认值为10
alter table score add classid varchar(10) set default 10 after studentremark ;
验证
#desc + 表名 ;
desc score ;
为字段增加内容
insert into 表名 values(内容1,内容2);
分字段批量增加内容
insert into 表名(字段名1,字段名2)values(内容1,内容2) ;
添加多组内容
insert into 表名 values(内容1,内容2)(内容3,内容4) ;
将指定字段导入到新表中
//insert into 目标表(字段1,字段2) select (字段1,字段2) from 来源表
insert into student(Name,StudentID) select (Name,StudentID) from StuentClass
update修改表的数据
//update 表名 set 字段名1 = 值1,字段名2 = 值2 where 条件
[warning]update修改的是表中数据,不是字段[/warning]
多表数据修改
update 表名列表 set 表名.字段名1 = 值1, 表名.字段名2 = 值2 where 表名.条件 ;
表名.字段名 表示表中的某个字段
按条件删除数据
delete , truncate来删除
使用delete 删除
删除表中++所有数据:
//delete from 表名 ;
删除表中的部分数据
delete from 表名 where 条件 ;
复制数据表
create [if not exists]新表名
[like 参照表名]
[al {selsct 语句}]
like 像:创建一个和草诏表名结果相同的新表,不复制内容,其他的都复制
as 完全复制表的内容,单索引和完整性拘束不会复制,selsct语句是一个表达式,可以是一个selsc语句
use bookstore;
create table book like book_copy1;
create table book_copy2 as(select * from book);
删除数据表
dorp table [if not exists] + 表名
dorp table if not exists student ;
其他
存储引擎:对不同表类型的处理器
默认:innoDB
Engine = innoDB
create table (字段名 数据类型)engine = innoDB ;
让其识别中文字符
set names gbk ;
timestamp
如果没有给定日期型