MySQL数据库基本操作
前期工作 :
mysql数据库安装完毕 ; 环境变量配置成功
(一)数据库操作
调出CMD , 输入 : mysql -u root -p password : ***** --> 进入数据库环境下
1.SHOW DATABASES; ---查看已存在的数据库
2.CREATE DATABASE IF NOT EXISTS db[数据库名称] ---创建数据库db
3.DROP DATABASE db[数据库名称] ---删除数据库db
4.USE db[数据库名称] ---进入数据库db
(二)数据表操作
SHOW TABLES ---查看数据库中的数据表
SHOW CREATE TABLE tb[表名称] ---查看数据表创建信息
DESC tb[表名称] ---查看表结构
DROP TABLE tb[表名称] ---删除数据表
创建表结构
CREATE TABLE IF NOT EXISTS tb(
userid TINYINT UNSIGNED KEY AUTO_INCREMENT,
name VARCHAR(10) NOT NULL,
sex ENUM('男','女','保密') DEFAULT '男',
hobby SET('a','b','c'),
birth YEAR,
score FLOAT
)AUTO_INCREMENT=10 ENGINE=INNODB CHARSET=UTF8;
基本格式 :
CREATE TABLE IF NOT EXISTS tb[表名称](
字段名称1 字段类型 完整性约束条件 ,
字段名称2 字段类型 完整性约束条件 ,
字段名称3 字段类型 完整性约束条件 ,
...
)ENGINE=INNODB CHARSET=UTF-8;
其中:
字段类型(常用) : CHAR + VARCHAR + INT[UNSIGNED] + TINYINT[UNSIGNED] + ENUM + SET + YEAR + FLOAT等
完整性约束(常用) : PRIMARY KEY(主键) + NOT NULL(非空) + DEFAULT(默认值) + FOREIGN KEY(外键) + UNIQUE(唯一值)
修改表结构
1.修改表名
ALTER TABLE tb RENAME ntb ---将表名tb修改为ntb(注意:MySQL不区分大小写,即tb == TB)
2.设置主键
CREATE TABLE IF NOT EXISTS tb(
id TINYINT UNSIGNED,
name VARCHAR(10)
);
ALTER TABLE tb ADD PRIMARY KEY([字段名称]); ---添加主键
ALTER TABLE tb DROP PRIMARY KEY; ---删除主键
3.设置默认值
CREATE TABLE IF NOT EXISTS tb(
id TINYINT UNSIGNED,
name VARCHAR(10)
);
ALTER TABLE tb ALTER [字段名称] SET DEFAULT [默认值] ; ---添加默认值
ALTER TABLE tb ALTER [字段名称] DROP DEFAULT; ---删除默认值
4.设置唯一
CREATE TABLE IF NOT EXISTS tb(
id TINYINT UNSIGNED,
name VARCHAR(10)
);
ALTER TABLE tb ADD UNIQUE(字段名称); ---添加唯一值
ALTER TABLE tb DROP INDEX [字段名称]; ---删除唯一值
添加/删除/修改字段
ALTER TABLE tb ADD sex ENUM('男','女') DEFAULT '男'; ---添加1个字段
ALTER TABLE tb ADD hobby SET('a','b','c') NOT NULL AFTER name; ---指定位置处添加1个字段
ALTER TABLE tb ADD sex ENUM('男','女') DEFAULT '男', ---添加多个字段
ADD hobby SET('a','b','c') NOT NULL AFTER name;
_______________________________________________________________________________________________________________________
ALTER TABLE tb DROP [字段名称]; ---删除1个字段
ALTER TABLE tb DROP [字段名称1], ---删除多个字段
DROP [字段名称2];
________________________________________________________________________________________________________________________
ALTER TABLE tb MODIFY [字段名称] [字段类型] [完整性约束] ---可修改字段类型和完整性约束
_______________________________________________________________________________________________________________
插入数据
CREATE TABLE IF NOT EXISTS tb( ---创建非自增形式的数据表tb
userid TINYINT UNSIGNED KEY,
name VARCHAR(10) NOT NULL,
sex ENUM('男','女','保密') DEFAULT '男',
hobby SET('a','b','c'),
birth YEAR,
score FLOAT
)ENGINE=INNODB CHARSET=UTF8;
INSERT tb_1 VALUES(100,'m1','男','a,b,c','1994',78.5); ---插入1条数据
INSERT tb_1 VALUES(102,'m2','女','a,c','1944',85.7), ---插入多条数据
(108,'m3','女','c','2008',60.1),
(112,'m5',default,'a','1984',45);
___________________________________________________________________________________________________________________________
CREATE TABLE IF NOT EXISTS tb( ---创建自增形式的数据表tb
userid TINYINT UNSIGNED KEY AUTO_INCREMENT,
name VARCHAR(10) NOT NULL,
sex ENUM('男','女','保密') DEFAULT '男',
hobby SET('a','b','c'),
birth YEAR,
score FLOAT
)AUTO_INCREMENT=100 ENGINE=INNODB CHARSET=UTF8;
INSERT tb_2(name,sex,hobby,birth,score) VALUES(112,'m5',default,'a','1984',45); ---插入数据
(userid默认从100开始编号)
___________________________________________________________________________________________________________________________
查询数据
(1)基本语法
SELECT * FROM tb; ---查询全部字段
SELECT name,sex,score FROM tb; ---查询指定字段
SELECT name AS '姓名',sex AS '性别',score AS '得分' FROM tb; ---给字段起别名查询
(2)WHERE : 比较运算符(< > =)
SELECT * FROM tb WHERE age < 40;
(3)WHERE : 模糊查询(LIKE : _ [匹配单个字符] / % [匹配任意个字符])
SELECT * FROM tb WHERE name LIKE '张%'; ---匹配姓张的记录(可以是张/张...)
SELECT * FROM tb WHERE name LIKE '__峰'; ---匹配姓名为3个字且最后一个字为峰的记录
(3)WHERE : 区间查询(BETWEEN...AND...)
SELECT * FROM tb WHERE age BETWEEN 25 AND 40;
(4)WHERE : 范围查询(IN)
SELECT * FROM tb WHERE city IN('北京','上海','深圳');
字段排序
SELECT * FROM WHERE [条件] ORDER BY 字段名称 ASC(升序)/DESC(降序);
更新记录
UPDATE tb SET name='Hobe',age=20,from='重庆' WHERE [条件];
分组查询
SELECT [字段名称1],GROUP_CONCAT(字段名称2),COUNT(*) FROM tb GROUP BY [字段名称1];
内连接
条件: 两张表中有相同字段的数据
SELECT a.name , a.age , b.from
FROM tb_1 AS a
JOIN tb_2 AS b ON a.name = b.username;