数据库相关知识

一 .sql语句(mysql为例)

1、创建表

(1)创建新表 create tabel tablername{}

(2)根据已有的表创建

方法一: create table sale_copy like sale_maintain  -- sale_copy新表      -- sale_maintain 旧表只是创建表结构

方法二:   create table sale_copy as  select id,month,service_number,organization_name,province from sale_maintain

                  -- sale_copy新表   -- sale_maintain 旧表根据旧表创建指定字段新表表结构+数据

(3)查看表结构

方法一: desc tableName;

方法二: DESCRIBE tableName;

方法三: SHOW COLUMNS FROM tableName

(4)查看建表语句:SHOW  CREATE  TABLE table_name

(5)查看索引:show index from table

2、删除

drop table tabelName     -- 删除表结构 释放表结构所占的空间

truncate tabelName      -- 清空表无法恢复

delete                         -- 每次删除一行  将改操作作为事务记录在日志中,可以进行回滚

3、Alter

(1)修改表名

ALTER TABLE  old_table_name   RENAME TO  new_table_name

 eg :alter TABLE sale_copy RENAME to copyy

(2)增加列

Alter table tabname add column col type

 eg:alter table sale_copy add model VARCHAR(64)

(3)  修改字段名和类型   

ALTER  TABLE  table_name  MODIFY  字段名称   字段数据类型

eg: alter table sale_copy MODIFY model int(11)      --修改字段类型

ALTER  TABLE  table_name  CHANGE  旧字段名称   新字段名称  新字段数据类型

eg:alter table sale_copy change model devicename VARCHAR(64) --修改字段名称和类型

(4)  删除   

 ALTER TABLE  table_name  DROP  col

eg: alter table sale_copy  drop model     --如果表中只剩下一个字段无法删除

(5)  修改和删除字段的默认值

ALTER  TABLE  table_name   ALTER  字段名称  SET   DEFAULT  数值

eg : ALTER  TABLE  sale_copy  ALTER  model  SET  DEFAULT  'tk'        --修改默认值

ALTER  TABLE  table_name   ALTER   字段名称   DROP   DEFAULT

eg: ALTER TABLE  sale_copy  ALTER  model DROP  DEFAULT      --删除默认值

(6)  添加主键

    步骤一:  ALTER  TABLE  table_name  ADD  PRIMARY  KEY( id )

   步骤二:   ALTER  TABLE  table_name  MODIFY   id  int(10)  NOT  NULL AUTO_INCREMENT

 (7)  删除主键

 步骤一:   ALTER  TABLE  table_name  CHANGE   id   id  int(10)  --先删除自增长

 步骤二:   ALTER  TABLE  table_name  DROP  PRIMARY  KEY     --再删除主键

(8)添加索引

ALTER  TABLE  table_name  ADD  UNIQUE (字段名称  )    --唯一索引

ALTER  TABLE  test  ADD  INDEX索引名称 ( 字段名称 )       --普通索引

ALTER  TABLE  table_name  ADD  FULLTEXT  (字段名称  )   --全文索引

4、查询

4.1操作符

(1)比较运算符:=,  <=,   BETWEEN AND ,  IN,  LIKE, 和 IS NULL

(2)逻辑运算符: AND, OR和 NOT

4.2高级查询运算词

(1)union合并两个或多个select的结果集 消取重复的结果集 如果不需要消取重复的使用union all

(2)Except结果包含table1不包含table2 (mysql不支持) except all 同理union all

(3)INTERSECT结果包含table1和table2中都包含的结果集 (mysql不支持) intersect all 同理 union all

4.3外连接

(1)left join左外链接,结果集包含左表的所有行即使在右表中没有匹配的行

(2)right join右外连接,结果集包含右表的所有行即使在左表中没有匹配的行

(3)full join全连接 结果集包含两个表中的所有行

4.4  Group by

将查询结果按照1个或多个字段进行分组

(1)常用的聚合函数:count()计数   sum() 求和  avg()求平均数 max() 最大数  min()最小数

(2)配合聚合函数来使用

(3)group by+group_concat(name) :表示分组之后,根据分组之后的结果,使用group_concat() 来放置某字段值的集合


(4)group by用在where之后 order by之前,having用在group by之后(where先执行,再分组,分组完成再having)

(5)除聚合函数外,select语句中的每个字段都必须在group by中给出

(6)Select语句执行顺序 from -- where -- group by -- having -- order by -- limit

4.5子查询

(1)where型子查询:把内层查询的结果作为外层查询的比较条件


(2)From型子查询:把内存的查询结果当成临时表,供外层查询再次使用


注意:  内层查询的字段必须包含外层查询的字段

(3)Exists型子查询:把外层sql的结果拿到内层去测试,如果内层的sql成立,则取出该行

(4)Any in all子查询

 Any:ANY关键词的意思是“对于在子查询返回的列中的任一数值,如果比较结果为TRUE的话,则返回TRUE”


In in的效果跟=any效果一样


All:对于子查询返回的列中的所有值,如果比较结果为TRUE,则返回TRUE

二  sql优化

(1)尽量避免全表查询:考虑在where及order by涉及的列上添加索引

(2)尽量避免在where字句中的字段进行null判断,会导致放弃索引而进行全表查询

(3)尽量避免在where字句中使用 != 或<>操作符,or来链接条件,in 或者not in,对字段进行表达式操作,对字段进行函数操作,会导致放弃索引而进行全表查询

(4)select count(*) from table;这样不带任何条件的count会引起全表扫描,并且没有任何业务意义,是一定要杜绝的

(5)索引不是越多越好,提高select效率,但是insert和update有时可能会重建索引

(6)尽可能的使用varchar/nvarchar代替 char/nchar

(7)任何地方都不要使用select * from t,用具体的字段列表代替“*”,不要返回用不到的任何字段

。。。。。还有很多这些只是我们用的多的

三   事务

事务是一个操作序列,这些操作要么都执行,要么都不执行

主要是为了解决并发情况下保持数据一致性问题

四个基本特征:

(1)原子性:事务中包含的操作被看做是一个逻辑单元,这个逻辑单元的操作要么都成功,要么都不成功

(2)一致性:只有合法的数据可以被写入到数据库,否则事务应该回滚到最初状态

(3)隔离性:多个用户对同一数据进行并发访问,而不破坏数据的完整性和正确性

(4)持久性:事务结束后,事务处理的结果必须得到固化

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,636评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,890评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,680评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,766评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,665评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,045评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,515评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,182评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,334评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,274评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,319评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,002评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,599评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,675评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,917评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,309评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,885评论 2 341

推荐阅读更多精彩内容