mysql数据库基础

1、链接数据库服务器:

Mysql -h localhost -uUserName -pPassWd  (-h  如果不写,则默认连 localhost);

2、数据库相关:

// 1、展示服务器中的所有目前存在的数据库:

mysql > show databases;

// 2、选择(链接)某个数据库;

mysql > use dataName;  // dataName 为所需要链接,选择的数据库名字;

// 3、创建一个新的数据库;

mysql > create databse dataName;   // 即此时会在 mysql下边的data文件夹下多了一个名称为(dataName)的文件夹;

// 4、删除掉一个数据库;

mysql > drop database dataName;


// 注意: 数据库 名称 是不能 利用控制台语句 直接改变的; 而表/列的名称则可以 利用 控制台语句改变;

3、数据库中表相关内容:

// 1、选择(链接)某个数据库后,展示此数据库下所有的目前存在的表;

mysql > show tables;

// 2、修改某个表的名称:

mysql > rename table 原表名 to 新表名;  // 当你执行 RENAME 时,你不能有任何锁定的表或活动的事务。你同样也必须有对原初表的 ALTER 和 DROP 权限,以及对新表的 CREATE 和 INSERT 权限;

// 3、创建一个表;    即:建立表的表头;声明定义 各个列的(字段的)过程;

// 建表 和 列类型 的关系:  

// 给 学号 留多宽;给 姓名 留多宽 ; 给成绩、给自我介绍 留多宽; (如果留的过宽,则浪费了空间,如果留的过窄,则存储不下); 思想:能容纳足够数据,又不至于浪费空间;

// 存储同样的数据内容,不同的数据类型,所占用的空间和效率是不一样的,(比如:int 类型 需要占用4个字节,而tinyint 仅需占用 1个空间就行);

3.1、mysql三大列类型:

3.1.1:数值型:(整数,小数);

// 1、数值型====》整形、浮点/定点型;  其中整形:tinyint、smallint、mediumint、int、bigint;
计算机中,负数是用补码表示:即:1 1111111(-127)它所表示的负数为:|127|-128 = -1;  1 0000000(-0) 表示的负数为:|0|-128 = -128;

int 系列声明时候的参数有3个可选:即(M) unsigned zerofill

// 1、unsigned: (默认是有符合的);unsigned:则为无符号,最小为0(如果插入了一个负数则存储的为0);

// 2、M 必须和 zerofill 配合起来是用才有意义;  M 代表显示宽度,不够M的时候,则用0填充(zerofill),直到补充到M的长度;

// 注意:1: 如果没有 zerofill 属性,  单独的参数 M,没有任何意义.   2:如果设置某列为 zerofill,则该列已经默认为  unsigned,无符号类型.
// 2、数值型====》浮点/定点型;  float、double、decimal(定点);

// 小数点左边,能存到多少?   float:   10~38(小数点左边可以达到10的38次方)
// 小数点右边,又能存多少?   float:  10~-38(小数点右边可以达到10的38次方分之1);

// 即:如果 float(M,D)形式下,如果 M<= 24, 则占4个字节存储,否则占8个字节存储;

// decimal:(定点:是把小数点左边和右边的数分开进行存储的),所以更加精确; 如果d被省略, 默认是0。如果m被省略, 默认是10;即decimal(10.0)为默认的M,D;

// 注意:如果设置了诸如decimai(5,2)这种格式的时候,假如插入的数据为123456(超出了其范围)的时候,最后显示的数据会按照设置时候的(5,2)来展示,即为:999.99,而不是(123456.00);

// float:直接声明,不带后面的(M,D)的时候,最多能精确保留6位(不含小数点),  比如设置成float unsigned的时候,插入 12345678.1234578的时候,最后存储的是:12345700(456中的6进1变7);插入 19.123456的时候,返回的是19.1235(6位)

// 若设置了(M,D)的时候,比如 float(9,3)的时候,若插入 1234567.23(超出了最大范围999999.999)的时候,则会返回 1000000.000(999999.999);应和decimal一样,注意M的范围;若插入12.1234567的时候,则存储的是12.123(按照参数D,保留3位);
3.1.2:字符型:(char、varchar、text、blob):

// 1、char:定长字符型:定义成char(N)字符型后,整个列,每行数据的长度都一样,都为N;若插入的数据<n;则会用空格补充到N个字符; 若存储的数据>n;则之后存储N个字符数据,多出的则被截去; 

// 如果不够M个字符,内部用空格补齐,取出时再把右侧空格删掉; 此时注意:这意味着,如果右侧本身有空格,将会丢失.

// 其中,N的范围是0--255个字符(即在utf8编码下,所占最大字节数为255*3,gbk编码下,可能所占最大字节数为255*2); char因为是定长,所以具有查询检索效率高,但是会做成资源的浪费有时候;

此时:char类型数据的空格没有了,因为char数据不够的时候,用空格补充,但是取出数据的时候,自动去掉空格;

而下边的varchar虽然不是定长,一列中每行数据的长度可能会不一样,但是在每行数据存储的开头,都有有1--2个字节表示(此行)所存储的长度。

// 2、varchar:可变字符型:在此列中,每行的长度根据存储的数据长度而自动改变适应;

// varchar 字段是将实际内容单独存储在聚簇索引之外,实际存储从第二个字节开始,接着要用1到2个字节表示实际长度(长度超过255时需要2个字节);  先是实际的长度给出(不用再算了);

// 而mysql则有规定,表中每行定义长度不能超过65535个字节(即在没有定义其他列的情况下,最多能存在65535-1-2个字节),在utf8编码下:最大长度不能设置超过(65535-1-2)/3 = 21844个字符;在gbk编码下:最大存储长度不能设置超过(65535-1-2)/2 = 32766 个字符;

// 如果已经定义了其他的列以及数据类型,此时varchar列能定义的最大字节,还要减去其他数据类型所占的字节数(因为每行的字节不能超出65535);

// 举个例子:在utf8编码下,如果表中已经定义了char(30)的列,则再定义varchar列的时候,最多能存储的字节数为:65535-1-2-3*30个字节;(3*30是utf8编码下,30个字符所占的可能最大字节长度);

// 注意:如果超出了最多能存储的字节数,则会被强制转化成text类型;
//3、text:文本类型,一般用来存储文章内容或者新闻内容,注意:声明text的时候,不能设置默认值;
//4、Blob,是二进制类型,用来存储图像,音频等二进制信息.   意义: 2进制,0-255都有可能出现. Blob在于防止因为字符集的问题,导致信息丢失.比如:一张图片中有0xFF字节, 这个在ascii字符集认为非法,在入库的时候,被过滤了.

3.1.3:日期/时间型:(date、time、datetime、year、timestamp):

注意:1、每种时间、日期都有个严格的范围;

2、year定义的时候,最好用'0000'或者0000(4位)代表默认值,如果向year类型的字段插入0,存入该字段的年份是0000;如果向year类型的字段插入‘0’,存入的年份是2000。

3、timestamp的默认值是当前的时候。即在没有插入数据的情况下,会产生一个当前的一样(此时间,是根据时区来显示的)。timestamp类型与dateTime类型显示的格式是一样的(即:2018-04-10 15:07:00),但是timestamp类型范围比较小(1970-2038),所以需要的时间范围比较大,还是选择dateTime类型比较安全。


3.2、操作数据库表:

3.2.1:创建一个表:create table tableName (各个类的名称以及类型)engine=  charset=;


3.2.2:查看表结构: desc tableName;


3.2.3:查看表的创建过程(创建表时候的语句):  show create table tableName;



3.2.4:修改表:给表增加一个列: alter table tableName(表名) add columnName(列名称) 列类型;


注意:如果指定将列插入具体位置,后面可以跟上after某列(某列之后),或者first(插入到第一列)

3.2.5:修改表:删除表中的其中一列; alter table tableName(表名) drop columnName(列名称);


3.2.6:修改表:修改表中某一列的数据类型alter table tableName modify columnName 新数据类型;


3.2.7:修改表:修改表中某一列的名称: alter table tableName change 老列名 新列名 数据类型;


3.2.8:删除表:删除指定的表:drop table tableName;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值