Mysql

数据类型:

    数据类型的种类:

    数据类型的长度

    数据类型的使用场景


主键:

    用于唯一标识表中的一条记录,可用单个字段或多个字段设置为主键,主键列上不能有两行相同的值,也不能有空值。

    可以结合外键来定义不同数据表之间的关系,并且可以加快数据库查询的速度    

#联合主键
create TABLE tb_emp3(
	`name` VARCHAR(25),
	deptId int(11),
	salary FLOAT,
	PRIMARY key(`name`,deptId)
)

外键:

    外键用来在两个表的数据之间建立联系,它可以是一列或者多列。一个表可以有一个或多个外键。外键对应的是参照完整性, 一个表的外键可以为空值,若不为空值,则每一个外键值必须等于另一个表中主键的某个值。

    首先它是表中的一个字段,它可以不是本表的主键,但对应另外一个表的主键。外键主要作用是保证数据引用的完成性,定义外键后,不允许删除在另一个表中具有关联关系的行

    注意:

            在从表中插入数据时,外键的值必须在主表的主键中(或者设置为空),类型需要包容或匹配

#主表:对于两个具有关联关系的表而言,相关联字段中主键所在的那个表即为主表
create TABLE tb_dept1(
	id int(11) primary key,
	`name` VARCHAR(25) not null,
	location VARCHAR(50)
)

#从表:对于两个具有关联关系的表而言,相关联字段中外键所在的那个表即为从表
CREATE TABLE tb_emp5(
	id int(11) PRIMARY key,
	`name` VARCHAR(25),
	deptId int(11),
	salary float,
	constraint fk_emp_dept foreign key(deptId) references tb_dept1(id)
)

INSERT  into tb_dept1 (id,`name`,location)VALUES(1,"研发","上海")
INSERT  into tb_emp5 (id,`name`,salary)VALUES(2,"Jay2",8000)

使用非空约束:

    对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统会报错

    字段名 数据类型 not null

使用唯一约束:

    唯一约束要求该列唯一,允许为空,但只能出现一个空值。唯一约束可以确保一列或者几列不出现重复值

#为多个字段添加唯一约束
create TABLE tb_dept2(
	id int(11) primary key,
	`name` VARCHAR(25) not null,
	location VARCHAR(50),
	constraint STH UNIQUE(`name`,location)
)

使用默认约束:

    默认约束指定某列的默认值

    字段 数据类型 DEFAULT 默认值

设置表的属性自动增加:

    一个表只能有一个字段使用AUTO_INCREMENT约束,且该字段必须为主键的一部分。约束的字段可以是任何整数类型

    字段 数据类型 AUTO_INCREMENT

修改表名:

    alter table 旧表名 rename 新表名

修改字段的数据类型

    alter table 表名 modify 字段名 数据类型 

数据库存储引擎:   

    数据库存储引擎是数据库底层软件组织,数据库管理系统使用数据引擎进行创建、查询更新和删除数据操作

    使用InnoDB,支持事务和外键

数据类型和运算符:

    指定数据类型之后,也就决定了向字段插入的数据内容,例如,当要插入数值的时候,可以将它们存储为整数类型,也可以将它们存储为字符串类型;不同的数据类型也决定了MySQL在存储它们的时候使用的方式,以及在使用它们的时候选择什么运算符号进行运算

    MySQL支持多种数据类型,主要有数值类型、日期/时间类型和字符串类型

    整数类型:

       

        ps:显示宽度只用于显示,并不能限制取值范围和占用空间

    浮点数类型和定点数类型:

        MySQL中使用浮点数和定点数来表示小数。浮点类型有两种:单精度浮点类型(FLOAT)和双精度浮点类型(DOUBLE)。定点类型只有一种:DECIMAL。在对精度要求比较高的时候是用DECIMAL的类型比较好,另外两个浮点数进行减法和比较运算时也问题,所以在使用浮点型时需要注意,并尽量避免做浮点数比较

    日期与时间类型:

        

    字符串类型:

        

使用聚合函数查询:

    有时候并不需要返回实际表中的数据,而只是对数据进行总结。

    

子查询:

    带ANY、SOME关键字的子查询:   

SELECT num1 from tbl1 where num1 > any (SELECT num2 from tal2)

    带ALL关键字的子插叙:

    ALL关键字与ANY和SOME不同,使用ALL时需要同时满足所有内层查询的条件

SELECT num1 from tbl1 where num1 > ALL (SELECT num2 from tal2)

    带EXISTS关键字的子插询:

        EXISTS关键字后面的参数是一个任意的子插询,系统对子查询进行运算以判断它是否返回行,如果至少返回一行,那么EXISTS的结果为true,此时外层查询语句将进行查询;如果子查询没有返回任何行,那么EXISTS返回的结果是false,此时外层语句将不进行查询

    带IN关键字的子查询:

    IN关键字进行子查询,内层查询语句仅仅返回一个数据列,这个数据列里的值将提供给外层查询语句进行比较操作

    带比较运算符的子查询


合并查询结果:

    利用UNION关键字,可以给出多条SELECT语句,并将它们的结果组合成单个结果集。合并时,两个表对应的列数和数据类型必须相同。各个SELECT语句之间使用UNION或UNION ALL关键字分割。UNION不使用ALL,执行的时候删除重复的记录,所有返回的行都是唯一的;使用关键字ALL的作用是不删除重复行也不对结果进行自动排序


使用正则表达式查询:

    

索引:

    索引是对表中一列或多列的值进行排序的一种结构,使用索引可提高数据库中特定数据的查询速度

    索引不起作用的情况:

        在使用LIKE关键字进行查询语句中,如果匹配字符串的第一个字符为“%”。只有不在第一个位置才起作用

        对于多个索引,只有查询条件中使用了这些字段中的第一个字段时,索引才会起作用

        查询条件中只有OR关键字,且OR前后的两个条件中的列都是索引时,查询中才使用索引

优化子查询:

        在MySQL中。可以使用连接查询来代替子查询。连接查询不需要建立临时表,其速度比子查询要快,如果查询中使用索引的话,性能会更好


优化数据库结构:

    数据库结构的设计,需要考虑数据冗余、查询和更新的速度、字段的数据类型是否合理等多方面的内容

    将字段很多的表分解成多个表  (将不常用的字段分离出来形成新表,旧表的主键可以是新表的主键)  

    增加中间表(对于需要经常联合查询的表,可以建立中间表以提高查询效率)通过建立中间表,把需要经常联合查询的数据插入到中间表中,然后将原来的联合查询改为对中间表的查询,以此提高查询效率

    增加冗余字段(以空间换时间)

优化插入记录的速度:

    插入数据时,影响插入速度的主要是索引、唯一性校验、一次插入记录条数

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值