sql增加字段

一文总结分析聚集索引、非聚集索引、覆盖索引的工作原理!

旧街凉风 提交于 2020-04-07 22:47:24
「 数据库 」和「 数据库索引 」这两个东西是在服务器端开发领域应用最为广泛的两个概念,熟练使用数据库和数据库索引是开发人员在行业内生存的必备技能。 使用索引很简单,只要能写创建表的语句,就肯定能写创建索引的语句,要知道这个世界上是不存在不会创建表的服务器端程序员的。然而, 会使用索引是一回事, 而深入理解索引原理又能恰到好处使用索引又是另一回事,这完全是两个天差地别的境界(我自己也还没有达到这层境界)。很大一部份程序员对索引的了解仅限于到“加索引能使查询变快”这个概念为止。 1、为什么要给表加上主键? 2、为什么加索引后会使查询变快? 3、为什么加索引后会使写入、修改、删除变慢? 4、什么情况下要同时在两个字段上建索引? 这些问题他们可能不一定能说出答案。知道这些问题的答案有什么好处呢?如果开发的应用使用的数据库表中只有1万条数据,那么了解与不了解真的没有差别, 然而, 如果开发的应用有几百上千万甚至亿级别的数据,那么不深入了解索引的原理, 写出来程序就根本跑不动,就好比如果给货车装个轿车的引擎,这货车还能拉的动货吗? 接下来就讲解一下上面提出的几个问题,希望对阅读者有帮助。 网上很多讲解索引的文章对索引的描述是这样的「索引就像书的目录, 通过书的目录就准确的定位到了书籍具体的内容」,这句话描述的非常正确, 但就像脱了裤子放屁,说了跟没说一样

mysql入门(一)

社会主义新天地 提交于 2020-03-28 18:16:16
数据库介绍 数据库是在计算机出现以后,为了解决计算机存储问题而创建, 数据库中包含表,表当中才是数据。 数据库的发展史 1. 萌芽阶段 所有存储依赖的都是文件,安全性低,查找非常困难。 2. 层次模型 1). 优点:查询分类的效率高; 2). 缺点:导航结构:如果查找同类别数据,效率低。 数据不完整(如下图) 3. 网状模型 数据不完整性:我们认为每一行数据之间是独立不相关的,网状模型解决了数据不完整的问题,但是依然没有导航结构。 4. 关系模型 现在主流的数据库模型。特点:每张表都是独立的,没有导航结构,表和表之间通过公共字段建立关系,注意:公共的字段,名字可以不一样,但是数据类型必须一致,表达的含义必须一致.数据类型一致,但不一定是公共字段。 优点:有导航结构; 缺点:关系型数据库操作不便捷(关系可能比较复杂),执行效率低下。 补充:在项目中不是每一个业务都需要关系型数据库,可以使用非关系型数据库(NoSql) 简单概念认识 记录,字段,行列,表的属性,字段的属性。 1. 一条记录我们称之为一行数据; 2. 一个字段称之为一列; 3. 表的属性就是字段; 4. 字段的属性就是该字段的功能; 5. 数据冗余指的是数据重复率。 【补充】: 1)冗余只能减少,不能杜绝; 2)冗余减少了,表的体积就减少了,更新速度提高了,保证了数据额完整性; 3)减少了冗余,但是表的数量增加了

sql 2005 数据库字段类型说明

狂风中的少年 提交于 2020-03-25 10:53:49
数据类型 类型 描 述 bit 整型 bit 数据类型是整型,其值只能是0、1或空值。这种数据类型用于存储只有两种可能值的数据,如Yes 或No、True 或Fa lse 、On 或Off int 整型 int 数据类型可以存储从- 2 31 (-2147483648)到2 31 (2147483 647)之间的整数。存储到数据库的几乎所有数值型的数据都可以用这种数据类型。这种数据类型在数据库里占用4个字节 smallint 整型 smallint 数据类型可以存储从- 2 15 (-32768)到2 15 (32767)之间的整数。这种数据类型对存储一些常限定在特定范围内的数值型数据非常有用。这种数据类型在数据库里占用2 字节空间 tinyint 整型 tinyint 数据类型能存储从0到255 之间的整数。它在你只打算存储有限数目的数值时很有用。 这种数据类型在数据库中占用1 个字节 numeric 精确数值型 numeric数据类型与decimal 型相同 decimal 精确数值型 decimal 数据类型能用来存储从-10 38 -1到10 38 -1的固定精度和范围的数值型数据。使用这种数据类型时,必须指定范围和精度。 范围是小数点左右所能存储的数字的总位数。精度是小数点右边存储的数字的位数 money 货币型 money 数据类型用来表示钱和货币值

MySQL笔记总结

橙三吉。 提交于 2020-03-10 13:12:37
总结一下我之前自己学习MySQL的笔记,仅供参考。 使用命令行调用MySQL一定要注意分号,不然会出现报错。建议自己练习的时候,可以先把代码打到记事本里,再粘贴到命令行中运行,就不容易犯错了。 1.数据库常用操作 1)查询数据库:show databases; 2)创建数据库:create databases 数据库名字; 3)使用某一个数据库:use 数据库名字; 4)显示当前数据库里的数据表: show tables; 5)创建数据表: create table 表名字( 数据类型+字段); 6)显示数据表:describe 数据表名; 7)查看数据表中的记录:select * from 数据表名; 8)向数据表中添加数据记录: insert into 数据表名 values(‘a’,‘b’,‘c’,NULL); 9)从数据表中删除数据记录:delete from 数据表名 where name = ’ ‘; 10)从数据表中修改记录: update 数据表名 set name= ’ 改后的名’ where 所属的类名=‘ 对应的名’; 2.MySQL支持的数据类型有三种:数值,日期/时间,字符串类型 3.MySQL建表约束 1) 主键约束 :能够唯一确定一张表中的一条记录,即通过给某个字段增加约束,可使得该字段不重复且不为空。 create table 数据表名( id

ACCP 结业考试

好久不见. 提交于 2020-03-07 07:47:25
1) 在 SQL Server 中,为数据库表建立索引能够(C )。 索引:是SQL SERVER编排数据的内部方法,是检索表中数据的直接通道 建立索引的作用:大大提高了数据库的检索速度,改善数据库性能 A. 防止非法的删除操作 B. 防止非法的插入操作 C. 提高查询性能 D. 节约数据库的磁盘空间 2) 在 SQL SERVER 中,创建一个表使用(C )语句。 A. INSERT 增加数据 B. DROP 删除数据库,表,约束,视图,索引,存储过程 C. CREATE 创建数据库,表,视图,索引,存储过程 D. ALERT 创建约束或者修改存储过程 3) 在 SQL SERVER 中,下面关于视图说法错误的是(C )。 A. 对查询执行的大多数操作也可以在视图上进行 B. 使用视图可以增加数据库的安全性 C. 不能利用视图增加,删除,修改数据库中的数据 为了保证数据库的安全,尽量不要利用视图进行增删改操作 D. 视图使用户更灵活的访问所需要的数据 4) 在数据库设计中,用E-R图来描述信息结构但不涉及信息在计算机中的表示,它是数据库设计的( B )阶段。 A. 需求分析 B. 概要设计 C. 逻辑设计 D. 物理设计 5) 在SQL Server 数据库中,如果强制要求grades表中的学员必须是Students表中存在的学员,以下描述正确的是( A )。 A. 在

面试:请谈谈你日常如何做SQL优化

痞子三分冷 提交于 2020-03-07 04:28:18
首先我们要搞清楚为什么要进行SQL优化 开发项目上线初期或者开发的项目级别小,由于业务数据量相对较少,一些SQL的执行效率对程序运行效率的影响不明显,而随着时间的积累,项目的成熟,业务数据量与日俱增,这时SQL的执行效率对程序的运行效率的影响逐渐增大,此时就必须进行SQL优化来提升系统的运行性能。 如何进行SQL优化 1.优化表结构 1.1尽量使用数字型字段 若只含数值信息的字段尽量不要设计为字符型,这会降低查询和连接的性能,并会增加存储开销。 这是因为引擎在处理查询和连接时会逐个比较字符串中每一个字符,而对于数字型而言只需要比较一次就够了。 1.2尽可能的使用 varchar 代替 char 首先变长字段存储空间小,可以节省存储空间, 对于查询来说,在一个相对较小的字段内搜索效率显然要高些。 1.3对作为查询条件和order by的字段简历索引 建立索引后可以有效的避免全表扫描。 1.4当索引列大量重复数据时,可以把索引删除掉 并不是所有索引对查询都有效,SQL是根据表中数据来进行查询优化的,当索引列有大量数据重复时,SQL查询可能不会去利 用索引,如一表中有字段sex,male、female几乎各一半,那么即使在sex上建了索引也对查询效率起不了作用。 1.5一个表中索引最多不要超过6个。 2.通过优化查询 2.1避免在 where 子句中对字段进行 null 值判断

oracle常用sql语句语法

拈花ヽ惹草 提交于 2020-03-06 09:31:44
一.数据控制语句 (DML) 部分   1.INSERT   (往数据表里插入记录的语句)   INSERT INTO 表名(字段名1, 字段名2, ……) VALUES ( 值1, 值2, ……);   INSERT INTO 表名(字段名1, 字段名2, ……)   SELECT 字段名1, 字段名2, …… FROM 另外的表名;   字符串类型的字段值必须用单引号括起来, 例如: ’GOOD DAY’   如果字段值里包含单引号’ 需要进行字符串转换, 我们把它替换成两个单引号''.   字符串类型的字段值超过定义的长度会出错, 最好在插入前进行长度校验.   日期字段的字段值可以用当前数据库的系统时间SYSDATE, 精确到秒   或者用字符串转换成日期型函数TO_DATE(‘2001-08-01’,’YYYY-MM-DD’)   TO_DATE()还有很多种日期格式, 可以参看ORACLE DOC.   年-月-日 小时:分钟:秒 的格式YYYY-MM-DD HH24:MI:SS   INSERT时最大可操作的字符串长度小于等于4000个单字节, 如果要插入更长的字符串, 请考虑字段用CLOB类型,   方法借用ORACLE里自带的DBMS_LOB程序包.   INSERT时如果要用到从1开始自动增长的序列号, 应该先建立一个序列号   CREATE SEQUENCE

MySQL下的SQL语句

强颜欢笑 提交于 2020-03-05 20:58:43
SQL语言包含四个部分:   DDL(数据库定义语言):用于定义和管理数据对象,包括数据库、数据表等           如:create、drop、alter   DML(数据库操作语言):用于操作数据库对象中所包含的数据           如:insert、update、delete   DQL(数据库查询语言):用于查询数据库对象中所包含的数据           如:select   DCL(数据库控制语言):管理数据库的语言,包括管理权限及数据更改           如:grant、revoke、commit、rollback          【对数据库的操作】 创建数据库: create database/schema [if not exists] db_name default character set '字符集'; 删除数据库: drop database if exists db_name; 查看已有的数据库: show databases/schemas; 打开指定数据库: use db_name; 查看当前打开的数据库: select database(); 查看已创建的指定数据库的编码方式: show create database db_name; 修改已有数据库的编码方式: alter database db_name default

MySql数据库基础

三世轮回 提交于 2020-03-02 10:04:07
1.数据库概述 数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除及查询操作。 2.表数据 根据表字段所规定的数据类型,我们可以向其中填入一条条的数据,而表中的每条数据类似类的实例对象。表中的一行一行的信息我们称之为记录。 3.Mysql启动与登录  MySQL是一个需要账户名密码登录的数据库,登陆后使用,它提供了一个默认的root账号,使用安装时设置的密码即可登录。 4.SQL语句    l SQL分类: n 数据定义语言:简称DDL(Data Definition Language),用来定义数据库对象:数据库,表,列等。关键字:create,alter,drop等 n 数据操作语言:简称DML(Data Manipulation Language),用来对数据库中表的记录进行更新。关键字:insert,delete,update等 n 数据控制语言:简称DCL(Data Control Language),用来定义数据库的访问权限和安全级别,及创建用户。 n 数据查询语言:简称DQL(Data Query Language),用来查询数据库中表的记录。关键字:select,from,where等 5.通用语法    l SQL语句可以单行或多行书写,以分号结尾 l 可使用空格和缩进来增强语句的可读性

hibernate.hbm.xml配置文件解析

柔情痞子 提交于 2020-03-02 03:51:29
转自:https://www.cnblogs.com/uoar/p/6670612.html 1. 1 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 2 <hibernate-mapping package="com.aegop.mto.pojo"> 3 <!-- 标识一个类的xml映射,name为类名,table为表名 --> 4 <class name="Street" table="Streets"> 5 <!-- 主键的设置,generator标识主键生成方式,因为native便于数据库的移植所以.嘿嘿!你懂的 --> 6 <id name="id" type="int"> 7 <column name="Id"/> 8 <generator class="native"/> 9 </id> 10 <!-- 这里配了该类一个属性街道名称 name属性字段,column,数据库对应列 --> 11 <property name="streetName" type="string" column="StreetName" /> 12 <!--