5.1 创建数据库
5.1.1 创建数据库的几种方法
* 创建数据库
CREATE DATASASE 数据库名;
* 判断数据库是否已经存在,不存在则创建数据库
CREATE DATABASE IF NOT EXISTS 数据库名;
* 创建数据库并指定字符集
CREATA DATABASE 数据库名 CHARACTER SET 字符集;
5.1.2 具体操作:
* 直接创建数据库db1
create database db1;
* 判断是否存在,如果不存在则创建数据库db2
create database if not exists db2;
* 创建数据库并指定字符集为gbk
create database db3 default character set gbk;
5.2 查看数据库
* 按tab键可以自动补全关键字
--、查看所有的数据库
show databases;
--、查看某个数据库的定义信息
show create database db3;
show create database db1;
5.3 修改数据库
5.3.1 修改数据库默认的字符集
ALTER DATABASE 数据库名 DEFAULT CHARACTER SET 字符集;
5.3.2 具体操作:
将db3数据库的字符集改成utf8
alter database db3 character set utf8;
5.4 删除数据库
5.4.1 删除数据库的语法
DROP DATABASE 数据库名;
5.4.2 具体操作;
* 每行SQL语句需要选中再执行,‘可以按F9’
删除db2数据库
drop database db2;
5.5 使用数据库
5.5.1 查看正在使用的数据库
SELECT DATABASE();
5.5.2 使用/切换数据库
USE 数据库名;
5.5.3 具体操作;
-- 查看正在使用的数据库
select database();
-- 改变要使用的数据库
use db4;
六、DDL操作表结构
6.1 创建表
6.1.1 创建表的格式
CREATE TABLE 表名 (
字段名 1 字段类型 1,
字段名 2 字段类型 2
);
6.2 查看表
6.2.1 查看某个数据库中的所有表
SHOW TABLES;
6.2.2 查看表结构
DESC 表名;
6.2.3 查看创建表的SQL语句
SHOW CREATE TABLE 表名;
6.2.4 具体操作
* 查看 day21 数据库中的所有表
use day21;
show tables;
* 查看 student 表的结构
desc student;
* 查看 student 的创建表 SQL 语句
show create table student;
6.3 快速创建一个表结构相同的表
6.3.1 语法
CREATE TABLE 新表名 LIKE 旧表名;
6.3.2 具体操作:
*创建 s1 表,s1 表结构和 student 表结构相同
create table s1 like student;
desc s1;
6.4 删除表
6.4.1 直接删除表
DROP TABLE 表名;
6.4.2 判断表是否存在,如果存在则删除表
DROP TABLE IF EXISTS 表名;
6.4.3 具体操作;
-- 直接删除表s1表
drop table s1;
-- 判断表是否存在并删除s1表
drop table if exists `create`;
注:与直接删除的区别
如果表不存在,不删除,存在则删除
6.5 修改表结构
6.5.1 添加表列ABC
ALTER TABLE 表名 ADD 列名 类型;
6.5.2 修改列类型MODIFY
ALTER TABLE 表名 MODIFY 列名 新的类型;
* 例:将 student 表中的 remark 字段的改成 varchar(100)
alter table student modify remark varchar(100);
6.5.3 修改列名 CHANGE
ALTER TABLE 表名 CHANGE 旧列名 新列名 类型;
6.5.4 删除列 DROP
ALTER TABLE 表名 DROP 列名;
6.5.5 修改表名
RENAME TABLE 表名 TO 新表名;
6.5.6 修改字符集character set
ALTER TABLE 表名 character set 字符集;
七、DML操作表中的数据
7.1 插入记录
INSERT [INTO] 表名 [字段名] VALUES (字段值)
INSERT INTO 表名:表示往哪张表中添加数据
(字段名 1, 字段名 2, …):要给哪些字段设置值
VALUES (值 1, 值 2, …):设置具体的值
7.1.1 插入全部字段
所有的字段名都写出来
INSERT INTO 表名 (字段名 1, 字段名 2, 字段名 3…) VALUES (值 1, 值 2, 值 3);
不写字段名
INSERT INTO 表名 VALUES (值 1, 值 2, 值 3…);
7.1.2 插入部分数据
INSERT INTO 表名 (字段名 1, 字段名 2, ...) VALUES (值 1, 值 2, ...);
注:没有添加数据的字段会使用NULL
7.2 更新表记录
UPDATE 表名 SET 列名=值 [WHERE 条件表达式]
UPDATE: 需要更新的表名
SET: 修改的列值
WHERE: 符合条件的记录才更新
你可以同时更新一个或多个字段。
你可以在 WHERE 子句中指定任何条件
7.2.1 不带条件修改数据
UPDATE 表名 SET 字段名=值; -- 修改所有的行
7.2.2 带条件修改数据
UPDATE 表名 SET 字段名=值 WHERE 字段名=值;
7.2.3 具体操作
-- 不带条件修改数据,将所有的性别改成女
update student set sex = '女';
-- 带条件修改数据,将id号为2的学生性别改成男
update student set sex='男' where id=2;
-- 一次修改多个列,把id为3的学生,年龄改成26岁,address改成北京
update student set age=26, address='北京' where id=3;
7.3 删除表记录
DELETE FROM 表名 [WHERE 条件表达式]
如果没有指定 WHERE 子句,MySQL 表中的所有记录将被删除。
你可以在 WHERE 子句中指定任何条件
7.3.1 不带条件删除数据
DELETE FROM 表名;
7.3.2 带条件删除数据
DELETE FROM 表名 WHERE 字段名=值;
7.3.3 使用truncate删除表中所有记录
TRUNCATE TABLE 表名;
7.3.4 truncate和delete的区别:
truncate 相当于删除表的结构,再创建一张表。
7.3.5 具体操作
-- 带条件删除数据,删除id为1的记录
delete from student where id=1;
-- 不带条件删除数据,删除表中的所有数据
delete from student;
八、DQL查询表中的数据
-- 查询不会对数据库中的数据进行修改.只是一种显示数据的方式
SELECT 列名 FROM 表名 [WHERE 条件表达式]
1) SELECT 命令可以读取一行或者多行记录。
2) 你可以使用星号(*)来代替其他字段,SELECT 语句会返回表的所有字段数据
3) 你可以使用 WHERE 语句来包含任何条件。
8.1 简单查询
8.1.1 查询表所有行和列的数据
使用*表示所有列
SELECT * FROM 表名;
8.1.2 查询指定列
* 查询指定列的数据,多个列之间以逗号分隔
SELECT 字段名 1, 字段名 2, 字段名 3, ... FROM 表名;
* 查询 student 表中的 name 和 age 列
select name,age from student;
8.2 指定列的别名进行查询
8.2.1 使用关键字
* 使用别名的好处: 显示的时候使用新的名字,并不修改表的结构。
8.2.2 语法:
* 对列指定别名
SELECT 字段名 1 AS 别名, 字段名 2 AS 别名... FROM 表名;
* 对列和表同时指定别名
SELECT 字段名 1 AS 别名, 字段名 2 AS 别名... FROM 表名 AS 表别名;
注:表使用别名的原因:用于多表查询操作
8.3 清除重复值
8.3.1 查询指定列并且结果不出现重复数据
SELECT DISTINCT 字段名 FROM 表名;
8.4 查询结果参与运算
8.4.1 某列数据和固定值运算
SELECT 列名 1 + 固定值 FROM 表名;
8.4.2 某列数据和其他列数据参与运算
SELECT 列名 1 + 列名 2 FROM 表名;
*注: 参与运算的必须是数值类型
8.5 条件查询
8.5.1 为什么要条件查询
如果没有查询条件,则每次查询所有的行。实际应用中,一般要指定查询的条件。对记录进行过滤。
8.5.2 条件查询的语法
SELECT 字段名 FROM 表名 WHERE 条件;
流程:取出表中的每条数据,满足条件的记录就返回,不满足条件的记录不返回
* 逻辑运算符
and 或 && 【与,SQL 中建议使用前者,后者并不通用】
or 或 || 【或】
not 或 ! 【非】
* in 关键字
SELECT 字段名 FROM 表名 WHERE 字段 in (数据 1, 数据 2...);
in 里面的每个数据都会作为一次条件,只要满足条件的就会显示
* 范围查询
BETWEEN 值 1 AND 值 2
表示从值 1 到值 2 范围,包头又包尾
比如:age BETWEEN 80 AND 100 相当于: age>=80 && age<=100
例:查询 english 成绩大于等于 75,且小于等于 90 的学生
select * from student3 where english between 75 and 90;
* like 关键字
LIKE 表示模糊查询
SELECT * FROM 表名 WHERE 字段名 LIKE '通配符字符串';
* MySQL 通配符
% 匹配任意多个字符串
- 匹配一个字符
例:-- 查询姓马的学生
select * from student3 where name like '马%';
select * from student3 where name like '马';