彩虹然

rainbow-ran

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 t1\G;

举例:

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 t1\G;
*************************** 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 表名;
posted @ 2021-03-13 14:56  彩虹然  阅读(237)  评论(0编辑  收藏  举报