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为负数) 
 最大值: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 表名;
 
                    
                     
                    
                 
                    
                 
  
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号