SQL--索引,DDL,DML,

索引

索引依赖于表建立的,其中注明了表的各个值所在的位置。
实际上,一个表的存储是由两部分组成的,一部分用来存放表的数据页面;另一部分存放索引页面,索引就存放在索引页面上。
索引的优点
	通过创建唯一索引,保证数据库表每行数据的唯一性
	大大加快数据查询速度
	在使用分组和排序进行数据查询时,可以显著减少查询中分组和排序的时间
索引的缺点
	当数据表中的记录被添加、删除、修改时,数据库系统需要维护索引。因此,有一定的系统开销。
	存储索引信息需要一定的磁盘空间
创建索引:
	自动:在表上定义主键、唯一约束、外键约束时,系统会为该数据列自动创建对应的索引。

	手动创建索引:
			用户可以通过create index ..语句来创建索引
            create index 索引名 on 表名(列名1,列名2,...);
	删除索引:
	自动:数据表被删除时,该表上的索引自动被删除。
	手动:用户可以通过drop index ...语句来删除指定数据表上的指定索引。
            drop index 索引名 on 表名; 

    查看索引 
            show index from tablename;

DDL语言

    DDL语句用于操作表,主要由createalterdrop  truncate 四个关键字完成

         创建表:
        1.直接创建表
	create table 表名 
	(
	    --可以有多个列 定义
	    字段名1 数据类型(域值) [非空约束][缺省值],
	    ...
	    字段名1 数据类型(域值) [非空约束][缺省值]
	);
	2.复制表结构建立表
		create table 新建表名 like 已有表名; -- 将已有表复制表结构到新建表
	3.根据数据集直接建表
		create  table  新建表名  as (select  已有表名某的字段,已有表名某的字段...   from 已有表名);
重命名表
alter table 表名 rename to 新表名;
删除表
drop table 表名;
清空表数据,保留表结构
truncate 表名;清除彻底不留痕
修改表结构
        包括增加列定义、修改列定义、重命名列、删除列 等操作。
	1.增加列
		alter table 表名 
		add
		(
		  字段名 字段类型 [非空约束] [默认值],
		  ...
	 	 字段名 字段类型 [非空约束] [默认值]
		);
       2.修改列定义:
			如果列里有数据:
                        1.修改的列范围不能小于列里目前字段的最大长度。
			2.不能跨类型修改
				alter table 表名 
				modify 列名 数据类型 [默认值];
        3.修改列名
			alter table 表名 change 旧列名 新列名 列类型 [默认值];
            列类型可以更改,但是如果换了类型的话必须要给长度
            如果不更改类型,那么只给原类型,可以不给长度
            ALTER TABLE stu_hehetwo change stuu_age stu_age varchar(4);
		4.从数据表中删除列
			alter table 表名 drop 列名;
DML用于添加、修改和删除表中的行。主要由insertupdate  delete 三个关键字完成。
DML-insert into 语句:用于向指定数据表中插入记录。
注意:主键必须要唯一
单条插入
	Insert into 表名(属性列表)values (值列表)
	如果是插入所有列,可以写成 Insert into 表名 values(值列表)
	属性列表和值列表要一一对应。
        如果字段设置可以为null,那么插入记录不给值的话,默认为null
        如果字段设置不可以为null,那么插入时应该给值。
        
	注意:  添加数据时要忽略自增列。如果插入自增列数据,不报错,但改变了之前的序列,下一个默认序列就从你插入的序列值开始。值列表的数据类                  型和取值范围要和表定义一致,主键值不能重复

        格式: INSERT INTO 表名 [属性列表,这里可以省略] VALUES (字段值1,字段值2...字段值n);
               例如:        INSERT INTO student
                            VALUES (2001,'nibuhao',19,'nan',3);
        
多条插入
	values后面可以跟多个值列表,逗号分隔
	insert into 表名 (属性列表)values 
	(值列表1),(值列表2),...;
        例如
            INSERT INTO student 
            (stu_name,class_id)
            VALUES
            ('张三',3),
            ('wangwu',3),
            ('maliu',3);
    
将查询结果插入——      Insert into select   
		    Insert into 表名(字段,字段)  select 字段,字段 from 查询表;
 		    将student 表里的student_name 值 查出,放到test表里
		    insert into test (name) (select student_name from student);//不能加values

DML-update语句:用于修改数据表的记录,通常使用where子句限定修改哪些记录。

update 表名
set 列名1=值1, 列名2=值2,...  [where 条件];
注意 如果不加条件,那么修改的是整个表的所有记录
DML- 用于删除指定数据表的记录。通常使用where子句限定要删除哪些记录。
delete from 表名 [where 条件];
注意 如果不加条件,那么删除的是整个表的所有记录















  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值