MySQL数据库之增删改查

SQL分类:

DDL数据定义语言,用来维护存储数据的结构。

代表指令:create,drop,alter

DML数据操纵语言,用来对数据进行操纵(表中的内容)。

代表指令:insert delete update

DML中有单独分了一个DQL

数据查询语言如select

DCL数据控制语言,主要负责权限管理和事务

代表指令:grant revoke commit

大写的表示关键字

CHARACTER SET:制定数据库采用的字符集。

COLLATE:制定数据库字符集的比较方式(默认utf8_general_ci,一般不指定)

显示数据库创建语句

说明:

(1)MySQL建议我们关键字使用大写,但是不是必须的。

(2)数据库名字的反引号' ',是为了防止使用的数据库名称刚好是关键字。

(3)/*..*/这个不是注释,表示当前mysal版本大于4.01版本,就执行这句话。

查看当前MySQL数据库的连接情况

可以告诉我们当前有哪些用户连接到我们的MySQL.

备份和恢复数据库

表的操作

修改表 alter

在users表中添加一个字段 alter table 表名 类型;

查看表的结构 desc 表名;

数据类型

数值类型

bit字段在显示时,是按照ASCII码对应的值显示。

如果我们有这样的值,只存放0或1,这时可以定义bit(1)这样可以节省空间。

小数的基本使用

float[(m,d)][unsigned] M指定小数位数,占用空间四个字节

小数:float(4,2)表示的范围是-99.99~99.99,MySQL在保存值会进行四舍五入 

demical和float很像,但是它两的精度不同

发现demical的精度更高

float表示的精度大约是7位

decimal整数最大位数m为65.支持小数最大位数d是30.如果d被省略,默认为0,m默认为10.

如果希望小数的精度高,推荐使用decimal.

字符串

char(L)

varchar(L):编码是utf8时,varchar(n)n最大值是65532/3=21844(因为utf8中,一个汉字占用3个字节)

                 如果是gbk,varchar(n) n最大值时65532/2=32766(因为gbk中,一个汉字占用2字节)

char和varchar存储空空间比较

如何选择定长或变长字符串?

1.如果数据确定长度都一样,就使用定长,比如身份证,手机号,,,

2.如果数据长度有变化,就使用变长,比如,名字,地址,但是你要保证最长的能存进去。

3.定长的磁盘空间比较浪费,但是效率高

4.变长的磁盘比较节省,但是效率低

日期和时间类型

常用的日期有如下三个:

1.datetime 时间日期格式 yyyy-mm-dd HH:ii:ss'表示的范围从1000到9999,占用八字节。

2.date:日期 yyyy-mm-dd 占用三字节

3.timestamp:时间戳,从1970年开始的yyyy-mm-dd HH:ii:ss格式和datetime完全一致,占用四字节。

枚举和set

表的约束

真正约束字段的是数据类型,但是数据类型约束很单一,需要一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。比如有一个字段是email,要求是唯一的。

空属性

两个值:null(默认值)和not null(不为空)

数据库默认字段基本都是字段为空,但是实际开发中,尽可能保证字段不为空,因为数据为空没办法参与运算。

set和enum不能设置默认值。  

自增长

auto_increment:当对应的字段不给值,会自动的被系统触发,系统会从当前字段中已经有的最大值+1操作,得到一个新的不同的值。通常和主键搭配使用,作为逻辑主键

自增长的特点:

1.任何一个字段要做自增长,前提是本身是一个索引(key——栏有值)

2.自增长字段必须是整数。

3.一张表最多只能有一个自增长。

唯一键

一张表中往往有很多字段需要唯一性,数据不能重复,但是一张表中只能有一个主键:唯一键就可以解决表中有多个字段需要唯一性约束的问题。

唯一键的本质和主键差不多,唯一键允许为空,而且可以多个为空,空字段不做唯一性比较。

表的增删改查

增加:

字符和日期类型应该包含在单引号中。

插入空值,不指定或insert into table values(null)

insert into table values(),(),() 一次性添加多条记录。

如果给表中的所有字段添加数据,可以不写前面的字段名称。

如果只给表中的某几个字段赋值,则需要制定字段名。

在数据插入的时候,假设主键对应的值已经存在(duplicate key),可以选择性地进行处理:

1.更新操作

2.替换

select

先建一张表:

distinct 如果结果中有完全相同的行,就去除重复行

在select语句中可以使用表达式对查询的列进行运算

select语句中可以使用as起别名。

select的order by 子句

order by 指定排序的列,排序的列可以是表中的列名,也可以是select语句后指定的别名

asc升序 desc降序  默认是升序

order by 子句应该位于select语句的结尾

count

count(*)会统计一共的记录数,cougnt(列名)会排出为null的情况。

猜你喜欢

转载自blog.csdn.net/xjy22/article/details/81660995