数据库(2)

文章目录

  • 数据表操作
    • 完整性约束
    • AUTO_INCREMWNT
  • NOT NULL非空
  • 唯一性约束UNIQUE KEY(KEY可省略)
  • 修改表结构的方式
    • 修改表名
    • 添加字段
    • 删除字段
    • 修改字段
    • 添加默认值
    • 删除默认值
    • 添加主键
    • 删除主键
    • 添加唯一
    • 删除唯一
    • 修改表的存储引擎
    • 设置自增长的值
    • 删除数据表
  • DML
    • 插入数据
    • 不指定具体的字段名
    • 通过SET形式插入记录
    • 将查询结果插入到表中
    • -- 字段数目不匹配
    • 更新数据
    • 删除数据
    • 查询
    • 查询范围:WHERE条件
    • 模糊查询
    • GROUP BY 分组

数据表操作

完整性约束

CREATE TABLE [IF NOT EXISTS] tbl_name(
字段名称 字段类型 [UNSIGNED|ZERIFUKK] [NOT NULL] [DEFAULT 默认值] [[PRIMARY] KEY] | UNIQUE [KEY]] [AUTO_INCREMENT])ENGINE=INNODB CHARSET=UTF8 AUTO_INCREMENT=100

AUTO_INCREMWNT

  1. 一个表中只能有一个自增长字段,且必须配合主键使用,只对整数列、整数串有意义,对字符串没有意义
  2. 加入AUTO_INCREMWNT
mysql> CREATE TABLE IF NOT EXISTS user5(-> id SMALLINT KEY AUTO_INCREMENT,-> username VARCHAR(20)-> );
Query OK, 0 rows affected (0.34 sec)mysql> DESC user5;
+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| id       | smallint(6) | NO   | PRI | NULL    | auto_increment |
| username | varchar(20) | YES  |     | NULL    |                |
+----------+-------------+------+-----+---------+----------------+
2 rows in set (0.11 sec)

3.若从输入新制定的id,则从新指定的id开始新增

mysql> INSERT user5 VALUES(111,'KING1');
Query OK, 1 row affected (0.04 sec)mysql> SELECT * FROM user5;
+-----+----------+
| id  | username |
+-----+----------+
|   1 | KING     |
|   2 | queen    |
| 111 | KING1    |
+-----+----------+
3 rows in set (0.00 sec)mysql> INSERT user5(username) VALUES('queen1');
Query OK, 1 row affected (0.07 sec)mysql> SELECT * FROM user5;
+-----+----------+
| id  | username |
+-----+----------+
|   1 | KING     |
|   2 | queen    |
| 111 | KING1    |
| 112 | queen1   |
+-----+----------+
4 rows in set (0.00 sec)

4.指定新增从哪里开始

mysql> CREATE TABLE IF NOT EXISTS user6(-> id SMALLINT KEY AUTO_INCREMENT,-> username VARCHAR(20)-> )AUTO_INCREMENT=100;
Query OK, 0 rows affected (0.30 sec)mysql> SELECT * FROM user6;
+-----+----------+
| id  | username |
+-----+----------+
| 100 | queen1   |
+-----+----------+
1 row in set (0.00 sec)

NOT NULL非空

  1. 不能输入空值,也不能不输入值
mysql> CREATE TABLE IF NOT EXISTS user7(-> id INT UNSIGNED KEY AUTO_INCREMENT,-> username VARCHAR(20) NOT NULL,-> password CHAR(32) NOT NULL,-> age TINYINT UNSIGNED-> );
Query OK, 0 rows affected (0.32 sec)mysql> DESC user7;
+----------+---------------------+------+-----+---------+----------------+
| Field    | Type                | Null | Key | Default | Extra          |
+----------+---------------------+------+-----+---------+----------------+
| id       | int(10) unsigned    | NO   | PRI | NULL    | auto_increment |
| username | varchar(20)         | NO   |     | NULL    |                |
| password | char(32)            | NO   |     | NULL    |                |
| age      | tinyint(3) unsigned | YES  |     | NULL    |                |
+----------+---------------------+------+-----+---------+----------------+
4 rows in set (0.03 sec)

2.若有NOT NULL限制,输入NULL或不输入会报错

mysql> INSERT user7(username,password) VALUES(NULL,NULL);
ERROR 1048 (23000): Column 'username' cannot be null

唯一性约束UNIQUE KEY(KEY可省略)

(主键PRIMARY KEY中PRIMARY可省略)

  1. 一个表只能有一个主键,但能有多个唯一,NULL不算重复
mysql> CREATE TABLE IF NOT EXISTS user9(-> id TINYINT UNSIGNED KEY AUTO_INCREMENT,-> username VARCHAR(20) NOT NULL UNIQUE,-> card CHAR(18) UNIQUE-> );
Query OK, 0 rows affected (0.41 sec)mysql> DESC user9;
+----------+---------------------+------+-----+---------+----------------+
| Field    | Type                | Null | Key | Default | Extra          |
+----------+---------------------+------+-----+---------+----------------+
| id       | tinyint(3) unsigned | NO   | PRI | NULL    | auto_increment |
| username | varchar(20)         | NO   | UNI | NULL    |                |
| card     | char(18)            | YES  | UNI | NULL    |                |
+----------+---------------------+------+-----+---------+----------------+
3 rows in set (0.05 sec)mysql> SHOW CREATE TABLE user9;
+-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                                                                                                                                                |
+-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| user9 | CREATE TABLE `user9` (`id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT,`username` varchar(20) NOT NULL,`card` char(18) DEFAULT NULL,PRIMARY KEY (`id`),UNIQUE KEY `username` (`username`),UNIQUE KEY `card` (`card`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |mysql> INSERT user9(username) VALUES('A');
Query OK, 1 row affected (0.06 sec)mysql> INSERT user9(username) VALUES('A1');
Query OK, 1 row affected (0.04 sec)mysql> SELECT * FROM user9;
+----+----------+------+
| id | username | card |
+----+----------+------+
|  1 | A        | NULL |
|  2 | A1       | NULL |
+----+----------+------+

修改表结构的方式

修改表名

在这里插入图片描述

  1. ALTER TABLE tbl_name RENAME[TO|AS]new_name
mysql> ALTER TABLE user10 RENAME TO user11;
Query OK, 0 rows affected (0.20 sec)

2,RENAME TABLE tbl_name TO n

mysql> RENAME TABLE user11 TO user10;
Query OK, 0 rows affected (0.17 sec)

添加字段

(1)ALTER TABLE tbl_name ADD 字段名称 字段类型 [完整性约束条件] [FIRST|ALTER 字段名称]
默认添加在末尾

mysql> DESC user10;
+----------+----------------------------+------+-----+------------------+----------------+
| Field    | Type                       | Null | Key | Default          | Extra          |
+----------+----------------------------+------+-----+------------------+----------------+
| id       | smallint(5) unsigned       | NO   | PRI | NULL             | auto_increment |
| username | varchar(20)                | NO   | UNI | NULL             |                |
| password | char(32)                   | NO   |     | NULL             |                |
| email    | varchar(50)                | NO   |     | 382771946@qq.com |                |
| age      | tinyint(3) unsigned        | YES  |     | 18               |                |
| sex      | enum('男','女','保密')     | YES  |     | 保密             |                |
| addr     | varchar(200)               | NO   |     | 北京             |                |
| salary   | float(6,2)                 | YES  |     | NULL             |                |
| regTime  | int(10) unsigned           | YES  |     | NULL             |                |
| face     | char(100)                  | NO   |     | default.jpg      |                |
| card     | char(18)                   | YES  |     | NULL             |                |
+----------+----------------------------+------+-----+------------------+----------------+
11 rows in set (0.01 sec)mysql> ALTER TABLE user10 ADD test1 VARCHAR(100) NOT NULL UNQIUE;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UNQIUE' at line 1
mysql> ALTER TABLE user10 ADD test1 VARCHAR(100) NOT NULL UNIQUE;
Query OK, 0 rows affected (0.57 sec)
Records: 0  Duplicates: 0  Warnings: 0mysql> DESC user10;
+----------+----------------------------+------+-----+------------------+----------------+
| Field    | Type                       | Null | Key | Default          | Extra          |
+----------+----------------------------+------+-----+------------------+----------------+
| id       | smallint(5) unsigned       | NO   | PRI | NULL             | auto_increment |
| username | varchar(20)                | NO   | UNI | NULL             |                |
| password | char(32)                   | NO   |     | NULL             |                |
| email    | varchar(50)                | NO   |     | 382771946@qq.com |                |
| age      | tinyint(3) unsigned        | YES  |     | 18               |                |
| sex      | enum('男','女','保密')     | YES  |     | 保密             |                |
| addr     | varchar(200)               | NO   |     | 北京             |                |
| salary   | float(6,2)                 | YES  |     | NULL             |                |
| regTime  | int(10) unsigned           | YES  |     | NULL             |                |
| face     | char(100)                  | NO   |     | default.jpg      |                |
| card     | char(18)                   | YES  |     | NULL             |                |
| test1    | varchar(100)               | NO   | UNI | NULL             |                |
+----------+----------------------------+------+-----+------------------+----------------+

2.直接使用ADD

mysql> ALTER TABLE user10 -> ADD test4 INT NOT NULL DEFAULT 123 AFTER password,-> ADD test5 FLOAT(6,2) FIRST,-> ADD test6 SET('A','B','C');
Query OK, 0 rows affected (0.60 sec)
Records: 0  Duplicates: 0  Warnings: 0mysql> DESC user10;
+----------+----------------------------+------+-----+------------------+----------------+
| Field    | Type                       | Null | Key | Default          | Extra          |
+----------+----------------------------+------+-----+------------------+----------------+
| test5    | float(6,2)                 | YES  |     | NULL             |                |
| test2    | varchar(20)                | NO   |     | NULL             |                |
| id       | smallint(5) unsigned       | NO   | PRI | NULL             | auto_increment |
| username | varchar(20)                | NO   | UNI | NULL             |                |
| test3    | int(11)                    | NO   |     | 100              |                |
| password | char(32)                   | NO   |     | NULL             |                |
| test4    | int(11)                    | NO   |     | 123              |                |
| email    | varchar(50)                | NO   |     | 382771946@qq.com |                |
| age      | tinyint(3) unsigned        | YES  |     | 18               |                |
| sex      | enum('男','女','保密')     | YES  |     | 保密             |                |
| addr     | varchar(200)               | NO   |     | 北京             |                |
| salary   | float(6,2)                 | YES  |     | NULL             |                |
| regTime  | int(10) unsigned           | YES  |     | NULL             |                |
| face     | char(100)                  | NO   |     | default.jpg      |                |
| card     | char(18)                   | YES  |     | NULL             |                |
| test1    | varchar(100)               | NO   | UNI | NULL             |                |
| test6    | set('A','B','C')           | YES  |     | NULL             |                |
+----------+----------------------------+------+-----+------------------+----------------+
17 rows in set (0.01 sec)

删除字段

1,ALTER TABLE tbl_name DROP字段名称

mysql> ALTER TABLE user10 DROP test6;
Query OK, 0 rows affected (0.72 sec)
Records: 0  Duplicates: 0  Warnings: 0mysql> DESC user10;
+----------+----------------------------+------+-----+------------------+----------------+
| Field    | Type                       | Null | Key | Default          | Extra          |
+----------+----------------------------+------+-----+------------------+----------------+
| test5    | float(6,2)                 | YES  |     | NULL             |                |
| test2    | varchar(20)                | NO   |     | NULL             |                |
| id       | smallint(5) unsigned       | NO   | PRI | NULL             | auto_increment |
| username | varchar(20)                | NO   | UNI | NULL             |                |
| test3    | int(11)                    | NO   |     | 100              |                |
| password | char(32)                   | NO   |     | NULL             |                |
| test4    | int(11)                    | NO   |     | 123              |                |
| email    | varchar(50)                | NO   |     | 382771946@qq.com |                |
| age      | tinyint(3) unsigned        | YES  |     | 18               |                |
| sex      | enum('男','女','保密')     | YES  |     | 保密             |                |
| addr     | varchar(200)               | NO   |     | 北京             |                |
| salary   | float(6,2)                 | YES  |     | NULL             |                |
| regTime  | int(10) unsigned           | YES  |     | NULL             |                |
| face     | char(100)                  | NO   |     | default.jpg      |                |
| card     | char(18)                   | YES  |     | NULL             |                |
| test1    | varchar(100)               | NO   | UNI | NULL             |                |
+----------+----------------------------+------+-----+------------------+----------------+
16 rows in set (0.01 sec)

2,直接用DROP

mysql> ALTER TABLE user10 -> -> DROP test2,-> -> DROP test3,-> -> DROP test4,-> -> DROP test5;
Query OK, 0 rows affected (0.65 sec)
Records: 0  Duplicates: 0  Warnings: 0mysql> DESC user10;
+----------+----------------------------+------+-----+------------------+----------------+
| Field    | Type                       | Null | Key | Default          | Extra          |
+----------+----------------------------+------+-----+------------------+----------------+
| id       | smallint(5) unsigned       | NO   | PRI | NULL             | auto_increment |
| username | varchar(20)                | NO   | UNI | NULL             |                |
| password | char(32)                   | NO   |     | NULL             |                |
| email    | varchar(50)                | NO   |     | 382771946@qq.com |                |
| age      | tinyint(3) unsigned        | YES  |     | 18               |                |
| sex      | enum('男','女','保密')     | YES  |     | 保密             |                |
| addr     | varchar(200)               | NO   |     | 北京             |                |
| salary   | float(6,2)                 | YES  |     | NULL             |                |
| regTime  | int(10) unsigned           | YES  |     | NULL             |                |
| face     | char(100)                  | NO   |     | default.jpg      |                |
| card     | char(18)                   | YES  |     | NULL             |                |
+----------+----------------------------+------+-----+------------------+----------------+

修改字段

1.ALTER TABLE tbl_name MODIFY字段名称 字段类型 【完整性约束条件】【FIRST|LAST字段名称】

mysql> DESC user10;
+----------+----------------------------+------+-----+------------------+----------------+
| Field    | Type                       | Null | Key | Default          | Extra          |
+----------+----------------------------+------+-----+------------------+----------------+
| id       | smallint(5) unsigned       | NO   | PRI | NULL             | auto_increment |
| username | varchar(20)                | NO   | UNI | NULL             |                |
| password | char(32)                   | NO   |     | NULL             |                |
| email    | varchar(50)                | NO   |     | 382771946@qq.com |                |
| age      | tinyint(3) unsigned        | YES  |     | 18               |                |
| sex      | enum('男','女','保密')     | YES  |     | 保密             |                |
| test     | int(10) unsigned           | NO   |     | 10               |                |
| salary   | float(6,2)                 | YES  |     | NULL             |                |
| regTime  | int(10) unsigned           | YES  |     | NULL             |                |
| face     | char(100)                  | NO   |     | default.jpg      |                |
| card     | char(18)                   | YES  |     | NULL             |                |
+----------+----------------------------+------+-----+------------------+----------------+
11 rows in set (0.00 sec)mysql> ALTER TABLE user10 MODIFY email VARCHAR(200);
Query OK, 0 rows affected (0.75 sec)
Records: 0  Duplicates: 0  Warnings: 0mysql> DESC user10;
+----------+----------------------------+------+-----+-------------+----------------+
| Field    | Type                       | Null | Key | Default     | Extra          |
+----------+----------------------------+------+-----+-------------+----------------+
| id       | smallint(5) unsigned       | NO   | PRI | NULL        | auto_increment |
| username | varchar(20)                | NO   | UNI | NULL        |                |
| password | char(32)                   | NO   |     | NULL        |                |
| email    | varchar(200)               | YES  |     | NULL        |                |
| age      | tinyint(3) unsigned        | YES  |     | 18          |                |
| sex      | enum('男','女','保密')     | YES  |     | 保密        |                |
| test     | int(10) unsigned           | NO   |     | 10          |                |
| salary   | float(6,2)                 | YES  |     | NULL        |                |
| regTime  | int(10) unsigned           | YES  |     | NULL        |                |
| face     | char(100)                  | NO   |     | default.jpg |                |
| card     | char(18)                   | YES  |     | NULL        |                |
+----------+----------------------------+------+-----+-------------+----------------+
11 rows in set (0.04 sec)

2.修改字段名称:ALTER TABLE tbl_name CHANGE 旧字段名称 新字段名称 字段类型 【完整性约束条件】【FIRST|ALTER字段名称】

mysql> DESC user10;
+----------+----------------------------+------+-----+------------------+----------------+
| Field    | Type                       | Null | Key | Default          | Extra          |
+----------+----------------------------+------+-----+------------------+----------------+
| test     | char(32)                   | NO   |     | 123              |                |
| id       | smallint(5) unsigned       | NO   | PRI | NULL             | auto_increment |
| username | varchar(20)                | NO   | UNI | NULL             |                |
| password | char(32)                   | NO   |     | NULL             |                |
| email    | varchar(50)                | NO   |     | 382771946@qq.com |                |
| age      | tinyint(3) unsigned        | YES  |     | 18               |                |
| sex      | enum('男','女','保密')     | YES  |     | 保密             |                |
| card     | char(18)                   | YES  |     | NULL             |                |
| salary   | float(6,2)                 | YES  |     | NULL             |                |
| regTime  | int(10) unsigned           | YES  |     | NULL             |                |
| face     | char(100)                  | NO   |     | default.jpg      |                |
+----------+----------------------------+------+-----+------------------+----------------+
11 rows in set (0.01 sec)mysql> ALTER TABLE user10 CHANGE test test1 CHAR(32) NOT NULL DEFAULT '123';
Query OK, 0 rows affected (0.11 sec)
Records: 0  Duplicates: 0  Warnings: 0mysql> DESC user10;
+----------+----------------------------+------+-----+------------------+----------------+
| Field    | Type                       | Null | Key | Default          | Extra          |
+----------+----------------------------+------+-----+------------------+----------------+
| test1    | char(32)                   | NO   |     | 123              |                |
| id       | smallint(5) unsigned       | NO   | PRI | NULL             | auto_increment |
| username | varchar(20)                | NO   | UNI | NULL             |                |
| password | char(32)                   | NO   |     | NULL             |                |
| email    | varchar(50)                | NO   |     | 382771946@qq.com |                |
| age      | tinyint(3) unsigned        | YES  |     | 18               |                |
| sex      | enum('男','女','保密')     | YES  |     | 保密             |                |
| card     | char(18)                   | YES  |     | NULL             |                |
| salary   | float(6,2)                 | YES  |     | NULL             |                |
| regTime  | int(10) unsigned           | YES  |     | NULL             |                |
| face     | char(100)                  | NO   |     | default.jpg      |                |
+----------+----------------------------+------+-----+------------------+----------------+
11 rows in set (0.01 sec)

添加默认值

1.ALTER TABLE tbl_name ALTER 字段名称SET DEFAULT默认值

删除默认值


(1)ALTER TABLE tbl_name ALTER 字段名称 DROP DEFAULT

mysql> DESC user11;
+----------+---------------------+------+-----+---------+----------------+
| Field    | Type                | Null | Key | Default | Extra          |
+----------+---------------------+------+-----+---------+----------------+
| id       | tinyint(3) unsigned | NO   | PRI | NULL    | auto_increment |
| username | varchar(20)         | NO   | UNI | NULL    |                |
| age      | tinyint(3) unsigned | YES  |     | NULL    |                |
+----------+---------------------+------+-----+---------+----------------+
3 rows in set (0.04 sec)mysql> ALTER TABLE user11 ALTER age SET DEFAULT 18;
Query OK, 0 rows affected (0.07 sec)
Records: 0  Duplicates: 0  Warnings: 0mysql> DESC user11;
+----------+---------------------+------+-----+---------+----------------+
| Field    | Type                | Null | Key | Default | Extra          |
+----------+---------------------+------+-----+---------+----------------+
| id       | tinyint(3) unsigned | NO   | PRI | NULL    | auto_increment |
| username | varchar(20)         | NO   | UNI | NULL    |                |
| age      | tinyint(3) unsigned | YES  |     | 18      |                |
+----------+---------------------+------+-----+---------+----------------+
3 rows in set (0.01 sec)

添加主键

ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]PRIMARY KEY [index_type](字段名称……)
1.添加单主键

mysql> DESC test12;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id    | int(11) | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
1 row in set (0.01 sec)mysql> ALTER TABLE test12 ADD PRIMARY KEY(id);
Query OK, 0 rows affected (0.46 sec)
Records: 0  Duplicates: 0  Warnings: 0mysql> DESC test12;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id    | int(11) | NO   | PRI | 0       |       |
+-------+---------+------+-----+---------+-------+
1 row in set (0.01 sec)

2,添加复合主键

mysql> ALTER TABLE test13 ADD PRIMARY KEY(id,card);
Query OK, 0 rows affected (0.55 sec)
Records: 0  Duplicates: 0  Warnings: 0mysql> DESC test13;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(11)     | NO   | PRI | 0       |       |
| card     | char(18)    | NO   | PRI |         |       |
| username | varchar(20) | NO   |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.01 sec)

删除主键

1.ALTER TABLE tbl_name DROP PRIMARY KEY

mysql> ALTER TABLE test12 DROP PRIMARY KEY;
Query OK, 0 rows affected (0.70 sec)
Records: 0  Duplicates: 0  Warnings: 0mysql> DESC test12;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id    | int(11) | NO   |     | 0       |       |
+-------+---------+------+-----+---------+-------+
1 row in set (0.02 sec)

2,删除主键时如果主键自增长,需要先取出自增长属性再删除主键

mysql> DESC test14;
+-------+------------------+------+-----+---------+----------------+
| Field | Type             | Null | Key | Default | Extra          |
+-------+------------------+------+-----+---------+----------------+
| id    | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
+-------+------------------+------+-----+---------+----------------+
1 row in set (0.03 sec)mysql> ALTER TABLE test14 DROP PRIMARY KEY ;
ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key
mysql> ALTER TABLE test14 MODIFY id INT UNSIGNED;
Query OK, 0 rows affected (0.62 sec)
Records: 0  Duplicates: 0  Warnings: 0mysql> DESC test14;
+-------+------------------+------+-----+---------+-------+
| Field | Type             | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+-------+
| id    | int(10) unsigned | NO   | PRI | 0       |       |
+-------+------------------+------+-----+---------+-------+
1 row in set (0.01 sec)mysql> ALTER TABLE test14 DROP PRIMARY KEY;
Query OK, 0 rows affected (0.64 sec)
Records: 0  Duplicates: 0  Warnings: 0mysql> DESC test14;
+-------+------------------+------+-----+---------+-------+
| Field | Type             | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+-------+
| id    | int(10) unsigned | NO   |     | 0       |       |
+-------+------------------+------+-----+---------+-------+
1 row in set (0.01 sec)

添加唯一

ALTER TABLE tbl_name ADD[constraint [symbol]PRIMARY KEY [index_type][索引名称](字段名称)

删除唯一

ALTER TABLE tbl_name DROP{index_name}

mysql> DESC user12;
+----------+---------------------+------+-----+---------+----------------+
| Field    | Type                | Null | Key | Default | Extra          |
+----------+---------------------+------+-----+---------+----------------+
| id       | tinyint(3) unsigned | NO   | PRI | NULL    | auto_increment |
| username | varchar(20)         | NO   |     | NULL    |                |
| card     | char(18)            | NO   | UNI | NULL    |                |
| test     | varchar(20)         | NO   | MUL | NULL    |                |
| test1    | char(32)            | NO   |     | NULL    |                |
+----------+---------------------+------+-----+---------+----------------+
5 rows in set (0.01 sec)mysql> ALTER TABLE user12 DROP KEY uni_card;
Query OK, 0 rows affected (0.13 sec)
Records: 0  Duplicates: 0  Warnings: 0mysql> 
mysql> ALTER TABLE user12 DROP KEY mulUni_test_test1;
Query OK, 0 rows affected (0.13 sec)
Records: 0  Duplicates: 0  Warnings: 0mysql> DESC user12;
+----------+---------------------+------+-----+---------+----------------+
| Field    | Type                | Null | Key | Default | Extra          |
+----------+---------------------+------+-----+---------+----------------+
| id       | tinyint(3) unsigned | NO   | PRI | NULL    | auto_increment |
| username | varchar(20)         | NO   |     | NULL    |                |
| card     | char(18)            | NO   |     | NULL    |                |
| test     | varchar(20)         | NO   |     | NULL    |                |
| test1    | char(32)            | NO   |     | NULL    |                |
+----------+---------------------+------+-----+---------+----------------+
5 rows in set (0.01 sec)

修改表的存储引擎

ALTER TABLE tbl_name ENGINE=存储引擎名称

mysql> ALTER TABLE user12 ENGINE=MyISAM;
Query OK, 0 rows affected (0.32 sec)
Records: 0  Duplicates: 0  Warnings: 0mysql> SHOW CREATE TABLE user12;
+--------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table  | Create Table                                                                                                                                                                                                                                                     |
+--------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| user12 | CREATE TABLE `user12` (`id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT,`username` varchar(20) NOT NULL,`card` char(18) NOT NULL,`test` varchar(20) NOT NULL,`test1` char(32) NOT NULL,PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 |
+--------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)mysql> ALTER TABLE user12 ENGINE=INNODB;
Query OK, 0 rows affected (0.30 sec)
Records: 0  Duplicates: 0  Warnings: 0mysql> SHOW CREATE TABLE user12;
+--------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table  | Create Table                                                                                                                                                                                                                                                     |
+--------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| user12 | CREATE TABLE `user12` (`id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT,`username` varchar(20) NOT NULL,`card` char(18) NOT NULL,`test` varchar(20) NOT NULL,`test1` char(32) NOT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+--------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

设置自增长的值

ALTER TABLE tbl_name AUTO_INCREMENT=值

mysql> ALTER TABLE user12 AUTO_INCREMENT=100;
Query OK, 0 rows affected (0.08 sec)

删除数据表

DROP TABLE [IF EXISTS] tbl_name[, tbl_name…]
(需删除已经存在的表)

mysql> DROP TABLE user12;
Query OK, 0 rows affected (0.09 sec)
mysql> DROP TABLE user12;
ERROR 1051 (42S02): Unknown table 'maizi.user12'

DML

插入数据

不指定具体的字段名

1.INSERT [INTO] tbl_name VALUES|VALUE(值)

mysql> INSERT INTO user VALUES(1,'KING','KING','KING@QQ.COM',20);
Query OK, 1 row affected (0.07 sec)mysql> SELECT * FROM user;
+----+----------+----------+-------------+------+
| id | username | password | email       | age  |
+----+----------+----------+-------------+------+
|  1 | KING     | KING     | KING@QQ.COM |   20 |
+----+----------+----------+-------------+------+
1 row in set (0.00 sec)

2.列出指定字段:INSERT [INTO] tbl_name(字段名称1,……)value|values(值1……)

mysql> INSERT user(username,password) VALUES('A','AAA');
Query OK, 1 row affected (0.05 sec)mysql> 
mysql> INSERT user(password,username) VALUES('BBB','B');
Query OK, 1 row affected (0.03 sec)mysql> SELECT * FROM user;
+----+----------+----------+------------------+------+
| id | username | password | email            | age  |
+----+----------+----------+------------------+------+
|  1 | KING     | KING     | KING@QQ.COM      |   20 |
|  2 | QUEEN    | QUEEN    | QUEEN@QQ.COM     |   30 |
|  3 | A        | AAA      | 382771946@qq.com |   18 |
|  4 | B        | BBB      | 382771946@qq.com |   18 |
+----+----------+----------+------------------+------+
4 rows in set (0.00 sec)

通过SET形式插入记录

INSERT [INTO] tbl_name SET 字段名称=值,…

mysql> INSERT user SET username='maizi',password='maizixueyuan' ;
Query OK, 1 row affected (0.08 sec)

将查询结果插入到表中

INSERT [INTO] tbl_name[(字段名称,…)] SELECT 字段名称 FROM tbl_name [WHERE 条件]

INSERT testUser SELECT id,username FROM user;

– 字段数目不匹配

INSERT testUser SELECT * FROM user;INSERT testUser(username) SELECT username FROM user;

更新数据

UPDATE tbl_name字段名称=值……【WHERE条件】【ORDER BY 字段名称】【LIMIT限制条数】

mysql> SELECT * FROM user;
+----+----------+----------------+------------------+------+
| id | username | password       | email            | age  |
+----+----------+----------------+------------------+------+
|  1 | KING     | KING           | KING@QQ.COM      |   20 |
|  2 | QUEEN    | QUEEN          | QUEEN@QQ.COM     |   30 |
|  3 | A        | AAA            | 382771946@qq.com |   18 |
|  4 | B        | BBB            | 382771946@qq.com |   18 |
|  6 | D        | DDD            | D@QQ.COM         |   35 |
|  8 | E        | EEE            | E@QQ.COM         |    9 |
| 18 | F        | FFF            | F@QQ.COM         |   32 |
| 55 | C        | CCC            | CCC@QQ.COM       |   18 |
| 98 | test     | this is a test | 123@qq.com       |   48 |
| 99 | maizi    | maizixueyuan   | 382771946@qq.com |   18 |
+----+----------+----------------+------------------+------+
10 rows in set (0.00 sec)mysql> UPDATE user SET age=5;
Query OK, 10 rows affected (0.06 sec)
Rows matched: 10  Changed: 10  Warnings: 0mysql> SELECT * FROM user;
+----+----------+----------------+------------------+------+
| id | username | password       | email            | age  |
+----+----------+----------------+------------------+------+
|  1 | KING     | KING           | KING@QQ.COM      |    5 |
|  2 | QUEEN    | QUEEN          | QUEEN@QQ.COM     |    5 |
|  3 | A        | AAA            | 382771946@qq.com |    5 |
|  4 | B        | BBB            | 382771946@qq.com |    5 |
|  6 | D        | DDD            | D@QQ.COM         |    5 |
|  8 | E        | EEE            | E@QQ.COM         |    5 |
| 18 | F        | FFF            | F@QQ.COM         |    5 |
| 55 | C        | CCC            | CCC@QQ.COM       |    5 |
| 98 | test     | this is a test | 123@qq.com       |    5 |
| 99 | maizi    | maizixueyuan   | 382771946@qq.com |    5 |
+----+----------+----------------+------------------+------+
10 rows in set (0.00 sec)

删除数据

1.不清空自增长的值:
DELETE tbl_name字段名称=值【WHERE条件】【ORDER BY字段名称】【LIMIT限制条数]

mysql> DELETE FROM testUser ;
Query OK, 10 rows affected (0.07 sec)

(2)彻底清空数据表(清空自增长的值):
TRUNCATE [TABLE] tbl_name

mysql> TRUNCATE TABLE user;
Query OK, 0 rows affected (0.32 sec)``

查询

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
1)SELECT select_expr [, select_expr …]
[
FROM table_references
[WHERE 条件]
[GROUP BY {col_name | position} [ASC| DESC], … 分组]
[HAVING 条件 对分组结果进行二次筛选]
[ORDER BY {col_name | position} [ASC| DESC], …排序]
[LIMIT 限制显示条数]
]
2)查询表方式
【1】每一个表达式表示想要的一列,必须至少有一列,多个列之间以逗号分隔

mysql> SELECT username,id,role FROM cms_admin;
+----------+----+-----------------+
| username | id | role            |
+----------+----+-----------------+
| admin    |  1 | 超级管理员      |
| king     |  2 | 普通管理员      |
| 麦子     |  3 | 普通管理员      |
| queen    |  4 | 普通管理员      |
| test     |  5 | 普通管理员      |
+----------+----+-----------------+
5 rows in set (0.00 sec)

【2】* 表示所有列,tbl_name.*可以表示命名的所有列

mysql> SELECT cms_admin.* FROM cms_admin;
+----+----------+----------+--------------+-----------------+
| id | username | password | email        | role            |
+----+----------+----------+--------------+-----------------+
|  1 | admin    | admin    | admin@qq.com | 超级管理员      |
|  2 | king     | king     | admin@qq.com | 普通管理员      |
|  3 | 麦子     | maizi    | admin@qq.com | 普通管理员      |
|  4 | queen    | queen    | admin@qq.com | 普通管理员      |
|  5 | test     | test     | admin@qq.com | 普通管理员      |
+----+----------+----------+--------------+-----------------+
5 rows in set (0.03 sec)

【3】查询表达式可以用 [AS]alias_name为其赋予别名

mysql> SELECT id,username FROM cms_admin AS a;
+----+----------+
| id | username |
+----+----------+
|  1 | admin    |
|  2 | king     |
|  4 | queen    |
|  5 | test     |
|  3 | 麦子     |
+----+----------+
5 rows in set (0.00 sec)

查询范围:WHERE条件

在这里插入图片描述

模糊查询

(1)%表示0个或1个或多个任意字符
(2)_表示一个任意字符
在这里插入图片描述

GROUP BY 分组

(1)单独使用,只显示组中第一条记录

mysql> SELECT * FROM cms_user GROUP BY proId;
+----+-----------+--------------+-------------+------------+----------+-------+------+
| id | username  | password     | email       | regTime    | face     | proId | age  |
+----+-----------+--------------+-------------+------------+----------+-------+------+
|  1 | 张三      | zhangsan     | user@qq.com | 1419811708 | user.jpg |     1 |   18 |
|  2 | 张三丰    | zhangsanfeng | user@qq.com | 1419812708 | user.jpg |     2 |   18 |
|  3 | 章子怡    | zhangsan     | user@qq.com | 1419813708 | user.jpg |     3 |   18 |
|  4 | long      | long         | user@qq.com | 1419814708 | user.jpg |     4 |   18 |
|  7 | king      | king         | user@qq.com | 1419817708 | user.jpg |     5 |   18 |
+----+-----------+--------------+-------------+------------+----------+-------+------+
5 rows in set (0.31 sec)

2.配合GROUP_CONTACE()得到分组详情

mysql> SELECT id,sex,GROUP_CONCAT(username) FROM cms_user GROUP BY sex;
+----+--------+---------------------------------+
| id | sex    | GROUP_CONCAT(username)          |
+----+--------+---------------------------------+
|  1 || 张三,rose,king,ring,章子怡      |
|  4 || long,queen,blek,张三丰,lily     |
| 11 | 保密   | john,test1                      |
+----+--------+---------------------------------+
3 rows in set (0.07 sec)

3.配合聚合函数
1.count()

mysql> SELECT id,sex,GROUP_CONCAT(username)AS users,COUNT(*) AS totalUsers FROM cms_user GROUP BY sex;
+----+--------+---------------------------------+------------+
| id | sex    | users                           | totalUsers |
+----+--------+---------------------------------+------------+
|  1 || 张三,rose,king,ring,章子怡      |          5 |
|  4 || long,queen,blek,张三丰,lily     |          5 |
| 11 | 保密   | john,test1                      |          2 |
+----+--------+---------------------------------+------------+
3 rows in set (0.02 sec)

【2】MAX()
【3】MIN()
【4】AVG()
【5】SUM()

4.配合WITH ROLLUP记录上面所有记录的综合

mysql> SELECT id,sex,GROUP_CONCAT(username),-> COUNT(*) AS totalUsers,-> MAX(age) AS max_age,-> MIN(age) AS min_age,-> AVG(age) AS avg_age,-> SUM(age) AS sum_age-> FROM cms_user-> GROUP BY sex WITH ROLLUP;
+----+--------+---------------------------------------------------------------------------+------------+---------+---------+---------+---------+
| id | sex    | GROUP_CONCAT(username)                                                    | totalUsers | max_age | min_age | avg_age | sum_age |
+----+--------+---------------------------------------------------------------------------+------------+---------+---------+---------+---------+
|  1 || 张三,rose,king,ring,章子怡                                                |          5 |      56 |      11 | 27.4000 |     137 |
|  4 || long,queen,blek,张三丰,lily                                               |          5 |      88 |      21 | 52.4000 |     262 |
| 11 | 保密   | john,test1                                                                |          2 |      65 |      65 | 65.0000 |      65 |
| 11 | NULL   | 张三,rose,king,ring,章子怡,long,queen,blek,张三丰,lily,john,test1         |         12 |      88 |      11 | 42.1818 |     464 |
+----+--------+---------------------------------------------------------------------------+------------+---------+---------+---------+---------+
4 rows in set (0.00 sec)

5.HAVING子句,对分组记录结果进行二次筛选(只能使用在分组之后)

mysql> SELECT sex,GROUP_CONCAT(username) AS users,-> COUNT(*) AS totalUsers,-> MAX(age) AS max_age,-> SUM(age) AS sum_age-> FROM cms_user -> GROUP BY sex-> HAVING COUNT(*)>2 AND MAX(age)>60;
+------+--------------------------------+------------+---------+---------+
| sex  | users                          | totalUsers | max_age | sum_age |
+------+--------------------------------+------------+---------+---------+
|| long,queen,blek,张三丰,lily    |          5 |      88 |     262 |
+------+--------------------------------+------------+---------+---------+
1 row in set (0.00 sec)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/467835.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oc51--循环retain

// main.m // 循环retain#import <Foundation/Foundation.h> #import "Person.h" #import "Dog.h"int main(int argc, const char * argv[]) {Person *p [Person new];Dog *d [Dog new];// 如果A对用要拥有B对象, 而B对应又要拥有A对象, 此时会形…

中resource文件夹的作用_冲突与碰撞:OpenStack中的虚拟机和裸机

冲突与碰撞&#xff1a;OpenStack中的虚拟机和裸机要虚拟化还是非虚拟化&#xff1f;如果您追求性能&#xff0c;那么就没有争议——裸机仍然胜过虚拟机&#xff1b;特别是对于I/O密集型应用程序。但是&#xff0c;除非您可以保证充分利用它&#xff0c;否则是有代价的。在本文…

看看大神是如何计算32位数中‘1’的个数

偶然看到一份代码&#xff0c;代码是计算一个int数中 ‘1’ 的个数的&#xff0c;当然&#xff0c;可能这不是什么值得讨论的事情&#xff0c;但如果你看看大神如何写这段代码的&#xff0c;就觉得这个是一个需要了解的知识。int count_bits(int x) {register int xxx;xxxx-((…

MySQL运算符,函数,索引,图形化管理工具

文章目录运算符算术运算符比较运算符逻辑运算符MySQL运算符数字函数字符串函数日期时间函数条件函数系统信息函数加密函数其他常用函数MySQL索引索引的概念索引的分类创建索引创建表时创建索引在已经存在的表上创建索引删除索引MySQL图形化管理工具PHPMyAdminSQLyog运算符 算术…

python list存储方式_python list存储

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里技术人对外发布原创技术内容的最大平台&…

Linux下的gpio,gpiod

GPIO 应该是每个嵌入式设备都避免不了的。最近在做项目的时候&#xff0c;也遇到这方面的问题&#xff0c;所以简单总结一下现在内核里面多了gpiod的来控制gpio口&#xff0c;相对于原来的形式&#xff0c;使用gpiod的好处是我们申请后不进行free也没有什么问题。但是你要是使用…

剖析大神代码,计算整型里面1的个数

昨天的文章&#xff0c;可能很多人看了不知道怎么回事&#xff0c;确实&#xff0c;我也是看了之后一头雾水。先给出个简单的例子#include "stdio.h"int count_bits4(char x) {x (x&0x55) ((x>>1)&0x55);x (x&0x33) ((x>>2)&0x33);x…

android 复制u盘文件到手机本地_如何导出Android中的文件(把Android当做U盘)

方法一&#xff1a;1. 连接USB,插入电脑2.用手在手机上方往下滑动&#xff0c;会出现几个菜单&#xff0c;其中有一个"choose a connection type". 选择 Disk Drive.你看到的也许是&#xff0c;Charge only, 点击切换到Disk Drive.3.这时你的电脑上就会出现USB标志的…

机器学习导论 与数学分析

文章目录机器学习定义说人话例子专家系统 定义好&#xff0c; 应招&#xff0c;速度快机器学习 实验 奖惩 调参对象任务 TASK T一个或多个经验 EXPERIENCE性能PERFORMANCE类比人类学习监督学习半监督学习无监督学习增强学习可解决问题不可解决问题举例f&#xff08;x&#xff0…

聊聊、Highcharts 动态数据

最近项目中需要用到图表&#xff0c;找了几个开源框架&#xff0c;最后选择 Highcharts&#xff0c;原因是 Highcharts 功能强大&#xff0c;稳定&#xff0c;方便&#xff0c;而且开源&#xff0c;社区比较成熟。 首先下载 Highcharts&#xff0c;导入项目。 在 HTML 页面引入…

你知道用git打补丁吗?

#常规操作一个常规的使用git 生成补丁的方式git diff ./ > xxx.patch patch -p1 < xxx.patch但是这样生成的补丁有一个问题&#xff0c;这个是差分形式的diff --git a/kernel-4.4/drivers/input/touchscreen/goodix.c b/kernel-4.4/drivers/input/touchscreen/goodix.c i…

windows 禁用ipv6服务_Win10如何关闭IPV6?Win10禁用IPv6的方法

在Win10系统中默认开启IPV6&#xff0c;不过这个协议暂时我们还用不到。而且开启该协议有时对系统运行有一定的影响&#xff0c;一些网卡还会因为IPv6出现系统未响应&#xff0c;假死等情况&#xff0c;那么Win10系统怎么关闭IPV6&#xff1f;下面小编就给大家带来Win10禁用IPv…

概率论与贝叶斯先验

文章目录概率论与贝叶斯先验概率论基础问题代码图像本福特定律应用&#xff1a;公路堵车模型代码模型初速不同&#xff1a;影响不大减速概率&#xff1a;影响大应用&#xff1a;商品推荐解答概率公式应用样本贝叶斯公式分布两点分布二项分布泊松分布期望和方差表示强度应用均匀…

vue项目导入外部css样式和js文件

转自&#xff1a;http://blog.csdn.net/xiejunna/article/details/54943957 css文件放入static文件夹下。 转载于:https://www.cnblogs.com/ourLifes/p/7444074.html

Linux内核0.12完全注释

推荐一本书 Linux 0.12内核完全注释 先把麻雀解剖了&#xff0c;再去研究老鹰和飞机可能会更好。现在市面的很多书籍都是基于比较新的内核讲解的&#xff0c;2.6的内核或者4.4的内核&#xff0c;因为内核版本越高&#xff0c;里面的东西就越多&#xff0c;想要讲解明白就需要花…

iangularjs 模板,AngularJS模板中的三元运算符

How do you do a ternary with AngularJS (in the templates)?It would be nice to use some in html attributes (classes and style) instead of creating and calling a function of the controller.解决方案Update: Angular 1.1.5 added a ternary operator, so now we ca…

矩阵和线性代数

文章目录矩阵和线性代数矩阵SVD提法举例推导代码分解效果方阵行列式范德蒙行列式作用代数余子式伴随矩阵方阵的逆矩阵乘法模型举例概率转移矩阵平稳分布&#xff1a;向量乘法矩阵的秩秩与方程组的解推论向量组等价系数矩阵对CAB重认识正交阵特征值和特征向量性质不同特征值对应…

对比一段ADC键值读取的代码

最近接触到的一个代码&#xff0c;这个代码看起来很简单&#xff0c;但是却蕴藏了人类的智慧与结晶。正是这些不断产生的智慧与结晶&#xff0c;让我们的电子产品越来越稳定&#xff0c;越来越智能。周五了&#xff0c;评论文章&#xff0c;选两个同学赠送书籍《Linux内核完全剖…

HTML5权威指南 11.通信API

1 <!DOCTYPE html>2 <html>3 4 <head>5 <meta charset"UTF-8">6 <title></title>7 <script type"text/javascript">8 //&#xff08;1&#xff09;监听message事件9 window.addEve…

在线登记系统代码 php_PHP框架实现WebSocket在线聊天通讯系统

ThinkPHP使用Swoole需要安装think-swooleComposer包&#xff0c;前提系统已经安装好了SwoolePECL拓展tp5的项目根目录下执行composer命令安装think-swoole&#xff1a;composerrequiretopthink/think-swoole话不多说&#xff0c;直接上代码&#xff1a;新建WebSocket.php控制器…