-
MySQL的安装与配置
(1) 下载地址:
http://dev.mysql.com/downloads/mysql/
(2) 安装注意事项:
a. 设置root密码
b. 设置编码
(3) my.ini配置utf8编码
(4) 环境变量配置:
MYSQL_HOME -> C:\Program Files\MySQL\MySQL Server 5.5
path配置 -> %MYSQL_HOME%\bin -
MSDOS状态下MySQL基本操作
(1) 启动MySQL服务
a. 通过“计算机管理” -> “服务和应用程序”-> “服务”设置。
b. cmd中命令:net start mysql(2) 关闭MySQL服务
a. 通过“计算机管理” -> “服务和应用程序”-> “服务”设置。
b. cmd中命令:net stop mysql(3) 查看MySQL数据库版本:
方式一:登录到mysql服务端
select version();
方式二:没有登录到mysql服务端
mysql --version 或 mysql -V (大写)(4) 进入MySQL数据库
mysql -uroot -p
或 mysql -uroot -p123456
或 mysql -h213.222.123.23 -uroot -p123456 使用比较少,但是工作中用得比较多(5) 关闭MySQL数据库
exit 或 quit 或ctrl+c
(6) 查看所有数据库
show databases;
(7) 打开数据库
use 数据库名;
(8) 创建数据库
create database if not exists 数据库名
[default charset UTF8 collate utf8_general_ci];(9) 删除数据库
drop database 数据库名:
(10) 查看某个数据库中所有表
show tables;
(11) 创建表
create table 表名(
字段名 类型 约束,
字段名 类型 约束,
……
)engine=innodb default charset=utf8;(12) 查看表结构
desc 表名;
(13) 导出数据库(在MSDOS状态,不需要分号结束)
mysqldump -uroot -p密码 数据库名 > d:\导出文件名.sql
(14) 导入外部数据库(在MySQL内部使用)
use 数据库名;
source d:/导出文件名.sql (注意不要使用分号) -
数据类型
(1) 数值型:int, decimal, integer, bigint, float, double……
(2) 字符型:char(固定长度), varchar(可变长度), text(大文本)
(3) 日期型:datetime(年月日,时分秒), timestamp(年月日,时分秒), date(只有年月日), time(只有时分秒)
建议:尽量用timestamp,空间效率高于datetime。create table 表名(
字段名 类型 约束 comment ‘注释’,
字段名 类型 约束 comment ‘注释’,
age int not null check(age>0 and age<150),
sex int default 1,
regdate timestamp default current_timestamp
……
); -
约束
(1) 主键约束:primary key
(2) 外键约束:foreign key
(3) 空值约束:not null
(4) 唯一约束:unique
(5) 检查约束:check check(age>0 and age<150)
(6) 默认约束:defualt default ‘男’ default current_timestamp -
标识列
auto_increment 默认从1开始,每次递增1.
建表时设置标识列的值:
create table 表名(
字段 类型 约束 标识列… #注意标识列要设置主键
……
) auto_increment=10000; -
数据的增删改
insert into 表名 (列名) values(列值)
语法:
insert into 表名
set 列名=值,列名=值,…
*/
INSERT INTO t_ca
SET id=5,cname=‘李达达’,csex=‘男’;
#两种方式大pk ★
#1、方式一支持插入多行,方式二不支持
#2、方式一支持子查询,方式二不支持
6. 数据的基础查询
select *from 表名 where 条件
7. 数据的模糊查询
select * from 表名 where 字段 like 值 ‘李%’–》姓李 ‘%李’ --》末尾以李结束 ‘%李%’–》包含李
8. 数据的分页查询
select * from 表名 limit (显示行数,显示页数)
9. 两张表的联查
select * from 表名1,表名2
where 表名1.字段=表名2.字段(两字段名相同)
group by 字段名
having 条件
select * from 表名1 b1(别名)
join 表名2 b2(别名)
on b1.字段=b2.字段
where 条件
10. 子查询操作
#进阶10:DML语言
/*
数据操作语言:
插入:insert
修改:update
删除:delete
*/
#一、插入语句
#方式一:经典的插入
/*
语法:
insert into 表名(列名,…) values(值1,…);
*/
#1.插入的值的类型要与列的类型一致或兼容
INSERT INTO t_ca(id, cname, csex)
VALUES(4, ‘李达’, ‘男’);
INSERT INTO t_ca
VALUES(6, ‘李达’, ‘男’),(6, ‘李达’, ‘男’);
#2.不可以为null的列必须插入值。可以为null的列如何插入值?
#3.列的顺序是否可以调换
#4.列数和值的个数必须一致
#5.可以省略列名,默认所有列,而且列的顺序和表中列的顺序一致
#方式二:
/*
语法:
insert into 表名
set 列名=值,列名=值,…
*/
INSERT INTO t_ca
SET id=5,cname=‘李达达’,csex=‘男’;
#两种方式大pk ★
#1、方式一支持插入多行,方式二不支持
#2、方式一支持子查询,方式二不支持
#二、修改语句
/*
1.修改单表的记录★
语法:
update 表名
set 列=新值,列=新值,…
where 筛选条件;
2.修改多表的记录【补充】
语法:
sql92语法:
update 表1 别名, 表2 别名
set 列=值,…
where 连接条件
and 筛选条件;
sql99语法:
update 表1 别名
inner|left|right join 表2 别名
on 连接条件
set 列=值,...
where 筛选条件;
*/
#1.修改单表的记录
#案例1:修改beauty表中姓王的女神的电话为13899888899
UPDATE beauty SET phone=‘13899888899’ WHERE name
LIKE ‘王%’;
#案例2:修改boys表中id好为2的名称为张飞,魅力值 10
#2.修改多表的记录
#案例 1:修改张无忌的 女朋友的手机号为114
UPDATE beauty a, boys b
SET a.phone=‘114’
WHERE a.boyfriend_id = b.id
AND b.boyName
=‘鹿晗’;
#用单表修改如何实现-----子查询 + 修改
UPDATE beauty
SET phone=‘114’
WHERE boyfriend_id=(
SELECT id FROM boys WHERE boyName=‘张无忌’
);
#案例2:修改没有男朋友的女神的男朋友编号都为2号
UPDATE beauty a
SET a.boyfriend_id=2
WHERE a.boyfriend_id
NOT IN(
SELECT id FROM boys
);
– 写法二
UPDATE beauty a
LEFT JOIN boys b ON a.boyfriend_id
=b.id
SET a.boyfriend_id IS NULL;
#三、删除语句
/*
方式一:delete
语法:
1、单表的删除【★】
delete from 表名 where 筛选条件
2、多表的删除【补充】 级联删/改
sql92语法:
delete 表1的别名,表2的别名
from 表1 别名,表2 别名
where 连接条件
and 筛选条件;
sql99语法:
delete 表1的别名,表2的别名
from 表1 别名
inner|left|right join 表2 别名 on 连接条件
where 筛选条件;
方式二:truncate 删除表中所有数据
语法:truncate table 表名;
*/
#方式一:delete
#1.单表的删除
#案例:删除手机号以9结尾的女神信息
DELETE FROM beauty WHERE phone LIKE ‘%9’;
#2.多表的删除
#案例:删除张无忌的女朋友的信息
DELETE be FROM beauty be
INNER JOIN boys bo ON bo.id
= be.boyfriend_id
WHERE bo.boyName
=‘张无忌’;
#案例:删除黄晓明的信息以及他女朋友的信息
DELETE be,bo FROM beauty be
INNER JOIN boys bo ON bo.id
= be.boyfriend_id
WHERE bo.boyName
=‘黄晓明’;
#方式二:truncate语句
#案例:将魅力值>100的男神信息删除
DELETE FROM boys WHERE userCP>100;
TRUNCATE TABLE boys;
/*
1.delete 可以加where 条件,truncate不能加
2.truncate删除,效率高一丢丢
3.假如要删除的表中有自增长列,
如果用delete删除后,再插入数据,自增长列的值从断点开始,
而truncate删除后,再插入数据,自增长列的值从1开始。
4.truncate删除没有返回值,delete删除有返回值
5.truncate删除不能回滚,delete删除可以回滚
*/