常用SQL命令
- INSERT INTO - 向数据库中插入新数据
- DELETE - 从数据库中删除数据
- UPDATE - 更新数据库中的数据
- SELECT - 从数据库中提取数据
- CREATE DATABASE - 创建新数据库
- ALTER DATABASE - 修改数据库
- CREATE TABLE - 创建新表
- ALTER TABLE - 变更(改变)数据库表
- DROP TABLE - 删除表
- CREATE INDEX - 创建索引(搜索键)
- DROP INDEX - 删除索引
增删改查
增:NSERT INTO 语句
INSERT INTO 语句用于向表中插入新记录。
语法:
INSERT INTO 语句可以有两种编写形式。
第一种形式无需指定要插入数据的列名,只需提供被插入的值即可:
INSERT INTO table_name
VALUES (value1,value2,value3,...);
第二种形式需要指定列名及被插入的值:
INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);
删:DELETE 语句
DELETE 语句用于删除表中的行。
语法:
DELETE FROM table_name
WHERE some_column=some_value;
改:UPDATE 语句
UPDATE 语句用于更新表中已存在的记录。
语法:
UPDATE table_name
SET column1=value1,column2=value2,...
WHERE some_column=some_value;
查:SELECT 语句
SELECT 语句用于从数据库中选取数据。
结果被存储在一个结果表中,称为结果集。
语法:
SELECT column_name,column_name
FROM table_name;
和
SELECT * FROM table_name;
SQL SELECT DISTINCT 语句
在表中,一个列可能会包含多个重复值,有时您也许希望仅仅列出不同(distinct)的值。
DISTINCT 关键词用于返回唯一不同的值。
语法:
SELECT DISTINCT column_name,column_name
FROM table_name;
条件语句
WHERE 子句
WHERE 子句用于提取那些满足指定条件的记录。
语法:
SELECT column_name,column_name
FROM table_name
WHERE column_name operator value;
AND & OR 运算符
AND & OR 运算符用于基于一个以上的条件对记录进行过滤。
如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。
如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。
ORDER BY 关键字
ORDER BY 关键字用于对结果集进行排序。
ORDER BY 关键字用于对结果集按照一个列或者多个列进行排序。
ORDER BY 关键字默认按照升序对记录进行排序。如果需要按照降序对记录进行排序,您可以使用 DESC 关键字。
语法:
SELECT column_name,column_name
FROM table_name
ORDER BY column_name,column_name ASC|DESC;
数据库操作
CREATE DATABASE 语句
CREATE DATABASE 语句用于创建数据库。
语法:
CREATE DATABASE dbname;
CREATE TABLE 语句
CREATE TABLE 语句用于创建数据库中的表。
表由行和列组成,每个表都必须有个表名。
语法:
CREATE TABLE table_name
(
column_name1 data_type(size),
column_name2 data_type(size),
column_name3 data_type(size),
....
);
column_name 参数规定表中列的名称。
data_type 参数规定列的数据类型(例如 varchar、integer、decimal、date 等等)。
size 参数规定表中列的最大长度。
ALTER TABLE 语句
ALTER TABLE 语句用于在已有的表中添加、删除或修改列。
语法:
如需在表中添加列,请使用下面的语法:
ALTER TABLE table_name
ADD column_name datatype
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
ALTER TABLE table_name
DROP COLUMN column_name
DROP 语句
通过使用 DROP 语句,可以轻松地删除索引、表和数据库。
语法:
用于 MySQL 的 DROP INDEX 语法:
ALTER TABLE table_name DROP INDEX index_name
DROP TABLE 语句用于删除表。
DROP TABLE table_name
DROP DATABASE 语句用于删除数据库。
DROP DATABASE database_name
如果我们仅仅需要删除表内的数据,但并不删除表本身
请使用 TRUNCATE TABLE 语句:
TRUNCATE TABLE table_name
常用
更改MySQL数据库编码为utf8mb4
采用utf8mb4编码的好处是:存储与获取数据的时候,不用再考虑表情字符的编码与解码问题。
查看数据库编码
show variables like "%char%";
修改/etc/my.cnf
修改/etc/my.cnf,添加如下内容后重启mysql。
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
修改数据表
数据库:
查看数据库编码:
show variables like "%char%";
修改数据库编码:
alter database <数据库名> character set utf8mb4;
表:
查看表编码:
show create table <表名>;
修改表编码:
alter table <表名> character set utf8mb4;
字段:
查看字段编码
show full columns from <表名>;
修改字段编码:
ALTER TABLE <表名> MODIFY COLUMN <字段名> <字段类型> CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE table_esp32_post MODIFY COLUMN name VARCHAR(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
例子
数据库名:db_esp32_dbmj
数据表名:table_esp32_post
字段:id
name
查看数据表编码:
mysql> SHOW CREATE TABLE table_esp32_post;
+------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| table_esp32_post | CREATE TABLE `table_esp32_post` (
`id` int(11) NOT NULL DEFAULT '0',
`name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.07 sec)
更改数据表编码:
mysql> ALTER TABLE table_esp32_post CHARACTER SET utf8mb4;
Query OK, 0 rows affected (0.05 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> SHOW CREATE TABLE table_esp32_post;
+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| table_esp32_post | CREATE TABLE `table_esp32_post` (
`id` int(11) NOT NULL DEFAULT '0',
`name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 |
+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.07 sec)
查看字段编码:
mysql> SHOW FULL COLUMNS FROM table_esp32_post;
+-------+--------------+--------------------+------+-----+---------+-------+---------------------------------+---------+
| Field | Type | Collation | Null | Key | Default | Extra | Privileges | Comment |
+-------+--------------+--------------------+------+-----+---------+-------+---------------------------------+---------+
| id | int(11) | NULL | NO | PRI | 0 | | select,insert,update,references | |
| name | varchar(128) | utf8mb4_unicode_ci | YES | | NULL | | select,insert,update,references | |
+-------+--------------+--------------------+------+-----+---------+-------+---------------------------------+---------+
2 rows in set (0.06 sec)
修改字段编码:
mysql> ALTER TABLE table_esp32_post MODIFY COLUMN name VARCHAR(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Query OK, 0 rows affected (0.08 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> SHOW FULL COLUMNS FROM table_esp32_post;
+-------+------------------+--------------------+------+-----+---------+----------------+---------------------------------+---------+
| Field | Type | Collation | Null | Key | Default | Extra | Privileges | Comment |
+-------+------------------+--------------------+------+-----+---------+----------------+---------------------------------+---------+
| id | int(11) unsigned | NULL | NO | PRI | NULL | auto_increment | select,insert,update,references | |
| name | varchar(128) | utf8mb4_unicode_ci | YES | | NULL | | select,insert,update,references | |
+-------+------------------+--------------------+------+-----+---------+----------------+---------------------------------+---------+
2 rows in set (0.07 sec)