-- 数据库和数据表的操作 --
-- 查询所有数据库
SHOW DATABASES;
-- 查询正在使用的数据库
SELECT DATABASE();
-- 查询某个数据库的创建
SHOW CREATE DATABASE db3;
-- 创建一个数据库db1
CREATE DATABASE db1;
-- 创建一个数据库db2,如果不存在则创建
CREATE DATABASE IF NOT EXISTS db2;
-- 创建一个数据库db3,如果不存在则创建。并指定字符集为gbk
CREATE DATABASE IF NOT EXISTS db3 CHARACTER SET gbk;
-- 将db3数据的字符集修改为utf8
ALTER DATABASE db3 CHARACTER SET utf8;
-- 使用某个数据库
USE itheima1;
-- 查看当前正在使用的数据库
SELECT DATABASE();
-- 删除数据库db1
DROP DATABASE db1;
-- 删除数据库db2,如果存在则删除
DROP DATABASE IF EXISTS db2;
-- 查询mysql数据库中的所有表
SHOW TABLES;
-- 查看某个表的结构
DESC users;
/*
创建一个数据库:itheima1
在itheima1数据库中创建一个student表
字段:
id 编号
name 名称
age 年龄
score 分数
birthday 生日
create_time 创建时间
*/
CREATE DATABASE itheima1;
USE itheima1;
CREATE TABLE student(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(30) NOT NULL,
age INT NOT NULL,
score DOUBLE,
birthday DATE,
create_time TIMESTAMP
);
DESC student;
-- 复制student表,到stu表
CREATE TABLE stu LIKE student;
-- 删除stu表
DROP TABLE stu;
-- insert into stu values (null,'张三',23,85,'1990-10-10',null);
-- 摧毁表,将表删除,按照创建时的规则重新创建
TRUNCATE stu;
-- 修改stu数据表字符集为gbk
ALTER TABLE stu CHARACTER SET gbk;
-- 修改stu数据表为stu2
ALTER TABLE stu RENAME stu2;
-- 修改stu2数据表为stu
ALTER TABLE stu2 RENAME stu;
-- 在stu数据表中添加一个tel列 数据类型为varchar
ALTER TABLE stu ADD tel VARCHAR(20) NOT NULL;
-- 将stu数据表中的tel列数据类型修改为int
ALTER TABLE stu MODIFY tel INT NOT NULL;
-- 将stu数据表中的tel列修改为phone,数据类型为varchar
ALTER TABLE stu CHANGE tel phone VARCHAR(30) NOT NULL;
-- 将stu表中的phone列删除
ALTER TABLE stu DROP phone;
DESC stu;
-- 数据增删改操作 --
CREATE DATABASE db1;
USE db1;
CREATE TABLE stu(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(30) NOT NULL,
age INT NOT NULL,
score DOUBLE,
birthday DATE,
create_time TIMESTAMP
);
/*
添加
*/
-- 添加数据完整格式
INSERT INTO stu (id,NAME,age,score,birthday,create_time) VALUES (1,'张三',23,85,'1990-10-10',NULL);
-- 添加数据简化格式
INSERT INTO stu VALUES (2,'李四',24,95,'1992-02-02',NULL);
-- 傻瓜式批量添加数据
INSERT INTO stu VALUES (2,'李四',24,95,'1992-02-02',NULL);
INSERT INTO stu VALUES (3,'王五',25,75,'1993-03-03',NULL);
INSERT INTO stu VALUES (4,'赵六',26,65,'1994-12-06',NULL);
-- 优化式批量添加数据
INSERT INTO stu VALUES (5,'周七',27,80,'1993-12-06',NULL),
(6,'李老八',22,83,'1998-05-06',NULL),
(7,'张老九',19,76,'1996-08-06',NULL);
/*
删除
*/
-- 将姓名为张老九的记录删除
DELETE FROM stu WHERE NAME='张老九';
-- 将姓名为赵六、并且年龄为26的记录删除
DELETE FROM stu WHERE NAME='赵六' AND age=26;
-- 将出生日期在:1992-01-01 -- 1993-12-31 的人全部删除
DELETE FROM stu WHERE birthday>='1992-01-01' AND birthday<='1993-12-31';
/*
修改
*/
-- 将王五的成绩修改为100
UPDATE stu SET score=100 WHERE NAME='王五';
-- 将周七的年龄修改为37,并且将成绩修改为99
UPDATE stu SET age=37,score=99 WHERE NAME='周七';
-- 将年龄在23岁--25岁之间的学员成绩全部修改为60分
UPDATE stu SET score=60 WHERE age >= 23 AND age <= 25;
-- 数据的查询操作--
-- 查询所有表数据
SELECT * FROM stu;
-- 创建表
CREATE TABLE student (
id INT, -- 编号
NAME VARCHAR(20), -- 姓名
age INT, -- 年龄
sex VARCHAR(5), -- 性别
address VARCHAR(100), -- 地址
math INT, -- 数学
english INT -- 英语
);
-- 插入数据
INSERT INTO student(id,NAME,age,sex,address,math,english) VALUES
(1,'马云',55,'男','杭州',66,78),
(2,'马化腾',45,'女','深圳',98,87),
(3,'马景涛',55,'男','香港',56,77),
(4,'柳岩',20,'女','湖南',76,65),
(5,'柳青',20,'男','湖南',86,NULL),
(6,'刘德华',57,'男','香港',99,99),
(7,'马德',22,'女','香港',99,99),
(8,'德玛西亚',18,'男','南京',56,65);
-- 查询地址字段。
SELECT address FROM student;
-- 查询地址字段,去除重复值
SELECT DISTINCT address FROM student;
-- 查询每个人的分数总和,如果某个分数是null,视为0
SELECT NAME,math,english,IFNULL(math,0) + IFNULL(english,0) AS 'sum' FROM student;
-- 查询年龄大于20岁
SELECT * FROM student WHERE age > 20;
SELECT * FROM student WHERE age >= 20;
-- 查询年龄等于20岁
SELECT * FROM student WHERE age = 20;
-- 查询年龄不等于20岁
SELECT * FROM student WHERE age != 20;
SELECT * FROM student WHERE age <> 20;
-- 查询年龄大于等于20 小于等于30
SELECT * FROM student WHERE age >= 20 && age <=30;
SELECT * FROM student WHERE age >= 20 AND age <=30;
SELECT * FROM student WHERE age BETWEEN 20 AND 30;
-- 查询年龄22岁,18岁,25岁的信息
SELECT * FROM student WHERE age = 22 OR age = 18 OR age = 25;
SELECT * FROM student WHERE age IN (22,18,25);
-- 查询英语成绩为null
SELECT * FROM student WHERE english = NULL; -- 不对的。null值不能使用 = (!=) 判断
SELECT * FROM student WHERE english IS NULL;
-- 查询英语成绩不为null
SELECT * FROM student WHERE english IS NOT NULL;
-- 查询姓马的有哪些? like
SELECT * FROM student WHERE NAME LIKE '马%';
-- 查询姓名第二个字是化的人
SELECT * FROM student WHERE NAME LIKE "_化%";
-- 查询姓名是4个字的人
SELECT * FROM student WHERE NAME LIKE '____';
-- 查询姓名中包含德的人
SELECT * FROM student WHERE NAME LIKE '%德%';