• sql语句(库操作与表操作)


    SQL语言主要用于存取数据、查询数据、更新数据和管理关系数据库系统,SQL语言由IBM开发。

    SQL语言分为3种类型:
    数据库定义语言(DDL): 数据库、表、视图、索引、存储过程,例如增CREATE、删DROP、改ALTER
    数据库操纵语言(DML): 插入数据INSERT、删除数据DELETE、更新数据UPDATE、查询数据SELECT
    数据库控制语言(DCL): 例如控制用户的访问权限GRANT(授权)、REVOKE(回收)

    一、库基本操作

    1. 创建数据库

    语法:

    create database 数据库名 charset utf8;
    

    数据库命名规则:可以由字母、数字、下划线、@、#、$

    区分大小写

    唯一性

    不能使用关键字如 create select

    不能单独使用数字

    最长128位

    2. 查看数据库

    语法:

    show databases; 
    show create database 数据库名;  /* 查看数据库使用的字符编码 */
    select database();  /* 查询当前所使用的数据库 */
    

    举例:

    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | db1                |
    | mysql              |
    | performance_schema |
    | test               |
    +--------------------+
    5 rows in set (0.02 sec)
    
    mysql> show create database db1;
    +----------+--------------------------------------------------------------+
    | Database | Create Database                                              |
    +----------+--------------------------------------------------------------+
    | db1      | CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET utf8 */ |
    +----------+--------------------------------------------------------------+
    1 row in set (0.00 sec)
    
    mysql> select database();
    +------------+
    | database() |
    +------------+
    | NULL       |
    +------------+
    1 row in set (0.00 sec)
    

    3. 选择数据库

    语法:

    use 数据库名;
    

    4. 删除数据库

    语法:

    drop database 数据库名;
    

    5. 修改数据库

    语法:

    alter database db1 charset utf8;
    

    二、表基本操作

    存储引擎即表类型。表相当于文件,表中的一条记录就相当于文件的一行内容,不同的是,表中的一条记录有对应的标题,称为表的字段。

    1. 创建表

    语法:

    create table 表名(
    字段名1 类型[(宽度) 约束条件],
    字段名2 类型[(宽度) 约束条件],
    字段名3 类型[(宽度) 约束条件]
    );

    举例:

    mysql> create table t1(
        -> id int(3),
        -> name varchar(50),
        -> age int(3),
        -> sex enum('male', 'female')
        -> );
    Query OK, 0 rows affected (0.05 sec)
    

    2. 查看数据库下所有表名

    语法:

    show tables;
    

    3. 往表中插入记录

    举例:

    insert into t1 values
        -> (1, 'egon', 21, 'male'),
        -> (2, 'alex', 22, 'female')
        -> ;
    

    4. 查看表中记录

    语法:

    mysql> select * from t1;
    mysql> select id, name from t1;
    

    举例:

    mysql> insert into t1(id) values  /* 仅插入id字段 */
        -> (3),
        -> (4)
        -> ;
    Query OK, 2 rows affected (0.00 sec)
    Records: 2  Duplicates: 0  Warnings: 0
    
    mysql> select * from t1;
    +------+------+------+--------+
    | id   | name | age  | sex    |
    +------+------+------+--------+
    |    1 | egon |   21 | male   |
    |    2 | alex |   22 | female |
    |    3 | NULL | NULL | NULL   |
    |    4 | NULL | NULL | NULL   |
    +------+------+------+--------+
    4 rows in set (0.00 sec)
    
    mysql> select id, name from t1;
    +------+------+
    | id   | name |
    +------+------+
    |    1 | egon |
    |    2 | alex |
    |    3 | NULL |
    |    4 | NULL |
    +------+------+
    4 rows in set (0.00 sec)
    

    5. 查看表结构

    语法:

    desc t1;
    describe t1;  /* 等同于desc */
    show create table t1G;
    

    举例:

    desc t1;
    +-------+-----------------------+------+-----+---------+-------+
    | Field | Type                  | Null | Key | Default | Extra |
    +-------+-----------------------+------+-----+---------+-------+
    | id    | int(3)                | YES  |     | NULL    |       |
    | name  | varchar(50)           | YES  |     | NULL    |       |
    | age   | int(3)                | YES  |     | NULL    |       |
    | sex   | enum('male','female') | YES  |     | NULL    |       |
    +-------+-----------------------+------+-----+---------+-------+
    4 rows in set (0.01 sec)
    
    show create table t1G;
    *************************** 1. row ***************************
           Table: t1
    Create Table: CREATE TABLE `t1` (
      `id` int(3) DEFAULT NULL,
      `name` varchar(50) DEFAULT NULL,
      `age` int(3) DEFAULT NULL,
      `sex` enum('male','female') DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8
    1 row in set (0.00 sec)
    

    6. 修改表

    6.1 修改表名

    语法:

    mysql> alter table 表名
        -> rename 新表名;
    

    6.2 增加字段

    语法:

    alter table 表名
    add 字段名  数据类型 [完整性约束条件…],
    add 字段名  数据类型 [完整性约束条件…];
          
    alter table 表名
    add 字段名  数据类型 [完整性约束条件…] first;  /* 加在最开头 */
    
    alter table 表名
    add 字段名  数据类型 [完整性约束条件…] after 字段名A;  /* 加在字段名A之后 */
    

    举例:

    mysql> alter table t1
        -> add apartment varchar(50) not null;
    Query OK, 0 rows affected (0.06 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    mysql> alter table t1
        -> add college varchar(50) default 'cs' first;
    Query OK, 0 rows affected (0.04 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    mysql> alter table t1
        -> add class int(2) default 1 after college;
    Query OK, 0 rows affected (0.04 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    mysql> desc t1;
    +-----------+-----------------------+------+-----+---------+-------+
    | Field     | Type                  | Null | Key | Default | Extra |
    +-----------+-----------------------+------+-----+---------+-------+
    | college   | varchar(50)           | YES  |     | cs      |       |
    | class     | int(2)                | YES  |     | 1       |       |
    | id        | int(3)                | YES  |     | NULL    |       |
    | name      | varchar(50)           | YES  |     | NULL    |       |
    | age       | int(3)                | YES  |     | NULL    |       |
    | sex       | enum('male','female') | YES  |     | NULL    |       |
    | apartment | varchar(50)           | NO   |     | NULL    |       |
    +-----------+-----------------------+------+-----+---------+-------+
    7 rows in set (0.00 sec)
    

    6.3 删除字段

    语法:

    mysql> alter table 表名
        -> drop 字段名;
    

    6.4 修改字段

    语法:

    alter table 表名 
    modify 字段名 数据类型 [完整性约束条件…];
    
    alter table 表名 
    change 旧字段名 新字段名 旧数据类型 [完整性约束条件…];
    
    alter table 表名 
    change 旧字段名 旧字段名 新数据类型 [完整性约束条件…];  /* 等同于modify */
    
    alter table 表名 
    change 旧字段名 新字段名 新数据类型 [完整性约束条件…];
    

    modify:指定字段名修改数据类型及约束条件(即字段属性),不可修改字段名

    change:指定旧字段名,修改字段名或字段属性或两者都修改

    6.5 修改存储引擎

    举例:

    mysql> alter table service  /* 表名 */
        -> engine=innodb;  /* 存储引擎类型 *
    

    7. 复制表

    1. 复制表结构与记录 (key不会复制:主键、外键和索引)

      语法:

      mysql> create table 新表名 select * from 原表名;
      

      新表与原表一模一样。

    2. 只复制表结构( 查询表empty无记录)

      语法:

      mysql> create table 新表名 select * from 原表名 where 1=2;  /* 条件为假,查不到任何记录 */
      

      mysql> create table 新表名 like 原表名;
      

    8. 删除表

    语法:

    drop table 表名;
    
  • 相关阅读:
    Laravel获取所有的数据库表及结构
    larave5.6 将Excel文件数据导入数据库代码实例
    艾伟_转载:Visual Studio调试之断点技巧篇 狼人:
    艾伟_转载:自用扩展方法分享 狼人:
    艾伟_转载:.NET Discovery 系列之三深入理解.NET垃圾收集机制(上) 狼人:
    艾伟_转载:.Net Discovery 系列之五Me JIT(上) 狼人:
    艾伟_转载:.NET Discovery 系列之六Me JIT(下) 狼人:
    艾伟_转载:.NET Discovery 系列之七深入理解.NET垃圾收集机制(拾贝篇) 狼人:
    艾伟_转载:Visual Studio调试之断点基础篇 狼人:
    艾伟_转载:.NET Discovery 系列之一string从入门到精通(上) 狼人:
  • 原文地址:https://www.cnblogs.com/rainbow-ran/p/14528833.html
Copyright © 2020-2023  润新知