一、MySQL的基本使用
1.1 命令行下的基本操作
mysql -u 用户名 -p 回车
输入密码:xxx
进入数据库
(mysql中所有的命令以分号结束,输入help;查询所有的mysql命令)
1.2 MySQL目录结构
bin: 所有的可执行文件exe
MySQLInstanceConfig.exe 服务器配置向导的文件
data: 系统数据库和自带的演示数据库的文件
my.ini 配置好的文件文件
1.3数据库服务器、数据库和表的关系
**
二、SQL语句的四种类型
2.1 DDL (Data Definition Language)
数据定义语言,用于创建表、创建库。如:create/alter/drop
2.2 DML(Data Manipulation Language)
数据操纵语言,对数据进行增删改操作。如:insert/update/delete
2.3 DQL (Data Query Language)
数据查询语言,对数据进行查询操作。如:select/show
2.4 DCL (Data Control Language)
数据控制语言,grant/revoke 对用户进行管理
2.5 MySQL 中的三种注释:
1) – 单行注释 –
2)/* 多行注释 */
3)# 单行注释,不建议这种,只在mysql起作用
**
三、MySQL 管理数据库
//3.1 查看所有数据库
show databases;
//3.2 创建数据库
create database db1;
// 3.2.1 指定默认字符集为GBK
create database db2 default character set gbk;
//3.3 查看数据库的创建语句
show create database db1;
3.4 校对规则
3.4.1 什么是校对规则
字符集:一个语言的所有字符的编码表,每个字符都对应了一个编码。
校对规则:同一个字符集可以有多个校对规则,不同的校对规则排序方式不一样。
校对规则 作用
utf8_general_ci 忽略大小写进行排序,如:a B c D 排序顺序
utf8_bin 使用二进制编码进行排序,如:B D a c
3.4.2 查看字符集和校对规则:
查看所有的字符集
显示 GBK 字符集的校对规则
3.4.3 指定数据库的默认字符集为gbk和校对规则gbk_chinese_ci
create database db3 default character set gbk collate gbk_chinese_ci;
3.5 删除数据库
drop database db3;
3.6 修改数据库默认字符集,将db3的字符集改成utf8
alter database db3 default character set utf8;
**
四、表的管理
4.1 查询所有表
use db1; --进入数据库
show tables; --显示当前数据库中所有表
4.2 创建表 create
//创建一个学生表
create table student(
id int,
name varchar(20),
birthday date
);
先写变量名,再写数据类型
4.3 MySQL中列的数据类型
4.4 查看一个表结构
show tables;
1.以sql格式返回
show create table student;
2.以表格格式返回
desc student;
3.复制表
如:创建一个员工表,表结构与学生一样 (like)
create table employee like student;
4.删除表 drop
1)删除一张表:
drop table 表名;
2)删除多张表:
drop table 表1,表2;
5.修改表 alter
1.添加字段:add
//实例1:student表添加一个remark字段,类型char(10)
alter table student add remark char(10);
//实例2:同时添加两个字段,一个名为 a int,一个名为b int
alter table student add a int,add b int;
2.修改字段:modify
//实例:将student表中的remark字段的属性改成varchar(100)
alter table student modify remark varchar(100);
3.修改字段名称:change
//实例:将student表中的remark字段名改成intro,类型不变。
alter table student change remark intro varchar(200);
4.删除字段:drop
//删除student表中的字段a和字段b
alter table student drop a,drop b;
5.修改表名:rename
//实例:将学生表student, 改名为college_student
alter table student rename college_student;
**
五、数据的管理与操作
5.1 插入数据
– 5.1.1 插入所有列
//示例:向学生表中插入3条记录
-- 向学生表中插入3条记录,在mysql中字符串可以使用单引号和双引号,建议使用单引号。日期也使用单引号
insert into student values(1, '关羽', '2000-11-11');
insert into student values(2, '张飞', '2002-11-11');
insert into student values(3, '刘备', '1900-11-11');
-- 一条SQL语句插入三条记录,只有mysql中可以这样写
insert into student values(4, '赵云', '2000-11-11'),(5, '孔明', '2000-11-11'),(6, '吕布', '2000-11-11');
注意:
1) 数据类型与列的数据类型匹配
2) 字符串的长度不能超过列中定义的最大长度
3) 位置与列的位置匹配
4) 字符和日期型使用单引号
–5.1.2 插入部分列
insert into student (id,name) values (7, '小乔');
5.2 修改数据
语法:
**
UPDATE: 表名
SET:修改的列和值
WHERE:对符合条件的记录进行修改,如果没有写Where则是修改所有的列
**
-- 修改表结构,添加性别列char(1)
alter table student add gender char(1);
select * from student;
-- 更新student表中所有的性别列,改成男
update student set gender='男';
-- 修改小乔为女
update student set gender='女' where name='小乔';
-- 同时修改多列
update student set name='白云', birthday = '2010-03-20', gender='女' where name='赵云';
5.3 删除数据
5.3.1 删除表中的所有数据
delete from student;
5.3.2 删除部分行数据
-- 删除id为3的学生
delete from student where id=3;
**
5.4 查询数据(重点)
**
5.4.1 查询所有列
示例: 查询所有列
select * from student;
5.4.2 查询指定列
示例:多个列之间以逗号分隔
-- 查询name和gender这两列
select name,gender from student;
5.4.3 查询时指定别名
示例:查询时给列指定别名(AS)
-- 显示出来的结果是汉字,as起别名
select id as 编号, name as 姓名, birthday as 生日, gender as 性别 from student;
-- 起别名as可以省略
select id 编号, name 姓名, gender 性别 from student;
5.4.4 合并列查询
1. 需求:添加数学,英语成绩列,并添加成绩
alter table student add math int, add english int;
- 需求:查询每个学生的数学和英语的总成绩
-- 合并查询总成绩 (as可以省略)
select *, (math+english) as 总成绩 from student;
5.4.5 去除重复数据(distinct)
需求: 查询学生都来自于哪里
-- 添加城市列
alter table student add city varchar(10);
select * from student;
-- 查询学生来至于哪些城市
select distinct city from student;
5.5 条件查询
–5.5.1 where 子句
–5.5.2 比较运算符
-- 查询数学大于85分的学生
select * from student where math > 85;
-- 查询性别不为男的
select * from student where gender <> '男'
-- 不建议
select * from student where gender != '男'
-- 查询数学在80到90之间
select * from student where math >=80 and math<=90;
-- 使用between.. and,包头又包尾
select * from student where math between 80 and 90;
-- 查询id是1,2,5的学生
select * from student where id=1 or id=2 or id=5;
-- 使用in查询
select * from student where id in(1,2,5);
-- 查询所有姓白学生,%通配符,可以匹配任意字符
select * from student where name like '白%';
-- 查询包含白字的姓名
select * from student where name like '%白%';
-- 查询姓白,只有2个字的学生,_ 匹配1个字符
select * from student where name like '白_';
-- 插入一条记录
insert into student (id,name) values (7,'张飞');
-- 查询性别为null的学生
select * from student where gender is null;
–5.5.3 判空条件
1) 判断是否为空串: gender = ‘’
2) 判断是否为空: gender is null
3) null和空字符串的区别:null是没有数据,空串是有数据,只是空字符串