[数据库原理] SQL概述

SQL

  1. 什么是SQL:结构化查询语言(Structured Query Language)。
  2. SQL的作用:客户端使用SQL来操作服务器,如启动mysql.exe,连接服务器后,就可以使用sql来操作服务器了。
  3. SQL标准(例如SQL99,即1999年制定的标准):由国际标准化组织(ISO)制定的,对DBMS的统一操作方式(例如相同的语句可以操作:mysql、oracle等)。
  4. SQL方言:某种DBMS不只会支持SQL标准,而且还会有一些自己独有的语法,这就称之为方言!例如limit语句只在MySQL中可以使用

SQL语法

  1. SQL语句可以在单行或多行书写,以分号结尾
  2. 可使用空格和缩进来增强语句的可读性
  3. MySQL不区别大小写,建议使用大写


SQL语句分类

  1. DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等;创建、删除、修改:库、表结构!!!
  2. DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(数据); 增、删、改:表记录
  3. DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别;
  4. DQL(Data Query Language):数据查询语言,用来查询记录(数据)。

总结

  • ddl:数据库或表的结构操作
  • dml:对表的记录进行更新(增、删、改)
  • dql:对表的记录的查询
  • dcl:对用户的创建,及授权!

  
DDL

数据库

  • 查看所有数据库:SHOW DATABASES
  • 切换(选择要操作的)数据库:USE 数据库名
  • 创建数据库:CREATE DATABASE [IF NOT EXISTS] mydb1 [CHARSET=utf8]
  • 删除数据库:DROP DATABASE [IF EXISTS] mydb1
  • 修改数据库编码:ALTER DATABASE mydb1 CHARACTER SET utf8

数据类型

  • int:整型
  • double:浮点型,例如double(5,2)表示最多5位,其中必须有2位小数,即最大值为999.99;
  • decimal:浮点型,在表单钱方面使用该类型,因为不会出现精度缺失问题;
  • char:固定长度字符串类型; char(255),数据的长度不足指定长度,补足到指定长度!
  • varchar:可变长度字符串类型; varchar(65535), zhangSan
  • text(clob):字符串类型;
  • blob:字节类型;
  • date:日期类型,格式为:yyyy-MM-dd;
  • time:时间类型,格式为:hh:mm:ss
  • datetime:日期时间类型,格式为:timestamp
  • timestamp:时间戳类型

  • 查看当前数据库中所有表名称:SHOW TABLES;
  • 查看表结构:DESC 表名;
  • 删除表:DROP TABLE 表名;
  • 创建表:CREATE TABLE [IF NOT EXISTS] 表名(
        列名 列类型,
        列名 列类型,
        ...
        列名 列类型
      );
  • 修改表:前缀:ALTER TABLE 表名
  • 修改之添加列:ALTER TABLE 表名 ADD (
          列名 列类型,
          列名 列类型,
          ...
        );
  • 修改之修改列类型:ALTER TABLE 表名 MODIFY 列名 列类型;
  • 修改之修改列名:ALTER TABLE 表名 CHANGE 原列名 新列名 列类型;
  • 修改之删除列:ALTER TABLE 表名 DROP 列名;
  • 修改表名称:ALTER TABLE 原表名 RENAME TO 新表名;

DML

插入

  • INTERT INTO 表名(列名1,列名2, ...) VALUES(列值1, 列值2, ...);
  • INTERT INTO 表名 VALUES(列值1, 列值2,...);

修改

  • UPDATE 表名 SET 列名1=列值1, 列名2=列值2, ... [WHERE 条件];
  • 几个常见的条件:
    WHERE age >= 18 AND age <= 80
    WHERE age BETWEEN 18 AND 80
    
    WHERE name='zhangSan' OR name='liSi'
    WHERE name IN ('zhangSan', 'liSi')
    WHERE age IS NULL, 不能使用等号
    WHERE age IS NOT NULL

     

删除

  • DELETE FROM 表名 [WHERE 条件];
  • TRUNCATE TABLE 表名:TRUNCATE是DDL语句,它是先删除drop该表,再create该表。而且无法回滚!!

DCL

创建用户

  • CREATE USER 用户名@IP地址 IDENTIFIED BY '密码'; --用户只能在指定的IP地址上登录
  • CREATE USER 用户名@'%' IDENTIFIED BY '密码';--用户可以在任意IP地址上登录

用户授权

  • GRANT 权限1, … , 权限n ON 数据库.* TO 用户名@IP地址;
  • 例如;GRANT CREATE,ALTER,DROP,INSERT,UPDATE,DELETE,SELECT ON mydb1.* TO user1@localhost;
  • GRANT ALL ON 数据库.* TO 用户名@IP地址;

撤销授权

  • REVOKE 权限1, … , 权限n ON 数据库.* FROM 用户名@IP地址;
  • 例如;REVOKE CREATE,ALTER,DROP ON mydb1.* FROM user1@localhost;

查看权限

  • SHOW GRANTS FOR 用户名@IP地址

删除用户

  •  DROP USER 用户名@IP地址

你可能感兴趣的:(数据库原理)