SQL 学习总结

本文详细介绍了SQL语言的三种主要分类:数据定义语言(DDL)、数据控制语言(DCL)和数据操纵语言(DML)。通过具体的SQL命令示例,解释了如何创建、修改和删除表(DDL),如何授予和收回权限(DCL),以及如何进行数据查询、插入、更新和删除(DML)。包括了使用MySQL实用命令进行数据库操作的指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、SQL语言的分类:SQL语言大体可分为DDL、DCL和DML三类。其中,DDL又包含CREATE,ALTER和DROP;

DCL包含GRANT和REVOKE,而DML中最常见的有SELECT,INSERT,UPDATE,和DELETE。

 

1、  DDL(数据定义语言)

 

 

◎ CREATE语句

 

SQL> CREATE TABLE example_1

  2  (col_1 number NOT NULL,col_2 varchar2(20));

 

Table created.

 

◎     ALTER 语句

 

SQL> ALTER TABLE example_1 ADD col_3 char(10);

 

Table altered.

 

◎     DROP 语句

 

SQL> ALTER TABLE example_1 DROP COLUMN col_3;

 

Table altered.

 

2、  DCL(数据控制语言)

◎     GRANT(授予权限)

 

SQL> GRANT SELECT ON student TO scott;

--使scott用户有查询当前用户模式下的student表的权限。

Grant succeeded.

--测试授权是否成功

SQL> conn scott;

Enter password:

Connected.

--查询system用户下student表

SQL> SELECT * FROM system.student;

 

     STUNO STUNAME              ST ROLLTIME

---------- -------------------- -- --------------

       112 duyubo               m  08-8月 -09

       110 CJ                   M  12-8月 -09

◎     REVOKE(收回权限)

 

SQL> conn system/system;

Connected.

--收回权限

SQL> REVOKE SELECT ON student FROM scott;

 

Revoke succeeded.

 

测试权限是否成功收回

SQL> conn scott/scott

Connected.

SQL> SELECT * FROM system.student;

SELECT * FROM system.student

                    *

--错误:表不存在(因为没有权限)

ERROR at line 1:

ORA-00942: table or view does not exist

 

3、  DML(数据操纵语言)

◎     SELECT语句(使用最为广泛的语句)

 

SQL> SELECT * FROM student;

 

     STUNO STUNAME              ST ROLLTIME

---------- -------------------- -- --------------

       112 duyubo               m  08-8月 -09

       110 CJ                   M  12-8月 -09

◎ INSERT(插入数据)

--如果要对表中的每一列数据都进行插入操作,则表后的列项可以省略,如

SQL> INSERT INTO student VALUES(100,'JC','M',SYSDATE);

 

1 row created.

--但当仅对表中部分列进行插入操作时,必须指明字段名称,而且字段名称应该与values后--的值一一对应。

SQL> INSERT INTO student(stuno,stuname,stusex)

  2  VALUES(211,'WNT','M');

 

1 row created.

 

◎     UPDAET(更新)

SQL> UPDATE student SET stuname='yinxiong'

  2  WHERE stuno=100;

 

1 row updated.

 

◎     DELETE (删除内容)

--注意,delete是删除内容的,删除过后表结构不变。二drop是删除表或字段,删除表,则对应的表也就不存在了;同理,删除字段,则对应的字段也就不存在了。

 

SQL> DELETE FROM student WHERE stuname='yinxiong';

--仅仅删除stuname=‘yinxiong’对应列的内容。

1 row deleted.



MySQL实用命令


一) 连接MYSQL:

   格式: mysql -h主机地址 -u用户名 -p用户密码 


1、例1:连接到本机上的MYSQL

   首先在打开DOS窗口,然后进入mysql安装目录下的bin目录下,例如: D:/mysql/bin,再键入命令mysql -uroot -p,回车后提示你输密码,如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是:mysql> 

2、例2:连接到远程主机上的MYSQL

   假设远程主机的IP为:10.0.0.1,用户名为root,密码为123。则键入以下命令:
   mysql -h10.0.0.1 -uroot -p123 
  (注:u与root可以不用加空格,其它也一样) 

3、退出MYSQL命令

   exit (回车) 

 

(二) 修改密码:

   格式:mysqladmin -u用户名 -p旧密码 password 新密码 

1、例1:给root加个密码123。首先在DOS下进入目录C:/mysql/bin,然后键入以下命令:

   mysqladmin -uroot -password 123 
   注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。 

2、例2:再将root的密码改为456

   mysqladmin -uroot -pab12 password 456 

(三) 增加新用户:(注意:和上面不同,下面的因为是MYSQL环境中的命令,所以后面都带一个分号作为命令结束符)

   格式:grant select on 数据库.* to 用户名@登录主机 identified by "密码" 
   例1、增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入MYSQL,然后键入以下命令: 
   grant select,insert,update,delete on *.* to test1@"%" Identified by "abc";

   但例1增加的用户是十分危险的,你想如某个人知道test1的密码,那么他就可以在internet上的任何一台电脑上登录你的mysql数据库并对你的数据可以为所欲为了,解决办法见例2。 
   例2、增加一个用户test2密码为abc,让他只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的操作(localhost指本地主机,即MYSQL数据库所在的那台主机),这样用户即使用知道test2的密码,他也无法从internet上直接访问数据库,只能通过MYSQL主机上的web页来访问了。 
   grant select,insert,update,delete on mydb.* to test2@localhost identified by "abc"; 
   如果你不想test2有密码,可以再打一个命令将密码消掉。 
   grant select,insert,update,delete on mydb.* to test2@localhost identified by ""; 

(四) 显示命令

1、显示数据库列表:

   show databases; 
   刚开始时才两个数据库:mysql和test。mysql库很重要它里面有MYSQL的系统信息,我们改密码和新增用户,实际上就是用这个库进行操作。 

2、显示库中的数据表:

   use mysql; //打开库
   show tables; 

3、显示数据表的结构:

   describe 表名; 

4、建库:

   create database 库名; 

5、建表:

   use 库名; 
   create table 表名 (字段设定列表); 

6、删库和删表:

   drop database 库名; 
   drop table 表名; 

7、将表中记录清空:

   delete from 表名; 

8、显示表中的记录:

   select * from 表名;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值