Linux SQL语言——以MySQL数据库操作为例

本文详细介绍了SQL语言中的数据查询语言(DQL)、数据操作语言(DML)、数据控制语言(DCL)以及数据定义语言(DDL),涵盖了创建、修改、删除数据库和表、字段操作以及权限管理等内容。
摘要由CSDN通过智能技术生成

注:图片来自网络 

一、结构化语言SQL

        对数据库进行查询和修改的语言叫做SQL语言。

二、提示

  1. SQL 对大小写不敏感:SELECT 与 select 是相同的。
  2. MySQL数据库系统要求在每条 SQL 语句的末端使用分号。分号是在数据库系统中分隔每条 SQL 语句的标准方法,这样就可以在对服务器的相同请求中执行一条以上的 SQL 语句。

  3. 当你不需要一条语句输出的结果以\c结束,不可以使用ctrl+c,否则登出mysql。

  4. 我们可以在命令行执行sql语句,要通过mysql -e参数{mysql -e "show databases \G"} 显示到shell上。

  5. 如果需要获取SQL语句的帮助可以用help命令,如:help create,如果需要进一步获取帮助,可以继续使用help命令,如:help create database。

  6. 当表特别长的时候“;”前加\G ,则把表向左旋转90度,可以更清楚看到。

  7. 数据库命名规则:
  •     区分大小写
  •     唯一性
  •     不能使用关键字如 create SELECT
  •     不能单独使用数字

三、SQL语言类型

数据查询语言(DQL:Data Query Language): 其语句,也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。保留字SELECT是DQL(也是所有SQL)用得最多的动词。

数据操作语言(DML:Data Manipulation Language): 其语句包括动词INSERT,UPDATE和DELETE。它们分别用于添加,修改和删除表中的行。也称为动作查询语言。

数据控制语言(DCL):(Data Control Language): 它的语句通过GRANT或REVOKE获得许可,确定单个用户和用户组对数据库对象的访问。某些RDBMS可用GRANT或REVOKE控制对表单个列的访问。

数据定义语言(DDL):(Data Define Language): 其语句包括动词CREATE和DROP。在数据库中创建新表或删除表(CREAT TABLE 或 DROP TABLE);为表加入索引等。DDL包括许多与数据库目录中获得数据有关的保留字。它也是动作查询的一部分。

名词解释
数据库服务器运行着数据库应用的设备
数据库表的管理单元
记录、字段
记录字段的管理单元
字段字段名,字段类型、长度,字段约束组成
类型字符,数字,日期
约束NULL NOTNULL等

四、DDL 

date_name:数据库名

tb_name:表名

new_tb_name:新表名

1.create-创建

1)创建数据库

> create datebase date_name;

2)创建表

语法:
create table 表名(
        字段名1  类型[(宽度) 约束条件],
        字段名2  类型[(宽度) 约束条件],
        字段名3  类型[(宽度) 约束条件]
)[存储引擎 字符集];


==在同一张表中,字段名是不能相同
==宽度和约束条件可选
==字段名和类型是必须的

NULL说明:
        1、等价于没有任何值、是未知数。
        2、NULL与0、空字符串、空格都不同,NULL没有分配存储空间。
        3、对空值做加、减、乘、除等运算操作,结果仍为空。
        4、比较时使用关键字用“is null”和“is not null”。
        5、排序时比其他数据都小,所以NULL值总是排在最前。  

数据库字段类型和约束条件Linux 关系型数据库字段类型(数值、字符串、时间)和约束条件-CSDN博客

> create table tb_name(

->id int identity(1,1) not null,

->name varchar(20) null,

->course varchar(20) null,

->grade numeric null);

2.alter-修改

1)修改表名

> alter table tb_name rename new_tb_name;

2)给表添加新字段 

> alter table tb_name add math int(10);
> alter table tb_name add (chinese int(10),english int(10));

 3)修改字段名称、数据类型、修饰符(约束)

# 修改字段名
> alter table tb_name change chinese china int(6);
# 修改字段名并改变字段位置
> alter table tb_name change english en int(6) after id;
> alter table tb_name modify en int(6) after id;
# 修改字段约束
> alter table tb_name modify chinese int(5) not null;
# 修改字段位置
> alter table tb_name modify en int(6) first;

4)删除字段 

> alter table tb_name drop en;

3.drop-删除

1) 删除数据库

> drop database db_name;

2)删除表 

> drop table tb_name;

4.truncate-删除 

1)删除表

> truncate tb_name;

5.declare、set-定义变量 

1)declare在BEGIN和END之间定义变量

> begin
> declare var1 int default 0;
> end

 2)set定义变量

> set @ip=86;

详细学习请参考:mysql变量定义(declare,set,@)使用实例讲解 - 张测试 - 博客园 (cnblogs.com) 

五、DQL

1.select-查看

sql语句书写顺序:

sql语句执行顺序: 

1)查看当前数据库

> select database();

2)查询表中指定字段的值 

> select id,name,sex,age from tb_name;

3)查询表中所有字段的值

> select * from tb_name;

 4)查询并去掉重复行

> select distinct id from tb_name;

5)查询前n行

> select name from tb_name limit n;

6)查询从第n行开始的后m行即n-(n+m)行 

> select name from tb_name limit n,m;

7)没有使用use进入db_name库时查询db_name库的tb_name表 

> select name from db_name.tb_name;
> select tb_name.id from db_name.tb_name;

8)查看生效的授权信息 

# 查看所有库和表的权限
> select * from mysql.user where user='root'\G;
# 查看具体库的授权信息
> select * from mysql.db where user='user_name'\G;

select可配合排序检索语句、where子句、where子句、正则表达式的使用regexp、语句的拼接和函数使用。 

详情请参考:Linux sql语句_linux执行sql语句_桐、winner的博客-CSDN博客

六、DML 

1.insert-表中插入数据

1)根据字段插入数据

语法:INSERT INTO 表名(字段1,字段2,字段3…字段n) VALUES (值1,值2,值3…值n);

> insert into tb_name(id,name,math,china) values(1,"wing",80,90);
> insert into tb_name set id=6,math=65;

2)根据字段插入多条数据 

INSERT INTO 表名 VALUES(值1,值2,值3…值n),(值1,值2,值3…值n), (值1,值2,值3…值n);

> insert into tb_name(id,name,math,china) values(2,"king",70,100),(3,"tom",50,70);

3) 直接插入数据

语法:INSERT INTO 表名 VALUES (值1,值2,值3…值n);

> insert into tb_name values(4,"xiaosan",50,100);

4)复制记录

语法:INSERT INTO 表1(字段1,字段2,字段3…字段n)  SELECT (字段1,字段2,字段3…字段n) FROM 表2 WHERE …;

> insert into tb_name1 select * from tb_name2 where id=9;
> insert into tb_name1 select * from tb_name2 where age > 17;

 2.update-表中更新数据

1)更新记录

语法:UPDATE 表名 SET 字段1=值1,字段2=值2  WHERE CONDITION;

> update tb_name set name="lili" where id=5;

3.delete-删除表中数据

1)删除表中某条记录

语法:DELETE FROM 表名 WHERE CONITION;

> delete from tb_name where id=6;

2)删除表中全部记录

> delete from tb_name; 

七、DCL 

user_name:用户名

1.grant-授权

1)授权并设置密码

语法:grant  权限 on 数据库.表  to  '用户'@'客户端来源IP地址' identified by '密码';

> grant all privileges on db_name.* to user_name@'%';
# *代表所有表;%代表所有网段
> flush privileges;
# 关于权限方面的修改,注意刷新权限,否则有可能不生效

2.revoke-收回权限 

1)取消权限

> revoke all privileges on db_name.* from user_name@'%';
> flush previleges;

八、其他

1.use-切换数据库

1)使用数据库

> use db_name;

2.show-显示查询

1)显示数据库库名

> show db_name;

2) 显示表名

> show tb_name;

3)显示创建过程 

> show create table tb_name;
> show create table db_name;

4) 显示表的详细信息

> show table status like 'tb_name' \G;

5) 查看授权语句

语法:show grants for '用户'@'客户端来源IP地址';  

> show grants for user_name@'%';

3.desc-显示表结构

1)显示表结构

> desc tb_name;

九、拓展

数据库常见的操作对象 :

以上基本是单表查询的SQL语句用法,如果有读者需要多表查询的SQL语句用法讲解,请在评论区留言,如果需求的人数多,博主会尽快出一期多表查询的文章。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值