范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

SQL语言分类有哪几种?分别都对应着哪些关键字?都整理在这里了

  本文是mysql系列之第三篇文章 ,主要介绍常用的SQL语句 ,具体如下 ,若要查看mysql客户端工具的使用,请见:mysql系列之一文详解Navicat工具的使用(二)sql语言分类DDL:数据定义语言 DQL:数据查询语言 DML:数据操纵语言 DCL:数据控制语言
  语言类型
  说明
  关键字
  DDL Data Definition Language
  数据定义语言
  create、alter、truncate、drop ,show ,use
  DML Data Manipulation Language
  数据操纵语言
  insert、delete、update
  DQL Data Query Language
  数据查询语言
  select
  DCL Data Control Language
  数据控制语言
  grant、revoke、commit、rollback 数据库对象
  1.表(Table )
  数据库中的表与我们日常生活中使用的表格类似,它也是由行(Row) 和列(Column)组成的。列由同类的信息组成,每列又称为一个字段,每列的标题称为字段名。行包括了若干列信息项。一行数据称为一个或一条记录,它表达有一定意义的信息组合。一个数据库表由一条或多条记录组成,没有记录的表称为空表。每个表中通常都有一个主关键字,用于惟一地确定一条记录。
  2.索引(Index)
  索引是根据指定的数据库列表建立起来的顺序。它提供了快速访问数据的途径,并且可监督表的数据,使其索引所指向的列中的数据不重复。
  3.视图(View)
  视图看上去同表似乎一模一样,具有一组命名的字段和数据项,但它其实是一个虚拟的表,在数据库中并不实际存在。该视图是由查询数据库表产生的,它限制了用户能看到和修改的数据。由此可见,视图可以用来控制用户对数据的访问,并能简化数据的显示,即通过视图只显示那些需要的数据信息。
  4.图表(Diagram)
  图表其实就是数据库表之间的关系示意图。利用它可以编辑表与表之间的关系。
  5.缺省值(Default)
  缺省值是当在表中创建列或插入数据时,对没有指定其具体值的列或列数据项赋予事先设定好的值。
  6.规则(Rule)
  规则是对数据库表中数据信息的限制。它限定的是表的列。
  7.触发器(Trigger)
  触发器是一个用户定义的SQL事务命令的集合。当对一个表进行插入、更改、删除时,这组命令就会自动执行。
  8.存储过程(Stored Procedure)
  存储过程是为完成特定的功能而汇集在一起的一组SQL 程序语句,经编译后存储在数据库中的SQL 程序。
  9.用户(User)
  所谓用户就是有权限访问数据库的人。用户分为:管理员用户和普通用户。管理用户可对数据库进行修改删除,而普通用户只能进行阅读查看等操作。
  10. 总结
  针对以上的对象 ,我们主要抽取其每个对象的关键字 ,因为这些关键字都会在后面的sql语句用到 。
  数据库对象
  关键字
  数据库
  database
  表
  table
  索引
  index
  视图
  view
  图标
  diagram
  缺失值
  default
  规则
  rule
  触发器
  trigger
  存储过程
  procedure
  用户
  user DDL SQL语言
  而以上的DDL语言多是对这些对象的操作,而对象本身又具有增、删、改、查特性 。 所以 ,DDL语言多是对对象本身的增删改查操作 ,下面就具体的介绍每个关键字的SQL实现 。
  create
  创建数据库:  create database gg      # 创建数据库gg
  创建表:  create table gg(字段1 类型,字段2  类型2,...)   #创建表gg
  创建视图:  create view gg as select 列名 from 表名 where 条件    #创建视图gg
  创建索引:  create index  gg ON 表名 (列名 [长度])    # 创建索引gg
  创建触发器:  create trigger gg           #创建触发器gg  {befor | after }   {insert | update delete}   on 表名   for each row   <触发器SQL语句>    # 说明:  { before | after}:用于指定在insert、update或delete语句执行前触发还是在语句执行后触发。  on <表名>:用于指定响应该触发器的表名。  for each row:触发器的执行间隔,for each row 通知触发器每隔一行执行一次,而不是对整个表执行一次。  <触发器SQL语句>:触发器要执行的SQL语句,如果该触发器要执行多条SQL语句,要将多条语句放在begin…end块中。
  创建存储过程  CREATE PROCEDURE gg(参数列表)       #创建带参数的存储过程,名为gg  BEGIN      SQL语句代码块  END
  创建用户:  create user "username"@"host" identified by "password";    # 说明:  username : 你要创建的用户名  host:指定在用户在那台主机上可以登录 ,如果是本地用户可以用localhost,如果想让该用户可以从任意远程主机登录,可以使用通配符% .  password : 设置该用户的登录密码    # 举例 :  create user "ggg"@"%" identified by "123456"
  alert
  修改表名:  #格式:  alter table 旧表名 rename 新表名    # 举例 :将表abc 修改为bcd   alter table abc rename bcd ;
  以下主要是对表的列做出的修改:
  增加一列:  # 格式:  alter table 表名 add 列表 类型[长度]    #举例 :给表bcd添加一列sex  alter table bcd add sex enum("男","女")
  删除列  # 格式:  alter table 表名 drop 列表     #示例:删除表bcd中的sex列  alter table bcd drop sex
  重命名列  #格式:  alter table 表 change 原列名 新列名 类型    #示例:将表bcd中的sex列修改为class  alter table bcd change sex class varchar(2) ;
  修改列的类型名称  # 格式:  alter table 表名 change 列名 类型    #示例:修改class类型为int类型  alter table bcd change class class int(20) ;
  添加主键:  #格式:  alter table 表名 add primary key(列名)    #示例:给新表abc的id列设置为主键  alter table abc primary key(id)
  修改主键:  #格式:  ALTER TABLE 表名 DROP PRIMARY KEY ,ADD PRIMARY KEY (列名);    #示例 :给表abc修改主键  alter table abc drop primary key ,add primary key(name)
  删除主键:  #格式:  alter table 表名 drop primary key    #示例 :删除主键  alter table abc drop primary key
  添加索引  #格式  alter table 表名 add index 索引名字(列名)    #示例 :给列name添加索引tt  alter table abc add index tt(name)    #组合索引:  alter table 表名 add index 索引名字(列1,列2,列3)
  drop
  删除语句比较简单,具体如下  # 格式 :drop 对象 对象名称    # 示例  1. 删除数据库 : drop database 数据库名  2. 删除表 : drop table 表名  3. 删除用户 : drop user 用户名
  truncate 格式 : truncate table 表名  # 作用 : 清空表    #说明 : 和delete的主要区别是 ,truncate删除数据的速度更快 ,但是它不支持where操作。
  show #显示当前数据库中所有表的名称,以下两个语句都可以  show tables   show tables from database_name;     #显示mysql中所有数据库的名称。  show databases;     #显示表中列名称。  show columns from table_name from database_name;   show columns from database_name.table_name;      #显示一个用户的权限,显示结果类似于grant 命令。  show grants for user_name;     #显示表的索引。  show index from table_name;    #显示一些系统特定资源的信息,例如,正在运行的线程数量。  show status;     #显示系统变量的名称和值。  show variables;     #显示系统中正在运行的所有进程,也就是当前正在执行的查询。  show processlist;     #显示当前使用或者指定的database中的每个表的信息。信息包括表类型和表的最新更新时间。  show table status;     #显示服务器所支持的不同权限。  show privileges;     #显示create database 语句是否能够创建指定的数据库。  show create database database_name;     #显示create database 语句是否能够创建指定的数据库。  show create table table_name;    #显示安装以后可用的存储引擎和默认引擎。  show engies;     #显示innoDB存储引擎的状态。  show innodb status;     #显示BDB存储引擎的日志  show logs;     #显示最后一个执行的语句所产生的错误、警告和通知。  show warnings;     #只显示最后一个执行语句所产生的错误。  show errors;     #--显示安装后的可用存储引擎和默认引擎。  show [storage] engines;
  use USE <数据库名>    #作用 :指定数据库为当前的使用库 ,被选中后,会出现:Database changed提示DML SQL语言
  insert #作用 : 向表中插入一条数据 ;    #格式2:  insert into 表名 values(value1,value2,...valueN)  #说明 :向表中的每个字段插入值,值的顺序要和表中的字段要一致    #示例:  insert into abc values(1,"张三","男")    #格式1:  insert into 表名(field1, field2,...fieldN) values(value1, value2,...valueN);  #说明:以上可以插入表中的部分字段 ,而且字段的先后顺序可以打乱,但是值一定要和字段一一对应 。    #示例 :  insert into abc(id,name) values(2,"李四")
  delete # 作用 :删除表中的数据    # 格式:   delete from 表名 [where 条件]    #示例:  delete from abc  # 删除表abc中的全部数据  delete from abc where id = 2 # 删除id=2的数据
  update # 作用 : 更新表中的数据 ,可以是一条也可以是全部    #格式:  update 表名 set 字段1=新值1 [,字段2=新值2] [where 条件]    #示例  # update abc set name="张飞"      #将表abc中的name值全部修改为张飞  # update abc set name="张飞" where id =2 #将表abc中id=2的name值修改为张飞DQL SQL语言
  select # select 完整的SQL语句  SELECT [ALL | DISTINCT]  { * | 表.* | [表.字段1 [as 别名1][,表.字段2] [as 别名2][,...]]}  FROM table_name [as 表别名]  [left | out | inner join 表2] #联合查询  [WHERE ...]   #指定结果需要满足的条件  [GROUP BY ...]   #指定结果按照哪几个字段来分组  [HAVING ...]   #过滤分组的记录必须满足的次要条件  [ODER BY ...]   #指定查询记录按一个或者多个条件排序  [LIMIT [偏移量,返回结果记录数]; #指定查询的记录从哪条至哪条     #说明:虽然以上的SQL语句是完整的select语句 ,但是多数情况下,我们编写的都是它的子集,也就是用其中的一部分关键字 。
  说明:以下是对select语句的每一部分拆解说明 ,但需要明确的是DQL的关键字只有select ,其它的只是select的一部分 。
  基本查询 # 作用 : 查询表中的所有数据   # 格式1 :  select * from 表    # 作用:指定列进行查询  #格式2 :  select 列1,列2,...列n from 表  #示例  select id,name,sex from students   # 查询学生的编号,姓名,性别从学生表里
  AS作用和用法  #作用:给列或表指定别名,当查询的列名或表名不好记时,可以起一个更容易记忆或写起来更方便的名字作为别名 。  # 格式:  select 列1,列2 as 别名2 from 表名 as 表别名  #说明:当然指定别名时,也可以将as关键字去掉,效果一样 。
  DISTINCT关键字  # 作用 :去掉select查询出来的重复值 ,当所有返回值相同时,只返回一条记录 。    # 格式:  select distinct 字段1,字段2, ... from 表名    # 示例:  select distinct name, address from students
  where语句 # 作用 :用于检索表中符合条件的记录 ,主要是用来做数据筛查 ,可以在select,update,delete语句后使用    # 格式:  select * from 表 where 条件语句     #示例:  select * from students where age > 30 #查询年龄大于30的学生记录  update students set phone="13210001000" where name = "张三"  #将张三手机号修改为13210001000  delete from students where city ="北京" #删除北京学生的数据
  说明 : where后面的条件语句 ,其实并非这么简单 ,它是非常灵活且强大的 ,这里我们先拆解条件语句的一部分 。
  条件语句 由三部分组成,分别是 : 字段 操作符 值  ,这三部分其实都非常灵活 ,都可以有不同情况,下面主要解决操作符的情况,操作符主要包括如下几种情况: 比较运算符 逻辑操作符 模糊查询 范围查询 空
  比较运算符 #说明 :支持的操作符包括 : >,>=,<,<=,!=(不等于)  # 格式 :  select * from 表 where 字段 {> 或 >= 或 < 或 <= 或 !=} 值  #示例:  select * from students where city != "北京" # 查询不在北京的学生记录
  逻辑运算符
  逻辑运算符主要包括逻辑与,逻辑或,非 三种情况 。
  逻辑符
  语法
  说明
  and或 &&
  条件1 and 条件2 条件1 && 条件2
  两个条件必须都满足
  or或 ||
  条件1 or 条件2 条件1 || 条件2
  两个条件满足其一即可
  not或!
  not 条件 ! 条件
  如果条件满足,not后变为不满足,如果条件不满足,not后变为满足
  示例:  #需求1 :查询年龄>30 并且 在北京的学生记录(逻辑与)  select * from students where age > 30 and city = "北京"  #需求2 :查询年龄>30 或 在北京的学生记录 (逻辑或)  select * from students where age > 30 or city = "北京"  #需求3: 查询不在北京的学生记录  select * from students where not city= "北京"
  模糊查询
  是指使用关键字like进行的查询  #作用: 使用like进行模糊查询 。  #格式:  select * from 表 where 字段 like 值  #说明:使用like ,一般都会结合%或_进行使用  % :表示任意多个字符  _ :表示任意一个字符   #需求1:查询姓名中含有莉的学生记录  select * from students where name like "%莉%"  #需求2:查询姓名以张开头,且只有一个名的学生  select * from students where name like "张_"
  范围查询 # 说明 :这里有两个关键字 ,分别为   in : 表示在一个非连续的范围内   between ... and :表示在一个连续的范围内     # 格式 :  select * from 表 where 字段 in (值1,值2,值n)   select * from 表 where 字段 between 值1 and 值2  # 在值1 到 值2 之间 ,两者都是闭区间    #示例:  #需求1:查询北京,上海,深圳的学生记录  select * from students where city in ("北京","上海","深圳")  #需求2:查询年龄在20~30之间的,包括20和30  select * from students where age between 20 and 30
  空值查询 # 说明 :空值,代表无值 ,区别于值为0和空字符串,使用is null关键字  #格式 :  select * from students where 字段 is null  #需求:查询身份证号为空的学生  select * from students where card is null
  排序 # 作用 :按照某个字段进行排序 ,方便查找  # 说明:排序使用的关键字是order by ,后面跟排序的字段,排序有两种方式 :  ase 代表升序 ,为默认的排序方式   desc 代表降序  # 格式:  select * from students order by 字段1 asc|desc,字段2 asc|desc  # 需求 :按照学生的年龄大小从小到大进行排序  select * from students order by age asc ; # 其中asc可以忽略 。
  分组 # 作用 :按照字段分组,将字段值相同的数据放在一个组中,方便统计   # 说明 :分组关键字 : group by , 分组常和聚合函数一起使用  # 格式 :  select * from students group by 字段1,字段2  # 需求 :查询各年龄段的人数   select age,count(age) from students group by age
  当然 ,分组后也可以进行数据筛选 ,它使用到的关键字having ,和where有点相似,但又不完全一样 。  # 作用 : 分组后再进行数据筛选  # 说明 :关键字 :having 条件  # 格式:  select 字段1,字段2,聚合函数 from 表名 group by 字段1,字段2 having 字段1,聚合函数  # 需求 :查询男生总数  select sex,count(*) from students group by sex having sex = "男" ;   # 备注 : 以上需求使用where也能实现 ,
  where和having的区别: where是对from后面的表进行数据筛选,属于对原始数据的筛选 having是对group by的结果进行筛选
  分页 # 作用 : 有时候数据多 ,就可以使用分页显示  # 说明 : 使用关键字limit ,limit后面跟两个参数 ,分别是:, 以及查询数count .  index : 起始查询位置index ,第一条数据的index为0 ,默认值为0 ,若为0,可省略此参数 。  count :查询数  # 格式 :  select * from 表名 limit index count   # 需求1 :查询最后的5条数据  select * from students limit 5  #需求 : 从第3条数据开始查,显示10条数据  select * from students limit 2 ,10DCL SQL语言
  grant
  grant主要是授权用户权限 ,主要控制以下访问权限 : 可以限制用户访问那些数据库 ,那些表 可以限制用户对哪些表执行select,create ,delete,alter等操作 。 可以限制用户登录的IP和域名 可以限制用户的权限是否授权给别的用户  # 格式 :  grant 权限 on 对象 to 用户    #说明:  权限:其实就是对权限控制使用的关键字,如:select ,create 等 。    # 示例1:test用户,对school数据库下的所有数据表具有的增,删、改、查的数据的权限, 。  grant insert on school.* to test@"%" ;  grant select on school.* to test@"%" ;  grant update on school.* to test@"%" ;  grant delete on school.* to test@"%" ;  #或者,用一条MySQL命令替代 :  grant insert,select,update,delete on school.* test@"%" ;    #示例2:只能对shool下的students表进行查询权限  grant select on school.students to test@localhost    # 示例3 :对dev用户 ,设置创建,修改,删除对象权限  grant create,alter,drop on school.* to dev@"%" ;
  revoke
  revoke正好与grant相反 ,是回收权限(取消权限) 。  # 作用 : 取消权限  # 格式 :  revoke 权限 on 库.表 from 用户名@"ip"  # 示例1 :回收test用户的删除,修改权限   revoke delete,update on test.school.* from test@"%"  # 示例2 :取消test的取消权限  revoke insert on *.* from test@"localhost"
  commit
  commit和rollback主要用于事务处理 。使用事务有两种方式,分别为隐式事务和显式事务。隐式事务实际上就是自动提交,在MySQL中,自动提交(autocommit)在支持事务(transaction)的引擎中,若autocommit=true,则不需要commit的情况下直接提交语句形成永久性修改,Mysql默认打开autocommit,也可以通过配置设置。  # 查询是否设置了自动提交 ,  mysql> show variables like "autocommit";  +---------------+-------+  | Variable_name | Value |  +---------------+-------+  | autocommit | ON |  +---------------+-------+  1 row in set (0.04 sec)    # 可以将自动提交关闭   mysql > set autocommit = 0  # 0 代表关闭 ,1 代表已开启 。  mysql> start transaction;   #手动开启事务  mysql> insert into students(name) values("allen");  mysql> commit; #commit之后即可改变数据
  rollback mysql> start transaction;   #开启事务  mysql> insert into students(name) values("jony");  mysql> rollback;  mysql> select * from students;  # 实际的jony数据并不会插入到数据库

vivo新款旗舰机相关信息曝光,或首发两项新技术随着如今智能手机产品在影像技术方面的不断提升,也使得其在这一功能上有了越来越好的表现,甚至于使得传统的卡片相机已经在市场中消失。而作为在这一方面有着诸多技术储备的厂商,vivo方面小米618发力,小米11直降500元,小米10S高配版2999元又到618,在诸多降价中,怎么能少得了小米呢,要知道小米的性价比一直是十分犀利的。果然,我们看到小米确实有所行动,而且幅度不小,其中小米11直降500元,小米10S高配版也从349中企打破日企垄断,芯片材料突破封锁,成功拿下首个订单众所周知,光刻机在芯片的生产过程中起着举足轻重的作用。只要拥有一台EUV光刻机,芯片制造企业就可以研制出更加先进的芯片工艺。除了光刻机之外,光刻胶等半导体材料对于芯片的光刻环节发挥央行数字货币回到未来摘要央行数字货币发展的全球概况及启示关键要点各国金融当局正在研究中央银行数字货币(CBDC),这可以使支付和结算系统更高效。一旦发行,CBDC和现金及储备金将成为第三类中央银行的负2021。05。26数字货币快讯美联储理事夸尔斯央行数字货币是否会在美国推行尚未有定论。证券时报比特币挖矿与碳达峰目标背道而驰。区块链初创企业奇亚Chia估值5亿美元,计划进行IPO。古根海姆CIO一种新加密货币比特币经常暴跌,可是暴跌不下去,4大原因支持虚拟币价格有没有发现,咱们隔3差5的,就会在新闻和媒体网络中看到比特币又崩盘了。一个月就能崩盘好几次,有时候崩30,有时候崩20。特别是2021年的前4个月比特币为代表的虚拟货币,价格越崩越21深度丨全球央行围堵比特币与法定货币终将开战?作者胡天姣,辛继召比特币市场悬念注定是一波接一波?去年持续发烧的比特币,自今年5月以来,也全无消夏之意,关注度持续引领虚拟币市场风骚。尤其是每枚价格在陆续刷新至62000美元高位,虚拟货币乱象调查挖矿耗能巨大价格暴涨暴跌新华社北京5月25日电题挖矿耗能巨大价格暴涨暴跌虚拟货币乱象调查新华社记者吴雨陈健毛振华一夜暴跌30一个月价格几近腰斩爆仓者两手空空近期,比特币等虚拟货币价格暴涨暴跌,激起围观者惊中国广电将推5G业务,能否搅动5G发展新格局?(记者叶菁)近日,国家知识产权局公示信息显示,中国广电正在申请共12项商标信息,涉及一项图形及一项文字LOGO图形。另据中国广电党委副书记总经理梁晓涛最新披露,中国广电将积极开展广性价比破新高!骁龙8705000mAh,价格跌至1799元在5G网络建设日趋完善的今天,一部性能给力,续航同样也要跟得上的5G机型无疑才是当下乃至于未来的新锐消费者所真正需要的。而且到了2021年的市场中之后,出现了非常多的新品,同时也有程序员是进信息技术公司好,还是进互联网公司好hello,大家好,我是一名java程序员,从业有五年的时间,今天留给大家讲一下互联网公司与信息技术公司有哪些区别,帮助入行者做一些自己的职业规划。互联网公司像百度,阿里巴巴,携程
卢伟冰坚持性价比,红米K40再次跳水,12256G版本售价亲民我们常说买手机的话,追求性价比首选就是红米,这话确实是没有错,虽然市面上出现了很多竞争对手,但玩这招还是红米最在行,在友商纷纷冲击高端市场的时候,它依旧是没有忘记初心,旗下产品基本预算不超过一万,求推荐75寸电视?预算1w左右的75寸电视,妥妥的中高端选择了。国产品牌可以搞定量子点。而索尼的话,只能买到85J。我个人认为不要迷信索尼品牌。选择国产中高端妥妥的。简单拉一下京东销售数据,不难发现剖析白岩松有关联想五个馒头故事的前前后后谣零零计划最近一段时间有关联想事件的各种论调在各大网络上被大书特书,本来与央视资深主持人白岩松没有半毛钱的关系,可愤怒的网民们在百般敲打联想的杨柳后却没有任何动静,任凭大家兴风作浪苹果为什么值三万亿,不就是卖手机和笔记本吗?北京时间2022年1月4日凌晨2点45分左右,美国科技巨头苹果的股价达到了182。88美元,市值第一次站上了三万亿美元的台阶,这不仅是全球首个3万亿市值,也相当于全球第五大经济体的被电信诈骗后,现在越想越想不开,欠债太多。我现在能怎么办?被骗后再想不开也与事无补,需要做到的就是振奋精神,从头开始。找一份稳当的工作,挣得一份稳当的收入,继续生活。慢慢的生活就会有好转的。怎么办?当然是挣钱还钱和养家糊口,然后边挣钱,边小米12会不会成为2022年的旗舰守门员?照目前友商拉胯的表现来看,小米12不是也跌是了,首先其他手机不管是摩托,realme,还是最近的IQOO9本质上都是被骁龙8给裹挟了。整部机子就围绕骁龙8做文章,没点自己的东西。小营收6340亿,比去年暴跌30,为什么还说华为赢了?这么说吧,世界上受美国打压的公司,有两条路,一个是解体,另一个就是出卖股权。但是大多数都选择了后者,韩国的三星,法国的阿尔斯通,明面上是挂着住在国招牌,实际上最大受益者是美国股东。JZ表示数值的字符串表示数值的字符串题目描述请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串100,5e2,123,3。1416和1E16都表示数值。但是12e,1a3。14,当我vivo手机不知道密码时,我只需要做一件事情就省去花钱解锁昨天我想试试如何定位别的手机,进入了隐私界面,然后只听得一阵铃音巨响,我的手机出现了一个界面,上面有账号是我的手机号码,密码需要手动输入。我很自然的把自己的锁屏密码输入进去,但输入美媒英特尔删除公开信中涉疆内容华尔街日报10日报道称,该报当天查询英特尔公司官网发现,该司已删除去年年底发布的所谓禁用新疆劳工采购产品或服务的公开信中的相关涉疆内容。英特尔此前发布的这封公开信曾在中国舆论场引发360安全卫士制定弹窗广告自律准则,禁止对诈骗低俗内容进行投放蓝鲸TMT频道1月11日讯,今日,记者从360处获悉,360公司将进一步提升360安全卫士等互联网产品用户体验,持续完善弹窗广告生态治理。对此,360安全卫士等产品对内制定弹窗广告