目录
13.说一说Drop,Delete与Truncate的共同点和区别?
char类型是【定长】的类型,当定义char(10),输入的时"123",他们占用的空间依然是10个字符。当输入的字符如果超出指定的范围,char会截取超出的字符。而且,当存储char,MySQL会自动删除输入字符串末尾的空格。
char适合存储很短的,一般固定长度的字符串。例如,char非常适合存储密码MD5值,因为它是一个定长的值。对于端的列,char比varchar在存储空间上效率更高。
varchar(n)类型用来存储可变长度,长度最大为n个字符的可变长度的字符串数据。比如varchar(10),然后存储"abc",实际就是存储了3个字符。
char类型每次修改的数据长度相同,效率更高。varchar,每次修改的数据长度如果不同,效率更低。
text不能设置默认值,varchar可以设置默认值。
text类型,由于单表的最大行宽的限制,支持溢出存储,只会存放768字节在数据页中,剩余的数据存储在溢出段中。
一般我们都是用varchar。
通过字符串的拼接,可以得到一个恒等的sql语句,可以跳过某些判断
1.原子性:A
一个事务,要么全部完成,要么全部不完成
2.一致性:C
在事务开始之前和事务结束之后,数据库的完整性没有被破坏
3.隔离性:Isolation
数据库允许多个事务同时对数据进行处理,每个事务之间是相互隔离
4.持久性:D
事务结束之后,对数据的增删改是永久性的
1.事务一旦提交,就不可能回滚
2.当一个连接对象被创建是,默认情况下自动提交事务
3.关闭连接是,数据会自动提交事务
索引是一种数据结构,可以帮助我们快速的进行数据的查找,更通俗的说,索引就相当于目录。为了方便查找书中的内容,通过对内容建立索引形成目录。索引是一个文件,它是要占据物理空间的。
1.通过创建唯一性索引,可以保证数据库表中每一个行数据的唯一性
2.可以大大加快数据的检索速度,这也是创建索引的最主要的原因
3.帮助服务器避免排序和临时表
4.将随机IO变成顺序IO
5.可以加速表和表之间的连接,特别是在实现的参考完整性方面特别有意义
当数据库有并发事务的时候,可能会产生数据的不一致,这时候需要一些机制类保证访问的次序。
是指两个或者两个以上的进程在执行时候,因为争夺资源造成相互等待的现象,进程一直处于等待中国,无法得到释放,这种状态就叫死锁
发出死锁检测,发现死锁之后,主动回滚死锁中的事务,不需要其他事务继续
- SELECT DISTINCT
- < select_list >
- FROM
- < left_table > < join_type >
- JOIN < right_table > ON < join_condition >
- WHERE
- < where_condition >
- GROUP BY
- < group_by_list >
- HAVING
- < having_condition >
- ORDER BY
- < order_by_condition >
- LIMIT < limit_number >
null值会占用更多的字节,且会在程序中造成很多与预期不符的情况
Drop | 直接删除表 |
Delete | 删除表中数据,可以加where语句 |
Truncate | 删除表中数据,在插入时自增长id又从1开始 |
主键:用户选作元组标识的一个候选键程序主键
超键:在关系中能唯一标识元组的属性集成为关系模式的超键
外键:如果关系模式S中属性Q是其他模式的主键,那么Q在模式S中称为外键
候选键:不含多余属性的超键称为候选键
在设计数据库结构的时候,要尽量遵守三范式,如果不遵守,必须有足够的理由
第一范式:每个列都不可以再拆分
第二范式:非主键列完全依赖主键,而不能是依赖于主键的一部分
第三范式:非主键列只依赖于主键,不依赖于其他非主键
SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。
1.NOT NULL:用于控制字段的内容一定不能为空(NULL)
2.UNIQUE:控件字段内容不能重复,一个表允许有多个Unique约束
3.PRIMARY KEY:也是用于控件字段内容不能重复,但它在一个表只允许出现一个
4.FOREING KEY:用于预防破坏表之间连接的动作,也能防止非法数据插入外键列,因为它必须是她指向的那个表中的值之一
5.CHECK:用于控制字段的值范围
小知识:控件字段:表示与对象关联的成员
条件:一条SQL语句的查询结果作为另一条查询语句的条件或查询结果
嵌套:多条SQL语句的嵌套使用,内部的S查询语句称为子查询
1.系统的吞吐量平静往往出现在数据库的访问速度上
2.随着应用程序的运行,数据库中的数据惠越来越多,处理时间会相应的变慢
3.数据是存放在磁盘上的,读写速度无法和内存相比
优化原则:减少系统瓶颈,减少资源占用,增加系统的反应速度
存储过程是一个预编译的SQL语句,优化是允许模块化的设计,就是说只需要创建一次,以后在该程序中就可以调用多次。如果某次操作需要执行多次SQL,使用存储过程比单纯的SQL语句执行要快。
返回值的区别:函数有一个返回值,而存储过程是通过参数返回的,可以有多个或者没有
调用的区别:函数可以在查询语句中直接调用,而存储过程必须单独调用