分享

MySQL基础笔记——SQL语法

 东西二王 2020-02-07

SQL

一、SQL

Structured Query Language:结构化查询语言,缩写为SQL

其实就是定义了操作所有关系型数据库的规则,标准组织指定的规则

每一种数据库操作的方式不一样的地方称之为'方言'

MySQL基础笔记——SQL语法

二、SQL通用语法

SQL语句可以单行或者多行书写,以分号结尾

可以使用空格和缩进来增强语句的可读性

MySQL数据库的SQL语句不区分大小写,但是关键字建议大写

注释方式

-- 单行注释('--'之后必须加空格) #单行注释 /* 多行 注释 */

三、SQL的分类

DDL(Data Definition Language):数据定义语言

操作数据库和表

DML(Data Manipulation Language):数据库操作语言

增删改表中的数据

DQL(Data Query Language):数据查询语言

查询表

DCL(Data Control Language):数据库控制语言

MySQL基础笔记——SQL语法

授权操作权限

DDL:操作数据库、表

1、操作数据库:CRUD

C(Create):创建

-- 创建数据库
mysql> CREATE DATABASE city;

-- 首先判断数据库是存在,不存在才创建
mysql> CREATE DATABASE IF NOT EXISTS TEST;

-- 指定数据库的字符集
mysql> CREATE DATABASE TEXT CHARACTER SET GBK;

-- 创建名字为school的数据库,先判断是否存在,并且指定使用字符集GBK
mysql> CREATE DATABASE IF NOT EXISTS SCHHOL CHARACTER SET GBK;

R(Retrieve):查询

-- 查询数据库的名称 SHOW DATABASES; mysql> SHOW DATABASES; -------------------- | Database | -------------------- | city | | information_schema | | mysql | | performance_schema | | sys | -------------------- -- 查看某个数据库的字符集:查询某个数据库的创建语句 mysql> show create database mysql; ---------- --------------------------------------------------------------------------------------------------------------------------------- | Database | Create Database | ---------- --------------------------------------------------------------------------------------------------------------------------------- | mysql | CREATE DATABASE `mysql` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */ | ---------- ---------------------------------------------------------------------------------------------------------------------------------

U(Update):修改

-- 修改数据库的字符集
mysql> ALTER DATABASE SCHOOL CHARACTER SET UTF8;

D(Delete):删除

-- 删除数据库 mysql> DROP DATABASE SCHOOL; -- 先判断数据库是否存在,如果存在才删除 mysql> DROP DATABASE IF EXISTS SCHOOL;

使用数据库

-- 使用数据库
mysql> USE CITY;

-- 查询当前正在使用的数据库名称
mysql> SELECT DATABASE();
 ------------ 
| DATABASE() |
 ------------ 
| city       |
 ------------ 
1 row in set (0.00 sec)

2、操作表

C(Create):创建

  • 基本语法:
  • CREATE TABLE 表名( 列名1,数据类型1, 列名2,数据类型2, 列名3,数据类型3 ...... 列名n,数据类型n ); #最后一行不需要加逗号
  • 常用数据类型:
  • INT 整数
    DOUBLE 小数(指定一共多少位,小数点后多少位):SCORE DOUBLE(5,2)
    DATE 日期类型:只包含年月日,yyyy-MM-dd
    DATETIME 时间类型:年月日时分秒,yyyy-MM-dd HH:mm:ss
    TIMESTAMP 时间戳类型:年月日时分秒,yyyy-MM-dd HH:mm:ss
    -- 如果是TIMESAMP类型,不给其赋值或者指定为NULL,将会默认使用系统的当前时间来自动赋值
    VARCHAR 字符串类型(指定长度):NAME VARCHAR(20)
  • 实例
  • -- 学生表 -- 编号 姓名 年龄 分数 出生日期 添加时间 mysql> CREATE TABLE STU_MESSAGE( -> ID INT, -> NAME VARCHAR(32), -> AGE INT, -> SCORE DOUBLE(4,1), -> BIRTHDAY DATE, -> INSERT_TIME TIMESTAMP -> ); Query OK, 0 rows affected, 1 warning (0.60 sec) -- 检查表结构 mysql> DESC STU_MESSAGE; ------------- ------------- ------ ----- --------- ------- | Field | Type | Null | Key | Default | Extra | ------------- ------------- ------ ----- --------- ------- | ID | int(11) | YES | | NULL | | | NAME | varchar(32) | YES | | NULL | | | AGE | int(11) | YES | | NULL | | | SCORE | double(4,1) | YES | | NULL | | | BIRTHDAY | date | YES | | NULL | | | INSERT_TIME | timestamp | YES | | NULL | | ------------- ------------- ------ ----- --------- ------- 6 rows in set (0.00 sec) -- 复制表 mysql> CREATE TABLE STU LIKE STU_MESSAGE;

    R(Retrieve):查询

    -- 查询某个数据库当中的表名称
    mysql> SHOW TABLES;
     ---------------- 
    | Tables_in_city |
     ---------------- 
    | student        |
     ---------------- 
    
    -- 查询表的创建语句
    mysql> SHOW CREATE TABLE STUDENT;
     --------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 
    | Table   | Create Table                                                                                                                                                                                                                                                               |
     --------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 
    | STUDENT | CREATE TABLE `student` (
      `ID` int(11) DEFAULT NULL,
      `NAME` varchar(32) DEFAULT NULL,
      `AGE` int(11) DEFAULT NULL,
      `SCORE` double(4,1) DEFAULT NULL,
      `BIRTHDAY` date DEFAULT NULL,
      `INSERT_TIME` timestamp NULL DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=gbk |
     --------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 
    
    -- 查询表结构
    mysql> DESC USER;
     -------------------------- ----------------------------------- ------ ----- ----------------------- ------- 
    | Field                    | Type                              | Null | Key | Default               | Extra |
     -------------------------- ----------------------------------- ------ ----- ----------------------- ------- 
    | Host                     | char(255)                         | NO   | PRI |                       |       |
    | User                     | char(32)                          | NO   | PRI |                       |       |
    | Select_priv              | enum('N','Y')                     | NO   |     | N                     |       |
    | Insert_priv              | enum('N','Y')                     | NO   |     | N                     |       |
    | Update_priv              | enum('N','Y')                     | NO   |     | N                     |       |
    | Delete_priv              | enum('N','Y')                     | NO   |     | N                     |       |
    | Create_priv              | enum('N','Y')                     | NO   |     | N                     |       |
    | Drop_priv                | enum('N','Y')                     | NO   |     | N                     |       |
    | Reload_priv              | enum('N','Y')                     | NO   |     | N                     |       |
    | Shutdown_priv            | enum('N','Y')                     | NO   |     | N                     |       |
    | Process_priv             | enum('N','Y')                     | NO   |     | N                     |       |
    | File_priv                | enum('N','Y')                     | NO   |     | N                     |       |
    | Grant_priv               | enum('N','Y')                     | NO   |     | N                     |       |
    | References_priv          | enum('N','Y')                     | NO   |     | N                     |       |
    | Index_priv               | enum('N','Y')                     | NO   |     | N                     |       |
    | Alter_priv               | enum('N','Y')                     | NO   |     | N                     |       |
    | Show_db_priv             | enum('N','Y')                     | NO   |     | N                     |       |
    | Super_priv               | enum('N','Y')                     | NO   |     | N                     |       |
    | Create_tmp_table_priv    | enum('N','Y')                     | NO   |     | N                     |       |
    | Lock_tables_priv         | enum('N','Y')                     | NO   |     | N                     |       |
    | Execute_priv             | enum('N','Y')                     | NO   |     | N                     |       |
    | Repl_slave_priv          | enum('N','Y')                     | NO   |     | N                     |       |
    | Repl_client_priv         | enum('N','Y')                     | NO   |     | N                     |       |
    | Create_view_priv         | enum('N','Y')                     | NO   |     | N                     |       |
    | Show_view_priv           | enum('N','Y')                     | NO   |     | N                     |       |
    | Create_routine_priv      | enum('N','Y')                     | NO   |     | N                     |       |
    | Alter_routine_priv       | enum('N','Y')                     | NO   |     | N                     |       |
    | Create_user_priv         | enum('N','Y')                     | NO   |     | N                     |       |
    | Event_priv               | enum('N','Y')                     | NO   |     | N                     |       |
    | Trigger_priv             | enum('N','Y')                     | NO   |     | N                     |       |
    | Create_tablespace_priv   | enum('N','Y')                     | NO   |     | N                     |       |
    | ssl_type                 | enum('','ANY','X509','SPECIFIED') | NO   |     |                       |       |
    | ssl_cipher               | blob                              | NO   |     | NULL                  |       |
    | x509_issuer              | blob                              | NO   |     | NULL                  |       |
    | x509_subject             | blob                              | NO   |     | NULL                  |       |
    | max_questions            | int(11) unsigned                  | NO   |     | 0                     |       |
    | max_updates              | int(11) unsigned                  | NO   |     | 0                     |       |
    | max_connections          | int(11) unsigned                  | NO   |     | 0                     |       |
    | max_user_connections     | int(11) unsigned                  | NO   |     | 0                     |       |
    | plugin                   | char(64)                          | NO   |     | caching_sha2_password |       |
    | authentication_string    | text                              | YES  |     | NULL                  |       |
    | password_expired         | enum('N','Y')                     | NO   |     | N                     |       |
    | password_last_changed    | timestamp                         | YES  |     | NULL                  |       |
    | password_lifetime        | smallint(5) unsigned              | YES  |     | NULL                  |       |
    | account_locked           | enum('N','Y')                     | NO   |     | N                     |       |
    | Create_role_priv         | enum('N','Y')                     | NO   |     | N                     |       |
    | Drop_role_priv           | enum('N','Y')                     | NO   |     | N                     |       |
    | Password_reuse_history   | smallint(5) unsigned              | YES  |     | NULL                  |       |
    | Password_reuse_time      | smallint(5) unsigned              | YES  |     | NULL                  |       |
    | Password_require_current | enum('N','Y')                     | YES  |     | NULL                  |       |
    | User_attributes          | json                              | YES  |     | NULL                  |       |
     -------------------------- ----------------------------------- ------ ----- ----------------------- ------- 

    U(Update):修改

    -- 修改表名 mysql> ALTER TABLE STU RENAME TO STUDENT; -- 修改表的字符集 mysql> ALTER TABLE STUDENT CHARACTER SET UTF8; -- 添加列 mysql> ALTER TABLE STUDENT ADD GENDER VARCHAR(10); -- 删除列 mysql> ALTER TABLE STUDENT DROP SEX; -- 修改列的名称和数据类型 mysql> ALTER TABLE STUDENT CHANGE GENDER SEX VARCHAR(20); -- 修改列的数据类型 mysql> ALTER TABLE STUDENT MODIFY SEX VARCHAR(10);

    D(Delete):删除

    -- 先判断表是否存在,然后删除
    mysql> DROP TABLE IF EXISTS STUDENT;

    DML:增删改表中数据

    MySQL基础笔记——SQL语法

    添加数据

    • 语法
    INSERT INTO TABLE_NAME(NAME1,NAME2,...,NAMEn)VALUES (VALUE1,VALUE2,...,VALUEn);
  • 注意事项
  • 1、列名和值要一一对应
    2、如果表名后面不定义列名,则默认给所有列添加值
    3、除了数字之外的其他类型需要双引号或者是单引号
  • 实例
  • INSERT INTO STUDENT(ID, NAME, AGE) VALUES (1, '张无忌', 18); INSERT INTO student VALUES(2, '赵敏', 17, 99.9, '20000510', CURRENT_TIMESTAMP());
    删除数据
    • 语法
    DELETE FROM TABLE_NAME WHERE CONDITION;
  • 注意事项
  • 1、如果不加条件,就是删除表中所有数据 2、如果要删除全部的数据,最好采用TRUNCATE,因为如果是采用DELETE,有多少的数据就会执行多少次,效率特别低
  • 实例
  • -- 删除符合条件的数据
    DELETE FROM STUDENT WHERE ID = 1;
    -- 删除全部数据(执行两个操作,删除表,然后再创建一个一模一样的空表)
    TRUNCATE TABLE STUDENT;
    修改数据
    • 语法
    UPDATE TABLE_NAME SET NAME1 = VALUE1, NAME2 = VALUE2,..., NAMEn = VALUEn WHERE CONDITION;
  • 注意事项
  • 1、如果不加任何条件,则将表中的全部数据进行修改
  • 实例
  • UPDATE STUDENT SET AGE = 117 WHERE NAME = '赵敏';
    DQL:查询
    SELECT * FROM TABLE_NAME;

      本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
      转藏 分享 献花(0

      0条评论

      发表

      请遵守用户 评论公约

      类似文章 更多