一、数据库
1、连接数据
mysql -h 127.0.0.1 -P 3306 -u root -p
如果在服务器上登录,可以不写-h与-P。
2、显示数据库
SHOW DATABASES;
3、创建数据库
CREATE DATABASE stu;
4、删除数据库
DROP DATABASE stu;
5、使用数据库
USE stu;
6、查看数据库的连接状态
mysql> SHOW PROCESSLIST;
+----+-----------------+----------------+------+---------+-------+------------------------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+-----------------+----------------+------+---------+-------+------------------------+------------------+
| 5 | event_scheduler | localhost | NULL | Daemon | 17870 | Waiting on empty queue | NULL |
| 16 | root | localhost:2407 | stu | Query | 0 | init | SHOW PROCESSLIST |
+----+-----------------+----------------+------+---------+-------+------------------------+------------------+
2 rows in set, 1 warning (0.00 sec)
二、数据表
1、创建数据表
CREATE TABLE stuInfo(id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(50),birth DATE);
2、显示数据表
SHOW TABLES;
3、查看表的结构
DESC stuInfo;
4、显示创建表的命令
SHOW CREATE TABLE stuInfo;
输出: CREATE TABLE stuinfo
(
id
int NOT NULL AUTO_INCREMENT,
name
varchar(50) DEFAULT NULL,
birth
date DEFAULT NULL,
PRIMARY KEY (id
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
5、删除表
DROP TABLE stuInfo;
6、插入记录
- 插入记录
INSERT INTO stuInfo (name,birth) VALUES ('CFY','1993-5-10');
- 插入多条记录
INSERT INTO stuInfo (name,birth) VALUES ('CFY2','1993-5-10'),('sde','2000-9-8');
- 插入或替换,如果id相同,会删除源id的记录,然后插入新的记录
REPLACE INTO stuInfo (id,name,birth) VALUES (1,'CFY2','1993-5-10'),('sde','2000-9-8');
- 插入或更新,如果我们希望插入一条新记录(INSERT),但如果记录已经存在,就更新该记录,此时,可以使用INSERT INTO … ON DUPLICATE KEY UPDATE …语句:
mysql> SELECT * FROM stu_info;
+----+------+-------+
| id | name | birth |
+----+------+-------+
| 1 | TOM2 | NULL |
| 2 | jary | NULL |
+----+------+-------+
mysql> INSERT INTO stu_info (id,name) VALUES (1,'tom') ON DUPLICATE KEY UPDATE birth='2000-1-1';
#因为已经存在id为1的记录,所以只更新birth
mysql> SELECT * FROM stu_info;
+----+------+------------+
| id | name | birth |
+----+------+------------+
| 1 | TOM2 | 2000-01-01 |
| 2 | jary | NULL |
+----+------+------------+
- 插入或忽略,如果主键id已存在则忽略
INSERT IGNORE INTO stu_info (id,name) VALUES (1,'tom') ;
7、更新记录
UPDATE stuInfo SET name='CFY0' WHERE name='CFY';
8、删除记录
DELETE FROM stuInfo WHERE name='sde';
9、添加列
ALTER TABLE stuInfo ADD COLUMN address VARCHAR(100);
在某列后面添加列(在id后面添加列)
ALTER TABLE stuInfo ADD COLUMN class_id int AFTER id;
10、删除列
ALTER TABLE stuInfo DROP address;
11、修改列(修改数据类型)
ALTER TABLE stuInfo MODIFY address VARCHAR(200);
12、修改列(修改列名)
ALTER TABLE stuInfo CHANGE address home_address VARCHAR(210);
13、修改表名
ALTER TABLE stuInfo RENAME AS stu_info;
14、指定主键
mysql> DESC stu_info;
+-------+--------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------+------+-----+---------+-------+
| id | bigint | NO | | NULL | |
| name | text | YES | | NULL | |
+-------+--------+------+-----+---------+-------+
ALTER TABLE stu_info MODIFY id BIGINT AUTO_INCREMENT PRIMARY KEY;#指定主键,同时指定id为AUTO_INCREMENT
15、删除主键
删除主键前,如果主键有AUTO_INCREMENT,先去掉AUTO_INCREMENT
mysql> DESC stu_info;
+-------+--------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------+------+-----+---------+----------------+
| id | bigint | NO | PRI | NULL | auto_increment |
| name | text | YES | | NULL | |
+-------+--------+------+-----+---------+----------------+
2 rows in set (0.00 sec)
ALTER TABLE stu_info MODIFY id BIGINT;#删除auto_increment
ALTER TABLE stu_info DROP PRIMARY KEY;#删除主键
三、查询
查询所有
SELECT * FROM stu_info;