数据库知识整理<二>
又继续写的博客,希望自己能坚持每天写博客。分享自己的点滴,对自己成长有帮助。今天下午高强度打了三个小时篮球,小腿都抽筋了。很爽,失落的心情似乎变得开明了一些。想到了一句话:“像SB式的坚持总会有好的收获”,因为坚定了目标,不达目标不罢休。其他的就没什么了。好吧,不多说这些了。继续数据库知识总结吧。
二,管理数据库和表:
2.1管理数据库:
- 创建和使用数据库:
- 创建数据库的SQL语句:create database 数据库名;
- 需要注意的是:数据库名在服务器中必须是唯一的并且遵循合法的标识符规则:
- 第一个字符必须是:a-z和A-Z;下划线(_)、at符号(@)、数字符号(#)。
- 后面的字符可以是:字母、十进制数字、@、$、#、_。不能是RDBMS的保留字、不允许空格或其他特殊字符。
- 链接到数据库:
- 使用那个数据库即用SQL语句:use 数据库名;
- 删除数据库:
- 删除数据库的SQL语句:drop database 数据库名;
2.2数据类型:
- 整数数据类型:
- TINYINT:存储范围0-255,此类型数据占用1个字节的存储空间。
- SMALLINT:2个字节。
- INT:4个字节。
- BIGINT:8个字节。
- 浮点型数据类型:
- REAL型
- FLOAT型
- DECIMAL型
- NUMERIC型:与上者完全相同。
- 字符串类型:char、vchar、text
- 二进制数据类型:BINARY、VARBINARY。(使用时必须在前面加上OX标识才能是二进制数据类型)
- 逻辑数据类型:BIT-0或1。如果输入0或1以外的值,统一将被视为1。且不能为空为空毫无意义。
- 图形数据类型:IMAGE
- 日期时间数据类型:DATETIME、SMALLDATETIME。
- 货币数据类型:MONEY、SMALLMONEY。使用货币数据类型必须在数据前面加上货币符号,系统才能辨识是哪国的货币。如果不加没认为¥。
- 特殊数据类型:TIMESTAMP、UNIQUEIDENTIFIER。
2.3管理表:
- 创建表的SQL语句:create table<表名>(<列名><列的数据类型>[<列的约束>]);
- 删除表的SQL语句:drop table<表名>;(注意:在删除表时要注意是否有外键关联,如果有外键关联的就先删除外键关联表在删除本表,还要看是否有权限删除此表)
- 创建临时表:所谓临时表是指在有限的时间内存在的表,创建临时表的方法与普通表一样只是需要在表名前面加上#和##。本地表加#,全局的表加##。
- 复制表:在数据库中创建一个新的表的方法仅是复制一个已经存在的表。SQL语句如:select * into My_Friends from Friends;复制表的同时表的约定并不能复制过来,所以还是推荐使用creat的方式创建表和数据。复制表过来的时候可以通过alter的方式手动改变表的约束。如果我们只是想复制表的结构而不是数据的话我们可以这样使用SQL语句:select * into My_Friends from Friends where 1=0;让后面的条件永远为false。
- 修改表,alter table语句同其他选项一起可以更改表的数据结构:
- 添加一个表中没有的字段Address:alter table Friend add Address varchar(50);
- 如果要添加多个列的话:alter table Friend add Address varchar(50),Email varchar(30);
- 如果要更改列定义,可以使用SQL语句,比如给Phone列添加一个默认值约束,默认为‘不知道电话号码’:alter table Friend modify Phone default('不知道电话号码');
- 要删除表中的PhoneNo列:alter table Friend drop column PhoneNo;
2.4管理索引(非常重要,经常会被面试官问到):
索引的意义:索引是一个设计用来提供整个数据库操作速度的数据库对象,它通过创建一个内部的索引表来达到快速搜索的目的。索引是依赖于表建立的,在一个表上创建索引可以提高在该表上执行select语句的速度,因为索引被用于快速找到想要的记录而不是执行一个全表扫描,但是会降低delete、update、insert语句的执行速度,因为每次执行这些操作时内部索引结构需要被更新,大多数情况下带来的好处远大于坏处。
注意的是:索引可以是唯一的和非唯一的。唯一索引不允许在索引列上出现重复值。唯一索引通常创建在有主键或唯一约束的列上。由设置主键或唯一约束而自动创建的索引在约束被删除后,会自动删除,并且不能单独被删除。
- 创建索引:SQL语句—create index <索引名> on <表名>(<列名一>,[<列名二>],...);
- 删除索引:SQL语句—drop index。例如:drop index Friend.PhoneIndexNo;
总结:
- 数据库表的建立索引是非常重要的,会被大多面试官青睐。
- 记得上次面试时,面试官就问了我一个关于查询的知识,他说:我们查询10条数据很快加入只需要0.03秒,照此速度成上千万的数据我们那不得查到猴年马月了,问我怎样提高查询速度??其实这个问题真TM问的直白了,就别怪面试官故意***难我了。这不就是把索引的功能赤裸裸的告诉我了,就差没给我明说了。所以我活该被刷下来啊。打死我我也不会忘了它—索引。有了它妈妈再也不担心我查大量数据了。接下来我就得再去感受感受它的魅力了。