[收藏]MySQL常用操作
程序员文章站
2022-03-03 17:23:12
...
数据库操作
-- 查看已存在的数据库, 切换当前使用的数据库
SHOW DATABASES;
-- 创建db_test数据库
CREATE DATABASE IF NOT EXISTS db_test;
-- 切换选择数据库
USE db_test;
-- 删除db_test数据库
DROP DATABASE IF EXISTS db_test;
数据表操作
通用语法: CREATE TABLE table_name (column_name column_type);
CREATE TABLE <表名> (
<字段名> <字段类型> <限定词>,
<主键>,
...
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- 查看当前数据库中的表
SHOW TABLES;
-- 创建表
CREATE TABLE IF NOT EXISTS `user` (
`id` INT UNSIGNED AUTO_INCREMENT,
`name` VARCHAR(100) NOT NULL,
`gender` VARCHAR(40) NOT NULL,
`date` DATE,
PRIMARY KEY (`id`)
) ENGINE = INNODB CHARSET = utf8;
-- 根据现有的表(orig_tbl) 创建新的表(new_tbl)
CREATE TABLE new_tbl LIKE orig_tbl;
-- 根据现有的表(orig_tbl) 创建新的表(new_tbl) 并把查询结果作为新表的数据
CREATE TABLE new_tbl AS SELECT * FROM orig_tbl;
-- 查看表结构,
DESC t_user;
SHOW COLUMNS FROM t_user
/*
+--------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(100) | NO | | NULL | |
| gender | varchar(40) | NO | | NULL | |
| date | date | YES | | NULL | |
+--------+------------------+------+-----+---------+----------------+ */
-- 删除数据表
DROP TABLE table_name;
- 非空
NOT NULL
- 自动增长
AUTO_INCREMENT
- 定义主键
PRIMARY KEY
-
ENGINE
设置存储引擎 -
CHARSET
设置编码 -
DEFAULT
默认值
数据增、删、改、查
-- 指定列名添加数据
INSERT INTO `user` (NAME, gender, date)
VALUES
('xiaoqiang', 'male', curdate());
-- 不指定列名添加数据
INSERT INTO `user`
VALUES
( 1, 'Edwin', 'male', now( ) );
-- 数据查询
SELECT column_name,column_name
FROM table_name
[WHERE Clause]
[LIMIT N][ OFFSET M]
-- 更新数据
UPDATE table_name SET field1=new-value1, field2=new-value2 [WHERE Clause];
-- 删除数据
DELETE FROM table_name [WHERE Clause];
-- 清空表中的数据
TRUNCATE [TABLE] table_name;
DELETE 语句可以通过 WHERE 对要删除的记录进行选择。而使用 TRUNCATE TABLE 将删除表中的所有记录。因此,DELETE 语句更灵活。
表结构修改
-- 查看表结构
DESC table_name;
-- 表重命名
ALTER TABLE user RENAME t_user;
-- 修改列名(注意: 要指定列数据类型)
ALTER TABLE `user` CHANGE COLUMN `id` `uid` int(10) UNSIGNED;
-- 需改列数据类型
ALTER TABLE `user` CHANGE COLUMN `id` `id` int(10) UNSIGNED;
-- 删除列
ALTER TABLE `user` DROP COLUMN `comment`;
-- 添加列
ALTER TABLE `user` ADD COLUMN `createTime` DATE DEFAULT '2019-04-02' AFTER `name`;
-- 调整字段顺序
ALTER TABLE `user` CHANGE `nickName` int not null DEFAULT 'HAHAHA' AFTER `id`;
实战练习1
/**
项目三:超过5名学生的课(难度:简单)
创建如下所示的courses 表 ,有: student (学生) 和 class (课程)。
*/
-- 1. 创建表
CREATE TABLE courses (
`student` VARCHAR(10) NOT NULL,
`class` VARCHAR(60)
);
-- 2. 插入数据
INSERT INTO courses(student, class) VALUES('A', 'Math');
INSERT INTO courses(student, class) VALUES('B', 'English');
INSERT INTO courses(student, class) VALUES('C', 'Math');
INSERT INTO courses(student, class) VALUES('D', 'Biology');
INSERT INTO courses(student, class) VALUES('E', 'Math');
INSERT INTO courses(student, class) VALUES('F', 'Computer');
INSERT INTO courses(student, class) VALUES('G', 'Math');
INSERT INTO courses(student, class) VALUES('H', 'Math');
INSERT INTO courses(student, class) VALUES('I', 'Math');
INSERT INTO courses(student, class) VALUES('A', 'Math');
-- 3. 条件查询
/*要求:
列出所有超过或等于5名学生的课。
学生在每个课中不应被重复计算。*/
SELECT
class
FROM
( SELECT student, class FROM courses GROUP BY student, class ) AS filter_table
GROUP BY
class
HAVING
count( class ) >= 5;