数据库知识整合

只返回不同的值

select distinct id from products;

限制结果
从行5开始的第5行,第一个数位置,第二个为要检索的行数;

select name from pr limit 5,5

从mysql5开始,从第三行开始取4行

limit 4 offset 3

排序:
默认ASC升序,DESC降序,先降序排列,相同的升序排列如下,找出最贵的两个,limit要放在orderby后面

select * from table order by prod DESC ,name limit 2

过滤数据
表范围 between and

组合 语句用and或者or,and优先权更高。

in更好
列出除了2012,2013两个价格的产品

where price not in2012,2013

常用通配符%

where table like ‘jet%’

%anvi%匹配任意位置
s%e s开头e结尾
下划线匹配单个字符而不是多个字符。

正则表达式也可以应用于搜索。

联结表
外键:某表中的一列包含另一张表的主键

简单sql

SELECT operator_no,operator_name,transit_depot_no,operator_role,transit_depot_name
 FROM 
 tdop_operator_info WHERE transit_depot_no='755WF' LIMIT 0,10

SELECT operator_no,operator_name,transit_depot_no,operator_role,transit_depot_name
 FROM 
 tdop_operator_info WHERE operator_no='955'

UPDATE tdop_operator_info SET operator_role='W' WHERE operator_role=NULL

DELETE FROM tdop_operator_info WHERE operator_no='120'

INSERT INTO tdop_operator_info(operator_no,operator_name,transit_depot_no,operator_role,transit_depot_name)
 VALUES
('9557','zhanghang','755WF','W','黄田')


REPLACE INTO tdop_operator_info(operator_no,operator_name,transit_depot_no,operator_role,transit_depot_name) 
VALUES
('9557','zhanghan','755WF','W','黄田')

修改表:

alter TABLE tdop_operator_info add operator_role VARCHAR(16) not NULL DEFAULT 'W'

alter TABLE tdop_operator_info add del_flag VARCHAR(8)  DEFAULT '0'

建表语句:

CREATE TABLE tdop_crate_flight_match
(
id  int identity(1,1) PRIMARY KEY COMMENT 'id',
crate_type varchar(16) COMMENT '舱位类型(1主舱,2下前舱,3下后舱)',
plane_type  varchar(16)  COMMENT '飞‘类型',
is_special_crate  varchar(8) COMMENT'(1是,0不是)',
special_crate_name varchar(16) COMMENT '特殊板位名称',
crate_position varchar(8) COMMENT'板箱位置',
crate_type VARCHAR(8) COMMENT '板箱类型'
)
COMMENT='板箱机型匹配表'
ALTER TABLE tdop_crate_task DROP COLUMN  crate_type;
ALTER table tdop_crate_task add   `crate_type` varchar(16) DEFAULT NULL COMMENT '板箱类型';
ALTER table tdop_crate_task add `seat_type` varchar(2) DEFAULT NULL COMMENT '舱位类型{1:板箱、2:腹舱、3:尾箱}';

ALTER TABLE tdop_flight_task add   `final_load_date` varchar(32) DEFAULT NULL COMMENT '截载日期';
ALTER TABLE tdop_flight_task add  `final_load_time` varchar(16) DEFAULT NULL COMMENT '截载时间';

ALTER TABLE tdop_crate_flight_match DROP COLUMN  seat_type ;
ALTER TABLE tdop_crate_flight_match ADD `seat_type` varchar(2) DEFAULT NULL COMMENT '舱位类型(1:主舱,2:下前舱,3:下后舱)' ;

ALTER TABLE tdop_crate_flight_match auto_increment=1
CREATE TABLE 'dds_appear_icon' {
'id' int(10) NOT NULL AUTO_INCREMENT,
'src_deptCode' VARCHAR(16) NOT NULL COMMENT '当前网点',
'start_time'   VARCHAR(32) NOT NULL COMMENT '显示按钮开始时间',
'end_time'       VARCHAR(32) NOT NULL COMMENT '显示按钮结束时间',
'create_time' timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
'modify_time' timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间'
PRIMARY KEY ('id')
}ENGINE=INNODB AUTO_INCRAMENT=17 DEFAULT CHARSET=utf8 COMMENT ='按钮显示时间段表' 

索引操作:
1.添加PRIMARY KEY(主键索引)

mysql>ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )  

2.添加UNIQUE(唯一索引)

mysql>ALTER TABLE `table_name` ADD UNIQUE (  
`column`  
)  
alter table tc_dds_appear_icon drop index `src_deptCode`;

alter table tc_dds_appear_icon add unique key `srcDeptCode` (`src_deptCode`);

alter table table_name add unique key `new_uk_name` (`col1`,`col2`);

3.添加INDEX(普通索引)

3.添加INDEX(普通索引)  
mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column` )  

4.添加FULLTEXT(全文索引)

mysql>ALTER TABLE `table_name` ADD FULLTEXT (  
`column`  
)  

5.添加多列索引


mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` ) 

删除:

alter table student drop index idx_name;
查看索引 show index from student\G

replace用法:

replace INTO tt(gg) VALUES ('WW') 

(1)replace into原理

replace into 跟 insert 功能类似,不同点在于:replace into 首先尝试插入数据到表中,
如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据。 2. 否则没有此行数据的话,直接插入新数据。

(2)replace into的应用注意事项

1)插入数据的表必须有主键或者是唯一索引!否则的话,replace into 会直接插入数据,这将导致表中出现重复的数据。
2)如果数据库里边有这条记录,则直接修改这条记录;如果没有则,则直接插入,在有外键的情况下,对主表进行这样操作时,因为如果主表存在一条记录,被从表所用时,直接使用replace into是会报错的,这和replace into的内部原理是相关(ps.它会先删除然后再插入)。
3)正确做法是- 即先删除该条存在的数据,然后再次插入这条数据,这和外键约束相悖呢,因此只能采用update和insert这样的组合,来应对外键约束

原文:http://blog.csdn.net/helloxiaozhe/article/details/77427266

SQL中的DML、DDL以及DCL是什么?
DML(data manipulation language)是数据操纵语言:它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言。

DDL(data definition language)是数据定义语言:DDL比DML要多,主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用。
DCL(DataControlLanguage)是数据库控制语言:是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)语句。

查询数据库所有表

select table_name 
from information_schema.tables 
where table_schema='db1'

select table_name 
from information_schema.tables 
有就不管,没有就插入
insert ignore into
有就修改,没有就插入
replace into
如果存在就修改,不存在就插入
INSERT INTO t_pro_gift
        ( _id, 
        name,
        age )
VALUES 
        ( 1,
        'hello',
        24 )
    ON DUPLICATE KEY UPDATE
        id = 1,
        name = 'world',
        age = 55

连接查询

SELECT a.id as id1,b.id as id2 FROM (SELECT * FROM tc_unmanned_store_grid WHERE id>565) a  INNER JOIN tc_unmanned_store_grid_append b ON a.uniqueId=b.unique_id 

猜你喜欢

转载自blog.csdn.net/qq_31443653/article/details/77867016