pangxia75 发表于 2018-10-5 07:56:51

Mysql之SQL语句、约束

1、查:SELECT 语句用于从表中选取数据。结果被存储在一个结果表中(称为结果集)。  sql select 语法
  select 列 from table_name;
  select * from table_name;
  2、插:INSERT INTO 语句用于向表格中插入新的行。
  sql insert 语法
  insert into table_name values (值1,值2,...);
  insert into table_name (列1,列2,...) values (值1,值2,...);
  3、改:Update 语句用于修改表中的数据。
  sql update 语法
  update table_name set 列1 = 新值 where 列2 = 某值# 列2指定谁修改,列1指定修改的内容
  4、删:DELETE 语句用于删除表中的行。
  sql delete 语法
  delete from table_name where 列 = 值;   # 删除某一行
  delete from table_name; 或 delete * from table_name;   #删除所有行(表的结构、属性和索引都是完整的)
  sql truncate table 语法
  truncate table table_name;      # 与delete一样删除表中所有行,效率更快
  5、top:TOP 子句用于规定要返回的记录的数目。
  列(s) = *
  sql top 语法
  select top number|precent 列(s) from table_name;   # 列(s) 表示 所有的列名称
  top number例:select top 2 * from table_name; 或 select * from table_name limit 2;
  top precent例:select top 50 precent * from table_name; # 选取表中50%的记录
  6、like:LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式
  sql like 语法
  select 列(s) from table_name where 列 like pattern;
  例:select * from table_name where 列 like 'A%'(在表中搜寻以A开头的)|'%B'(以B结尾的)|'%AB%'(包含AB的);
  7、in:IN 操作符允许我们在 WHERE 子句中规定多个值
  sql in 语法
  select * from table_name where 列 in(值1,值2,...);
  8、between:操作符 BETWEEN ... AND 会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。
  sql between 语法
  select * from table_name where 列 between 值1 and 值2;# 范围取头不取尾
  9、alias:为列名称和表名称指定别名(Alias)。
  sql alias 语法
  表:select * from table_name as alias_name;
  表别名例:select p.列1,p.列2,p.列3 from table_name1 as p,table_name2 as po where p.列1='值1' and p.列2='值2';
  列:select 列 as alias_name from table_name;
  列别名例:select 列1 as alias_name1,列2 as alias_name2 from table_name;
  10、join:用于根据两个或多个表中的列之间的关系,从这些表中查询数据。
  sql join 语法
  select tb1.列1,tb1.列2,tb2.列 from tb1 inner join tb2 on tb1.列3=tb2.列3 order by tb1.列1;
  或
  select tb1.列1,tb1.列2,tb2.列 from tb1,tb2 where tb1.列3=tb2.列3;
  备注:不同的 SQL JOIN
  除了在上面的例子中使用的 INNER JOIN(内连接),还可以使用其他几种连接。
  下面列出了可以使用的 JOIN 类型,以及它们之间的差异。
  JOIN: 如果表中有至少一个匹配,则返回行
  LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
  RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
  FULL JOIN: 只要其中一个表中存在匹配,就返回行
  inner join 关键字语法:在表中存在至少一个匹配时,INNER JOIN 关键字返回行。
  select * from tb1 inner join tb2 on tb1.列=tb2.列;      # inner join 与join是相同的
  left join 关键字语法:LEFT JOIN 关键字会从左表(tb1)那里返回所有的行,即使在右表(tb2)中没有匹配的行。
  select * from tb1 left join tb2 on tb1.列=tb2.列;
  right join 关键字语法:RIGHT JOIN 关键字会右表(tb2)那里返回所有的行,即使在左表(tb1)中没有匹配的行。
  select * from tb1 right join tb2 on tb1.列=tb2.列;
  full join 关键字语法:只要其中某个表存在匹配,FULL JOIN 关键字就会返回行
  select * from tb1 full join tb2 on tb1.列=tb2.列;
  11、union:用于合并两个或多个 SELECT 语句的结果集(UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同)
  sql union 与 union all 语法
  select * from table_name1 union select * from table_name2;
  select * from table_name1 union all select * from table_name2;
  备注:默认地,union 选取不同的值,如果允许重复的值,就使用 union all(列出所有的值)
  12、select into:从一个表中选取数据,然后把数据插入另一个表中。常用于创建表的备份复件或者用于对记录进行存档。
  sql select into 语法
  select * into new_table_name from old_table_name; # 所有列插入新表
  select 列 into new_table_name from old_table_name;# 某一列插入新表
  例:备份某张表select * into tb1_backup from tb1;
  向另一个数据库中拷贝表select * into tb1 in 'backup.mdb' from tb1;
  多表查询存入到新表   select tb1.列1,tb2.列2 into new_table_name from tb1 inner join tb2 on tb1.列3=tb2.列3;
  13、create database:用于创建数据库
  sql create database 语法
  create database database_name;
  14、create table:用于创建数据库中的表
  sql create table 语法
  create table table_name(列1 数据类型,列2 数据类型,...)
  备注:常用数据类型有 int(size)-整数、decimal(size,d)-带小数数字、char(size)-固定长度字符串、varchar(size)-可变长字符串
  数据类型后续会继续补充
  15、create index:用于在表中创建索引。在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据。
  注释:更新一个包含索引的表需要比更新一个没有索引的表更多的时间,这是由于索引本身也需要更新。因此,理想的做法是仅仅在常常被搜索的列(以及表)上面创建索引。
  sql create index 语法
  create index index_name on table_name(列);   # 简单的索引,允许使用重复的值
  create index index_name on table_name(列1 desc,列2);      # 默认是升序,希望降序在列名称后添加保留字 desc,索引不止一个列可以逗号隔开
  sql create unique index 语法      # 唯一的索引
  create unique index index_name on table_name(列);    # 唯一的索引意味着两个行不能拥有相同的索引值
  16、DROP:删除索引、表以及数据库
  sql drop 语法
  删除索引:drop index index_name on table_name;
  删除表:drop table table_name;
  删除库:drop database database_name;
  17、alter table : 语句用于在已有的表中添加、修改或删除列。

  sql>  添加列:alter table table_name add 列 数据类型;
  删除列:alter table table_name drop column 列;
  改变列中数据类型:alter table table_name modify column 列 需要修改的类型;
  只修改列的数据类型的方法:

  通常可以写成>  例如:student表中列sname的类型是char(20),现在要修改为varchar(20),SQL语句如下
  alter table student modify column sname varchar(20);
  同时修改列名和列的数据类型的方法:

  通常可以写成>  例如:student表中列sname的类型是char(20),现在要修改为stuname varchar(20),SQL语句如下
  alter table student change column sname stuname varchar(20);
  alter table table_name add   [约束条件]; # 添加列
  alter table table_name   ; # 修改列名
  alter table table_name modify; # 修改列的数据类型
  alter table table_name modify   FLRST|AFTER ; # 修改列的位置
  alter table table_name drop ;# 删除列
  alter tablerename to ; # 修改表名
  18、auto increment:会在新记录插入表中时生成一个唯一的数字
  通常希望在每次插入新记录时,自动地创建主键字段的值。可以在表中创建一个 auto-increment 字段。
  sql auto-increment 语法
  create table table_name(id int not null auto_increment,name varchar(255) not null,PRIMARY key(id)); #id定义为auto_increment主键
  19、view(视图): 视图是可视化的表。视图包含行和列,就像一个真实的表
  注释:数据库的设计和结构不会受到视图中的函数、where 或 join 语句的影响。
  sql create view 语法
  create view view_name as select 列(s) from table_name where 条件;
  注释:视图总是显示最近的数据。每当用户查询视图时,数据库引擎通过使用 SQL 语句来重建数据。
  更新视图:create or replace view view_name as select 列(*) from table_name where 条件;
  删除视图:drop view view_name;

页: [1]
查看完整版本: Mysql之SQL语句、约束