码迷,mamicode.com
首页 > 数据库 > 详细

SQL小知识点

时间:2019-06-14 21:51:25      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:创建表   zhang   lan   lock   内容   tor   and   约束   last   

1:left join 返回左表中的所有行,即使右表中没有匹配,返回一和虚表(包括两个表的所有列),没有匹配的字段为null

2:字符串拼接符用concat或是||

3:链接:https://www.nowcoder.com/questionTerminal/153c8a8e7805400ba8e384e03acc6b3e
来源:牛客网

因为题目判定系统使用的是sqlite3,所以必须按sqlite3的写法来做,

1

2

insert or ignore into actor

values(3,‘ED‘,‘CHASE‘,‘2006-02-15 12:34:33‘);


如果是mysql,那么把or去掉,像下面这样:

1

2

insert IGNORE into actor

values(3,‘ED‘,‘CHASE‘,‘2006-02-15 12:34:33‘);

两种数据库还是有区别的。

4:  select ...into table1 from table2(从table2中查取数据并创建一个新表table1中)

     insert table1 select .. from table2(从table2中查取数据并放入到现有的表table1中)

5: 创建表从其它表中查询数据并插入到新表中:

create table actor_name(
first_name varchar(45) not null,
last_name varchar(45) not null
);
insert into actor_name select first_name,last_name from actor;
技术图片
create actor_name as select first_name,last_name from actor;
sql数据库需要去掉as
技术图片

6 :链接:https://www.nowcoder.com/questionTerminal/f9fa9dc1a1fc4130b08e26c22c7a1e5f
来源:牛客网

wasrehpic

SQLite中,使用 INDEXED BY 语句进行强制索引查询,可参考:

http://www.runoob.com/sqlite/sqlite-indexed-by.html

1

SELECT * FROM salaries INDEXED BY idx_emp_no WHERE emp_no = 10005

MySQL中,使用 FORCE INDEX 语句进行强制索引查询,可参考:

http://www.jb51.net/article/49807.htm

1

SELECT * FROM salaries FORCE INDEX idx_emp_no WHERE emp_no = 10005

 7: 修改表(结构):alter table 表名 add column 列名      alter tabel 表名 alter column 列名   alter table 表名 drop column 列名(column可以省略)  alter table 表名1 rename to/as 表名2(修改表名)

8:删除表:drop table 表名(删除整个表)        truncate table 表名(删除表的内容,表结构还在)   delete table 表名 where(一行行删除,不带where时与truncate一样)参考:删除表

9: 链接:https://www.nowcoder.com/questionTerminal/2bec4d94f525458ca3d0ebf3bc8cd240
来源:牛客网

本题运用 REPLACE 有两种解法

方法一:全字段更新替换。由于 REPLACE 的新记录中 id=5,与表中的主键 id=5 冲突,故会替换掉表中 id=5 的记录,否则会插入一条新记录(例如新插入的记录 id = 10)。并且要将所有字段的值写出,否则将置为空。可参考:

http://blog.csdn.net/zhangjg_blog/article/details/23267761

1

REPLACE INTO titles_test VALUES (5, 10005, ‘Senior Engineer‘, ‘1986-06-26‘, ‘9999-01-01‘)

方法二:运用REPLACE(X,Y,Z)函数。其中X是要处理的字符串,Y是X中将要被替换的字符串,Z是用来替换Y的字符串,最终返回替换后的字符串。以下语句用 UPDATE和REPLACE 配合完成,用REPLACE函数替换后的新值复制给 id=5 的 emp_no。REPLACE的参数为整型时也可通过。可参考:

http://www.cnblogs.com/huangtailang/p/5cfbd242cae2bcc929c81c266d0c875b.html

http://sqlite.org/lang_corefunc.html#replace

1

UPDATE titles_test SET emp_no = REPLACE(emp_no,10001,10005) WHERE id = 5

 10:  给已有的表添加外键约束(mysql)   alter table 表名1 add foreign key(列名1)references 表名2(列名2)

SQL小知识点

标签:创建表   zhang   lan   lock   内容   tor   and   约束   last   

原文地址:https://www.cnblogs.com/wuba/p/11025463.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!