欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

[收藏]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;
  1. 非空 NOT NULL
  2. 自动增长 AUTO_INCREMENT
  3. 定义主键 PRIMARY KEY
  4. ENGINE设置存储引擎
  5. CHARSET 设置编码
  6. 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;
相关标签: mysql