设为首页 收藏本站
查看: 735|回复: 0

[经验分享] Mysql之SQL语句、约束

[复制链接]

尚未签到

发表于 2018-10-5 07:56:51 | 显示全部楼层 |阅读模式
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 [in externaldatabase] from old_table_name; # 所有列插入新表
  select 列 into new_table_name [in externaldatabase] 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   [约束条件][FLRST(添加列到表的最前面)|AFTER(指定列后面)  ]; # 添加列
  alter table table_name   ; # 修改列名
  alter table table_name modify  ; # 修改列的数据类型
  alter table table_name modify   FLRST|AFTER ; # 修改列的位置
  alter table table_name drop ;  # 删除列
  alter table  rename 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、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-612435-1-1.html 上篇帖子: MySQL8安装:mysql-8.0.11-winx64 下篇帖子: mysql主从配置失败,主从通讯失败
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表