SQL(一)

参考原文:http://www.w3school.com.cn/sql/sql_select.asp

一、

使用navicat premium软件登录mysql数据库,按 ctrll +f6,可使用sql语句查询数据库数据。

查询服务器上所有的数据库:show databases;

使用数据库:use raw_database;

查询数据库中的表格: show tables;

查询表格结构:desc ds_adver_num;show create table ds_adver_num; 前一条命令的输出显示更美观。

二、

基础命令

1.select

2.distinct

3.where
(1)可以在where子句中使用的运算符:
= 等于,<> 不等于(或者使用!=),><大于小于,>= <=大于等于小于等于,between...and... 在某个范围内,like

搜索某种格式。
(2)like的用法:
select * from table1 where 列名 like'....';
'....'中''之间的格式有:1_2 1和2开头,且中间只有一个字符;
                        1%,1开头的字符串;
                         %1,1结尾的字符串;
                        %12%,包含‘12’的字符串。

4.and,or
用来连接一个以上的筛选条件,可使用()来组合and 和or的使用。

5.order by(排序查看)
select * from table1 order by 列名 desc; 按降序排列,sql默认的排列顺序是升序。
select * from table1 order by 列名1 desc,列名2 ; 按照列名1降序排,如果列名1相同,则按照列名2升序排。
sql中varchar、datetime、bigint这三种类型的数据都可以拿来升序和降序排序。

6.insert into (在表格中添加一行数据)
insert into table1 values ('列1值','列2值',...) 向table1中插入一行数据。插入的这一行数据在每一列都有值。注意:括号中要插入的值要加单引号。
insert into table1 (列1,列3) values ('列1值','列3值') 向table1中插入一行仅在列1和列3有值的数据。

7.update(在表格中修改一行数据)
update table1 set 列1 ='...' where 列2='ABC'; 更改table1中列2为ABC的这一行的列1内容为...
 注:也可以同时修改多列的值。但是where 后面的 列2='ABC'必须能唯一确定一行。

8.delete(在表格中删除一行数据)
delete from table1 where 列1='ABC'; 通过列1唯一确定一行后,讲该行删除。
delete from table1; 在不删除表的情况下删除表格的所有行。表格的结构、属性和索引都还是完整的。

9.通配符
(1)% 替代一个或对个字符;
(2)_ 仅替代一个字符;
(3)[...] 替代字符列中的任一单一字符,如,select * from table1 where 列1 like '[...]%'; 表示从table1中选出以[]中任一字符开头的行。
(4)[!...] 不替代字符列中任一单一字符,如,select * from table1 where 列1 like '[!...]%'; 表示从table1中选出不以[]中任一字符开头的行。

10.in(求两个语句查询结果的交集或者非重叠部分)
  in在where子句中使用,扩展了= 的用法。
  如,select * from table1 where 列1 in ('列A','列B','列C'); 选择列1的值为列A,列B,列C的行。

注意: in 可求两个语句查询结果的交集。如,select ID from A where ID in (select ID from B);

         not in 可用于求两个语句查询结果的不同部分。如,select * from A where ID not in (select ID from B);

11.between
  (1)在where子句中使用,与and搭配。between A and B, 其中,A和B可以是数字、日期,也可是文本(英文文本,

则按照字母排序。)
  (2)显示区间之外的数据,可使用 not between ... and ...
  (3)区间的开闭情况依不同的数据库而不同。

12.create view
  (1)
   建立视图: create view table1 as xxxxxx;  其中xxxxx部分可以是任意一个选出来的表格。
   删除视图: drop view table1;
  (2)
注意:1.在视图中的修改,如删除、插入、更改等操作,会直接影响原表!

13.别名 alias
   主要是用于简化查询。可以对列或者表适用别名。

14.在数据库中建立表格
(1)明确该数据库使用的数据类型;
(2)进入数据库。使用use database1;进入数据库,在此数据库中建立表格;
(2)创建表格:create table test_table(name varchar(12),ID int(11),num int(11),add varchar(12));
(3)添加一行数据:insert into (目前只会一行一行的手动添加数据。)
(4)修改一行数据:update
(5)删除一行数据:delete
   注意:如果要删除某一列的数据,则相当于修改了整个表的结构,很可能造成很多后续问题,如关联等。列的删

除应该在设计表格结构时就尽量避免。故此类操作需谨慎!

15.删除数据库中的表格
(1)删除表格,包括表的结构、属性和索引:drop table table1;
(2)清空表格中的数据:truncate table table1;

16.多表查询
(1)直接select (用于主键可以连接两张表的联合查询)
如:select name , A.ID , num , sum from test_table , A where test_table.ID = A.ID;
   注意:使用了别名。
(2)inner join (用于主键可以连接两张表的联合查询)
如:select test_table.name , A.sum from A inner join test_table on A.ID = test_table.ID;
(3)left join
left join 会从左表返回所有的行,即使右表中没有匹配的行。用法、规则与inner join相同。
(4)right join
right join 会从右表返回所有的行,即使左表中没有匹配的行。用法、规则与inner join相同。
(5)full join
会从两张表返回所有的行,即使两张表中没有匹配的行
但是如下命令在mysql数据库中使用报错:
select B.name , A.sum from A full join B on A.ID = B.ID ;

17.union
格式:
语句1 union 语句2
结果:
将两个语句的查询结果求并集。
注意:
故要求两个查询语句拥有相同数量的列,列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须

相同。
union all与union唯一的区别在于,后者求并集,而前者会包括重复的查询结果。

18.MySQL不支持Select Into语句直接备份表结构和数据。

19.日期计算
(1)在一个日期上加日期:
select date_add('2014-11-18' , interval 3 day/week/month/year);
(2)在一个日期上减日期:
select date_sub('2014-11-18' , interval 3 day/week/month/year);

20.建立数据库
语句格式:create database database1;

21.删除数据库
语句格式:drop database database1;

22.constraints 限制加入表的数据的类型
(1)not null
该约束强制列不接受null值。在创建表格的时候使用。如,create table test_table(name varchar(12) not

null,ID int(11),num int(11),add varchar(12));
(2)unique
(3)primary key 主键
主键唯一标识表中的每条记录(主键包含唯一的值);
主键不能包含null值;
每张表都应该有且只有一个主键。
(4)foreign key
一个表的foreign key指向另一个表的primary key;
(5)check
用于限制列中的值得范围。如,create table test_table(name varchar(12) not null,ID int(11),num int

(11),add varchar(12),check (ID > 10));
(6)default

23.给表格的列创建索引

24.删除数据库、表格、清空表格数据(保留表格的创建)、删除表格的索引。

25.使用alter添加、修改和删除表格的某一列
(1)修改列的数据类型:
alter table table1 alter column column1 datatype;
(2)添加一列:
alter table table1 add column1 datatype;
(3)删除一列:
alter table table1 drop column column1;
删除列的操作需谨慎!

26.创建auto-incement字段
(1)含义
用于插入新纪录时不必为主键列规定值(会自动添加一个唯一的值),默认auto-increment序列的开始值是1,每条新

纪录递增1.
(2)语法示例:
create table B2(name varchar(12),ID int(11) not null auto_increment,num int(11), primary key (ID));
将ID列作为主键。在插入数据时不必再为主键列添加数据,insert into B2 (name, num) values ('a',1);主键列自

动从1开始生成。
(3)让主键从其他值开始:ALTER TABLE Persons AUTO_INCREMENT=100

27.日期
(1)日期统一作为字符串类型的数据;
(2)表格中日期后如果接了时间,那么在筛选的时候,...time = '2014-11-27'...这样的筛选时选不出数据的。
(3)日期计算函数:date_add('2014-11-18',interval 3 day/week/month/year)
                 date_sub('2014-11-18',interval 3 day/week/month/year)

28.null-遗漏的未知数据
含义:如果表的列是可选的,则该列的值可以存放null
注意:无法使用比较运算符(=,<,>)来测试null,只能使用is null 和not null .
使用举例:
(1)select * from A where ID is not null;
(2)select * from A where ID is null;
(3)如果某一列的值为null则不利于计算,可以使用ifnull(列1,0)函数将列1中为null的项返回为0.

29.数据类型

30.SQL的基础是relational database management system , RDBMS.
数据库系统有oracle , sql server,mysql,sybase,access(microsoft),DB2(IBM).
RDBMS也是这些数据库系统的基础。


   
   

原文地址:https://www.cnblogs.com/simone-wenwen/p/4087337.html