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

[经验分享] sql语言类别

[复制链接]

尚未签到

发表于 2018-10-15 13:10:19 | 显示全部楼层 |阅读模式
  SQL语言分类:
  数据定义语言(DDL Data Definition):create创建、alter更改、truncate截断、drop删除
  数据操纵语言(DML Data Manipulation Language):insert插入、select选择、delete删除、update更新
  事务控制语言(TCL Transaction Control Language):commit提交、savepoint保存点、rollback回滚
  数据控制语言(DCL Data Control Language):grant授予、revoke回收
  数据定义语言DDL:
  1.create table命令:
  create table [schema.]table_name
  (
  column_name datatype,
  column_name datetype,
  ....
  )
  schema表示对象的所有者,即模式的名称。如果用户在自己的模式中创建表,则可以不指定所有者名称。
  table表示表的名称。
  column表示列的名称。
  datatype表示该列的数据类型及其宽度。
  表名命名规则:
  1)表名首字符应该为字母。
  2)不能使用Oracle保留字来为表命名。
  3)表各的最大长度为30个字符。
  4)同一用户模式下的不同表不能具有相同的名称。
  5)可以使用下划线、数字、字母,但不能使用空格和单引号。
  Oracel和SQL Server数据库对象表之间的差异:
  列数:Oracle,254; SQL Server,1024
  行大小:Oracle没有限制;SQL Server,8060字节,加16字节指向每个text或image列。
  最大行数:Oracle没有限制;SQL Server没有限制
  表命名规则:Oracle,[schema.]table_name; SQL Server,[[[server.]database.]owner.]table_name
  2.truncate table命令:
  可以只删除表中的记录而不删除表结构,删除表中的所有行而不记录日志。
  truncate table ;
  数据操纵语言DML:(insert,select,update,delete)
  1.选择无重复的行,在select命令中包含distinct子句。
  select distinct stuName,stuAge from stuInfo;
  2.使用列别名,列别名不会影响列的实际名称。列别名位于列表达式后面。
  select stuName as “姓 名”,stuAge as 年龄,stuNo 编号 from stuInfo;
  如果列别名中指定有特殊字符(如空格)的列标题使用双引号括起来。
  3.利用现有表创建新表。
  语法: create table
  as
  select {* | column(s)} from  [where ];
  复制表结构和记录:
  create table newStuInfo
  as
  select * from stuInfo;
  复制表指定列和记录:
  create table newStuInfo
  as
  select stuName,stuAge,stuNo from stuInfo;
  只复制表结构:
  create table newStuInfo
  as
  select * from stuInfo where 1=2;
  4.查看表中行数:
  select count(1) from stuInfo; --1比*号效率较高
  5.取出stuName,stuAge列不存在重复的数据记录:
  select stuName,stuAge from stuInfo
  group by stuName,stuAge
  having(count(stuName||stuAge));//“||”在这里是连接操作符,类似于“+”,意思为将两部分内容连接在
  一起,因为count()里面只能有一个列,所以连接起来。
  6.删除stuName、stuAge列重复的行(相同数据只保留一行)
  delete from stuInfo where rowid not in(
  select max(rowid) from stuInfo group by stuName,stuAge
  having (count(stuName||stuAGe)>1)
  union
  select max(rowid) from stuInfo group by stuName,stuAge
  having (count(stuName||stuAge)=1)
  );
  7.根据当前用户所有数据量>100万的表的信息
  select tabke_name from user_all_tables a where a.num_rows>1000000;
  --user_all_tables为系统提供的数据视图,使用者可以通过查询该视图获得当前用户表中描述。
  事务控制语言TCL:
  1)commit:提交事务,提事务中对数据库的修改进行永久保存。
  2)rollback:回滚事务,即取消对数据库所做的作何修改。
  3)savepoint :在事务中创建存储点。
  4)rollback to savepoint :将事务回滚到存储点。即savepoint 创建的存储点
  开启事务:在Oracle中,上一次事务结束以后,数据第一次被修改时自动开启。
  结束事务: ①数据被提交:发出commit命令;执行DDL或DCL语句后,当前事务自动commit;与Oracle分离。
  ②数据被撤销:发出rollback命令;服务器进程异常结束;DBA停止会话。
  例: insert into dept values (10,’ACCOUNTING’,’NEW YORK’);
  commit;
  savepoint a;//a只是一个名称
  insert into dept values (20,’SALES’,’NEW YORK’);
  rollback to savepoint a;
  rollback;--结果只有第一条记录插入成功
  数据控制语言DCL:
  数据控制语言为用户提供权限控制命令。数据库对象(如表)的所有者对这些对象拥有控制权限。所有者可以根据自己
  的意愿决定其他用户如何访问对象,授予其他用户权限(insert,select,update,delete,....)


运维网声明 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-621960-1-1.html 上篇帖子: SQL注入原理分析 下篇帖子: SQL表值函数和标量值函数的区别
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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