MySQL数据库应用从入门到精通-DAY1 MySQL操作和应用篇

一、MySQL基本操作

1、数据库和数据对象

在MySQL中数据库分为系统数据库和用户数据库两类。系统数据库是安装MySQL后自带的,一般有information_schema和performance_schema及mysql:

                                  • information_schema存储了系统中的一些数据库对象信息,如用户表信息、列信息、权限信息、字符集信息和分区信息。
                                  • performance_schema主要存储数据库服务器性能参数。
                                  • mysql主要存储了系统的用户权限信息。

创建数据库语法:create Database database_name. 创建时数据库名不能与已经存在的一样,且需要遵守如下规则:

  •  由字母、数字、下划线、@、#、$符号组成,其中字母也可以是其他语言的字母字符。
  • 首字母不能是数字和$符号
  • 标识符不允许是MySQL的保留字
  • 不允许有空格和特殊字符
  • 长度小于128位

             查看已有数据库: show databases .选择使用数据库: use database_name 删除数据库用drop database database_name.看当前使用数据库 select database();

             创建数据库语法;create database database_name charset=utf8 collate=utf8_general_cl;//使用utf8编码,避免后续插入中文时出现?或乱码。

             修改数据库: alter database  数据库名 【default】character set 字符集名 [default]  collate <校对规则名>;

            *******************数据库备份:防止对数据库进行错误操作或产生垃圾数据,需要对数据库进行备份。垃圾数据类似自动化时产生的大量无用数据*****************************

            1.图形法(DBever在工具那里,还原成上次备份的数据库不会删除掉备份后新增的表)

             2. 命令法(不需要连接到数据库 备份mysqldump -uroot -p 数据库名字 > 数据库名.sql   恢复mysql -uroot -p 数据库名<数据库名.sql

 

二、MySQL数据库中存储引擎和数据类型

存储引擎是MySQL的一个重要特征,可以使用show engines查看。可以通过修改my.ini文件中关于[mysqld]组内容进行,即修改default-storage-engine.内容如下:

 

 

 

数据类型有:

数据类型汇总
   名称  字节  最小值  最大值
整数类型  tinyint 1

 有符号-128

无符号0

有符号127

无符号255

smallint 2

根据所占字节数可以算出

如tinyint类型占用1字节(8位),又因为整数有正负数,因此左边第一位为符号位(0为正数、1为负数)

0 1 1 1 1 1 1 1

                                                   最大值:1*26+1*25+...20=27-1=127

                                                    

 

mediumint 3
int/integer 4
bigint 8
浮点数类型    float  4  ±1.75494351E-38 ± 3.402823466E+38
 double  8
 当需要小数点后10位以上,就需要double
 日期和时间类型      date  4  1000-01-01 9999-12-31 
 datetime  8  1000-01-01 00:00:00  9999-12-31  23:59:59
 timestamp  4  19700101080001(需要经常更新时间为当前系统时间时用)  2038年某一时刻
 time  3  -835:59:59  835:59:59
 year  1  1901  2155
字符串类型    char  M   M为0-255之间整数
 varchar  M   M为0-65535之间整数,字符串长度经常变化选择varchar
text系列字符串类型      tinytext  0-255 如果需要存储大量字符串如文章内容的纯文本      
 text  0-65535  
 mediumtext  0-167772150  
 longtext  0-4294967295  

 

三、表的操作(可以添加逻辑 drop table  if exists 表名   如果表明为数字开头可能需要使用··符号)

//创建表
create table table_name(
属性名 属性类型,
...);

//查看表结构
describe table_name;
show create table table_name;

//删除表的名字
drop table table_name;

//修改表
1.修改表明
alter table old_name rename new_name;
2.增加字段
alter table table_name add 属性名 属性类型;
3.表的第一个位置增加字段
alter table table_name add 属性名 属性类型 first;
4.表指定字段后增加字段
alter table table_name add 属性名 属性类型 after 属性名;
5.删除字段
alter table table_name drop 属性名;
6.修改字段名字和类型
alter table table_name change 旧属性名 新属性名 新属性类型;
7.修改字段顺序
alter table table_name modify 属性名1 数据类型 first|after 属性名2;//后面参数只需要属性名
8.字段添加约束
alter table 表名 modify (column) 字段名 字段类型 新约束



 

完整性约束

关键字 含义 语法
not null 值不允许为空 属性名  数据类型 not null
default 设置字段默认值。当未填写时输出默认值,填写后以填写数据为准 属性名 数据类型 default 默认值
unique key(uk) 设置字段值为唯一值;如身份证号码 属性名 数据类型 unique 
primary key(pk) 主键。该表唯一标识符

1.属性名 数据类型 primary key

2.[constraint 约束名] primary key (属性名,属性名...)

3.属性名 数据类型 primary key auto increment,新增时可以用0,null,default占位

foreign key(fk) 外键用于与另一张表的关联。A表中的一个字段,是B表的主键,那他就可以是A表的外键 constraint 外键约束名 foreign key 属性名 references 表明 属性2

 

//建表时包含各限制
CREATE  table s_constraint(
id int primary key auto_increment,
title varchar(100) not null,
autothor varchar(50) unique,
container varchar(600) default '请输入内容',
createtime datetime,
constraint f_sconstraint foreign key(title) references f_ce(title)
);

 

 

 

//修改已有字段限制
1.添加删除唯一值约束
alter table t1 add constraint t1_yuesu unique(name);/ALTER TABLE table_name ADD UNIQUE (column_name)
alter table tableName drop index 约束名;

2.添加删除默认值
alter table table_name alter 列名 set default '默认值';
alter table t1 alter name drop default;
3.添加主键自动递增
alter table t_dept modify deptno int primary key auto_increment;

 

 **********输入法勾选输入中文时使用英文字符**********************************

四、索引的操作

索引;与书的目录非常相似,主要是为了提高从表中检索数据的速度。其建立在数据库表对象上,由表的一个字段或多个字段生成的键组成,这些键存储在数据结构中(B型叔或哈希表)。

索引类型

      • 普通索引:创建时不添加任何限制条件(唯一、非空等限制)
      • 唯一索引:限制值为唯一
      • 全文索引:主要关联数据类型为char、varchar、text上,查询数量较大的字符串字段
      • 单列索引
      • 多列索引
      • 空间索引
//创建查看普通索引
1.//创建表时创建普通索引
create table table_name(
属性名 数据类型,
....................,
index|key 索引名 (属性名1 【长度] [asc|desc])
    );
explain select * from table_name where 属性名1=1;//查看属性名的索引对象是否被启用,possible_keys和key字段处的值为所创建的索引名的话则表明创建成功且已经在使用
2.已经存在的表上创建普通索引
create index 索引名 on 表名(属性名 【长度】 【ASC|DESC]);
show create table 表名;
3.alter创建普通索引
alter table 表名 add index|key 索引名 (属性名 【长度】 【ASC|DESC]);

//创建查看唯一索引
1.创建表示创建唯一索引
create table table_name(
属性名 数据类型,
....................,
unique index|key 索引名 (属性名1 【长度] [asc|desc])
    );
explain select * from table_name where 属性名1=1
2.已经存在的表上创建普通索引
create unique  index 索引名 on 表名(属性名 【长度】 【ASC|DESC]);
show create table 表名;
3.alter创建普通索引
alter table 表名 add unique index|key 索引名 (属性名 【长度】 【ASC|DESC]);

//创建全文索引
与普通索引结构一致,在index前新增fulltext即可

//创建查看多列索引
1.//创建表时创建多列索引
create table table_name(
属性名 数据类型,
....................,
index|key 索引名 (属性名1 【长度] [asc|desc] ,
                           属性名2 【长度] [asc|desc] ,
                            属性名n 【长度] [asc|desc]  )
    );
explain select * from table_name where 属性名1=1;//查看属性名的索引对象是否被启用,possible_keys和key字段处的值为所创建的索引名的话则表明创建成功且已经在使用
2.已经存在的表上创建普通索引
create index 索引名 on 表名(属性名1 【长度】 【ASC|DESC] ,
                                         属性名2【长度】 【ASC|DESC] 
                                          属性名n【长度】 【ASC|DESC] 
                                                                                         );
show create table 表名;
3.alter创建普通索引
alter table 表名 add index|key 索引名 (属性名 【长度】 【ASC|DESC]
                                                        属性名n【长度】 【ASC|DESC] 
);

//删除索引
drop index index_name on 表名;
posted @ 2022-04-12 22:54  测试者7月  阅读(197)  评论(0)    收藏  举报