当前位置:Gxlcms > 数据库问题 > mysql基础

mysql基础

时间:2021-07-01 10:21:17 帮助过:19人阅读

五个分类
SQL命令的五种分类

  1. DDL
    Data Definition Language,数据定义语言。
    DDL主要用来对Oracle中的对象结构进行操作,不能操作表中的数据。
    在表的行和列这两个维度中,DDL只能针对列进行操作。
  • create创建
  • drop 删除
  • alter 修改
  • truncate 截断
  1. DCL
    Data Control Language,数据控制语言。
    主要控制的是用户的权限。
  • grant向用户赋予权限/角色
    语法: grant 角色/权限to用户名;
  • revoke 撤销用户的权限/角色
    语法: revoke 角色/权限from用户名;
  1. DML
    Data Manipulation Language,数据操纵语言。
    DML主要用来真正操作表中具体的数据内容,在表的行和列这两个维度中,DML可以影响行的数量。
  • insert新增
  • delete 删除
  • update修改

注意事项:

a) :DML中只包含增、删、改三种操作,没有查询。
在SQL分类中,增删改查四种操作是分开来的。增删改属于DML(写入操作),查属于DQL(读取操作)。
这样分类的原因是,增加、删除和修改操作会引起表格中数据的变化,而查询操作不会引起表中数据的变化。对数据库进行的操作分为读和写两种,读指的是查询操作,写指的是增删改操作。如果数据库需要被大量地访问,就应该进行架构的优化:主从复制,读写分离。把用于读的数据和用于写的数据,分成两个或两个以上的库来进行保存。因为一个库如果既读又写的话,会给数据库带来很大的压力。

b):DML语言具有事务性
事务性可以这样理解:除了DML之外的其他语句,一旦执行就会立即生效,而且不能撤销操作。而DML中的增删改操作,执行完毕之后其实并没有立即生效。如果想要使其生效,还需要执行一次提交事务的命令。 在提交事务之前,如果发现数据操作有误,还可以通过回滚指令退回到上一次提交之后的状态,使数据恢复。

  1. DQL
    Data Query Language,数据查询语言。
    指select查询语句。

  2. DTL/TCL
    Data Transaction Language,数据事务语言。
    Transaction Control Language,事务控制语言。
    所表达的意思是相同的。

  • commit提交事务。执行完毕,确认生效。一旦事务提交,则不可撤销。
  • rollback 回滚事务。发现有误,撤回到上一个节点。
  • savepoint

数据库中
三大数据类型:

  1. 数值
  2. 字符
  3. 日期

基础指令

  1. 查询所有数据库
    show databases;

  2. 使用数据库
    use <数据库名>

  3. 查询某个数据库中所有表
    show tables;

  4. 查询表结构
    desc <表名>

  5. 算数运算

mysql> select 1+1;
+-----+
| 1+1 |
+-----+
|   2 |
+-----+
1 row in set (0.16 sec)

在查询的过程中,我们可以把查询到的字段值进行一些算数运算, 并输出结果。
注意,不是所有的字段类型都支持算数运算,只有数值类型和日期类型字段才可以。
1):数值类型字段值的运算
如果字段类型是数值类型,可以进行加减乘除四种运算。
select title,price*10 from bs_book;
2):日期类型字段值的运算
如果字段是日期类型,只能进行加法和减法运算,不能进行乘法和除法。
日期类型的字段值允许和一个数值类型进行加减法运算,减法代表向该日期的过去倒退,加法代表向该日期的未来
推移。注意:参与加减法运算的数值单位是"天”。
select now();查询当前的日期与时间 年月日 时分秒
select current_date();查询当前的日期 年月日
select current_time();查询当前的时间 时分秒

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2020-08-28 23:09:33 |
+---------------------+
1 row in set (0.00 sec)

mysql> select subdate(now(),interval 3 day);
+-------------------------------+
| subdate(now(),interval 3 day) |
+-------------------------------+
| 2020-08-25 23:09:35           |
+-------------------------------+
1 row in set (0.00 sec)

小知识!

  1. 为什么尽量少的使用*通配符来查询所有字段
    select * from bs_book;
    因为这样子会多一步查询,先查询出表有哪些字段,再根据所有的字段名,去取所有的字段值。
  2. distinct 查询所有不重复的字段
    select distinct title from bs_book;
    后面也可以跟其他字段名,意思为只有所有的都重复才不显示

mysql基础

标签:语言   小知识   control   参与   set   复制   tables   立即生效   sub   

人气教程排行