|-- windowMySQL的安装和配置:
.msi微软安装
|--zip包压缩
1、下载官网压缩包
2、解压压缩包(不要C盘、不要有中文、不要有特殊字符)
3、复制一个xx.ini,修改为my.ini
4、修改my.ini
datadir=mysql的主目录
basedir=mysql的主目录/data
5、将bin目录添加到path中去(此电脑右键属性--高级系统设置--环境变量--path--新建)
6、以管理员的身份运行cmd,将路径切换到bin来(很重要)(搜索里写入cmd--命令提示符右键--以管理员身份运行)
7、执行mysqld install 命令,安装注册mysql服务
cd D:\tools\mysql-5.5.41-winx64\bin
d:
8、启动服务(net start[stop|restart] 服务名称(eg:mysql))
9、测试
9、进入数据库
mysql -u用户名称 -p用户密码
如:mysql -uroot -proot
|--exe msi
不教,下一步下一步
|-- Linux
|-- apt
sudo apt [apt-get] install mysql-server mysql-client
sudo apt [apt-get] install mysql-server
sudo apt [apt-get] install mysql-client
service mysql start[|stop|restart]
|-- zip压缩包
1、下载mysql的压缩包 .tar.gz
2、解压压缩包
tar -zxvf xxx.tar.gz
3、bin配置path :两种方案,可以配置到系统配置文件中或者用户配置文件
4、启动mysql
mysqd install
service mysql start/stop
msyql的登录
mysql -u(user) -p(password)-h(host主机)-P(port端口(默认端口是3306))
mysql的退出 :exit quit \q ctrl+c
常见的操作命令
show databases; # 显示当前数据库管理系统中的所有数据库
show databases like "%b%" # 模糊匹配符合规则的数据库
use dbName; # 进入到某个数据库(DBName就是这个数据库名称)中。
show tables; # 查看当前数据库下所有表
show tables like "%p%"; #模糊匹配符合规则的表
desc(description) tableName; # 描述某张表的结构
show create table tableName; # 显示创建表的sql
标准sql的学习:
sql(structured query language)结构化查询语言
在1986年 ANSI sql86
在1987年 ISO sql87
1989 ISO sql89
dml(database Manipulation language): 数据库操作语言
show查 create增 drop删 alter改
ddl(database difined language):数据定义语言
CRUD
insert
update
delete
dql(database query language) 数据库查询语言
dcl(database controller language):数据库控制语言
grant(权限)
invoke
dba(database administrator)数据库管理员
三个创建:表 数据库 视图
四条语句:CRUD
五种约束:主键、外键、唯一、非空、默认值
================================================================
DBMS ===> db ===> table、view、index……
如何创建一个数据库
create database dbName [charset=utf8 ENGINE=InnoDB]
# 创建一个数据库,名称是db_xx
create database db_py1803;
create database db_py1803 charset=utf8
删除一个数据库
drop database DBName (慎用)
drop database db_py1803;
如何创建一张表
作业:请说明如下四种类型的不同之处?
char nchar varchar nvarchar
create table tableName(
id int, #
name varchar(50), liujianhong
name char(50),
age int,
nickname char(50)
)
drop table tableName;
# 创建一张表 t_user
create table t_user(
id int primary key (主键不能为空,不能重复)auto_increment, -- 主键 自动增长
username varchar(50) not null,
password varchar(100) not null,
age int default 18,
gender varchar(5) default (默认值)'nan',
nickname varchar(255) unique (无逗号) # unique 表示唯一约束
)
# CRUD 增删改查
# c(create) r(Retrieve)u(update) d(delete)
# 插入数据
insert into tableName(字段1,字段2……,字段n) values(值1,值2……,值n)
# 插入一条数据到t_user表里面来
insert into t_user(id,username,password,age,gender,nickname)
values(1,"liushuaige",'123456',16,'nan',"shuaigeliu")
insert into t_user(id,username,password,age,gender,nickname)
values(1,"liushuaige",'123456',16,'nan',"shuaigeliu")
insert into t_user(id,username,password,age,gender,nickname)
values(null,"liushuaige",'123456',16,'nan',"shuaigege")
insert into t_user values(null,"liushuaiguo",'123456',16,'nan',"shuaige")
insert into t_user(id,password,username,nickname)
values(default,'123456',"liushuaige","ooo");
truncate t_user;
# 简单的查询某张表
select 字段1,字段2……,字段n from tableName;
select id,username,gender,age,password,nickname from t_user;
select * from t_user;
select id,username from t_user;
# 更新(修改)
update tableName set 字段1=新值[,字段2=新值……字段n=新值] where 条件
update t_user set username = 'liuouba';
update t_user set username = 'liushuaige' where id = 1;
update t_user set username = 'oubaliu' where id >3;
#删除 delete
delete from tableName where condition
delete from t_user where id = 6
配置mysql的远程登录:
1、为什么配置远程登录?
2、如何配置远程登录
1、到mysql数据库 use mysql
2、查询user ==== select host,user from user;
3、修改root用户
update user set host='%' where user='root';(%表示通配所有,可以支持远程登录)
4、修改/etc/mysql/mysql.conf.d/mysqld.cnf
进入vim中找到43行将bind-address 注释掉
5、重启服务 sudo service mysql restart;
===============================================================
create table t_user(
id int primary key auto_increment,
name varchar(50) not null, # 不能为空
age int default 18, # 如果填入的不写,则默认填写18岁
gender varchar(10) default(默认) 'nan',
nickname varchar(50) unique, -- 不能重复
address char(50)
)
mysql数据类型
整型 :int
浮点型:float , decimal(7,2)#7表示总长度,2表示小数位数
字符串:name varchar(30) liujianhong 不超过30就占用本身的大小 (一般用于字符串长度不定时可以剩内存)
name char(30) 字符串长度不超过30时,也占用30的位置 (一般用于长度确定的时候)
文本类型:text
日期:data(只能表示年月日) time (只能表示时分秒)datatime(年月日时分秒)now()当前日期
create table t_user(
id int primary key auto_increment,
name varchar(50) not null,
birthday datetime default '2018-06-22 00:00:00',
intro text
);
====================================================================
grant语言的使用
grant all 权限 db_py05.* 这个库的所有表 ljh表示用户名称localhost表示地址 identified by 'ljhljh'表示修改密码为ljhljh 如果用户存在则修改,不存在则创建ljh
grant all on db_py05.* to 'ljh'@'localhost' identified by 'ljhljh';
grant all on *.* to 'root'@'%' identified by '123456';第一个*表示所有的库,第二个*表示所有的表
====================================================================
CURD
查询
select 字段1,字段2,……,字段n from tableName [where condition]条件
select * from tableName;
增加
insert into tabelName(字段1,字段2,……,字段n) values(值1,值2,……,值n);
insert into tabelName values(值1, 值2,……,值n); # 必须写全
更新
update tableName set 字段1=新值,字段2=新值,字段3=新值 [where condition]
删除
delete from tableName [where condition](如果不带条件,则表内容清空)
# truncate 删除 慎用
修改表的结构:alter
alter table t_user update/change/modify type text;修改字段type的类型
alter table t_user add type int;给表增加字段
alter table t_user drop type;删除字段
===================================================================
CRUD
insert into tableName values();
update tableName set where condition;
delete from tableName where condition;
select * from tableName;
select 字段1,字段2…… from tableName;
mysqldump
分页:
当前页 pageNow 用户决定
每页显示多少条 pageSize 程序员决定
总有多少页 pageCount=allCount/pageSize 计算得到
总有多少条记录 allCount 查询得到 select count(*) from tName;
# 查询id为1的用户
SELECT * FROM t_user WHERE id = 1;
# 查询id大于1的用户
select * FROM t_user WHERE id > 1;
select * FROM t_user WHERE id < 5;
select * FROM t_user WHERE id >= 3;
select * FROM t_user WHERE id != 3;
select * FROM t_user WHERE id <> 3;
-- 查询年龄大于10并且姓名为王五的人的性别
SELECT gender FROM t_user where age > 10 AND username = '王五';
# 查询年龄大于等于20 或者性别是男的人的详情
SELECT * FROM t_user WHERE age >= 20 OR gender = '男';
# 查询性别为空
# 注意:在sql中,判断为空,或者判断不为空,需要使用is,而不是等于符号
null空和空字符串的区别
SELECT * FROM t_user where gender is null;
SELECT * FROM t_user where gender is not null;包含非空和空字符串
# 查询所有人的年龄的和
SELECT SUM(age) FROM t_user;
# 找出年龄最大的那个哥们
SELECT max(age) FROM t_user;
# 找出年龄最大的那个姐们
SELECT min(age) FROM t_user;
# 求当前所有人的平均年龄
SELECT avg(age) FROM t_user;
# 共有多少人?
SELECT count(*) FROM t_user;
# 共有多少人?
SELECT count(*) as counts FROM t_user;
# 共有多少人?
SELECT count(*) counts FROM t_user;
# 年龄大于16 并且 年龄小于 20岁
SELECT * FROM t_user where age >= 16 AND age <= 20;
# 年龄大于16并且年龄小于 20岁
SELECT * FROM t_user where age BETWEEN 16 AND 20;
# 查询年龄为5 8 16 20 30 50的人
SELECT * from t_user where age in (5,8,16,20,30,50);
# 查询年龄为5 8 16 20 30 50的人
SELECT * from t_user where age not in (5,8,16,20,30,50);
# 模糊查询 like
# 查询姓王的人
SELECT * FROM t_user where username LIKE '王%'
# 查询名称中第二个字是建的
SELECT * FROM t_user where username LIKE '_建%'
SELECT * FROM t_user where username LIKE '%哥%'
SELECT * FROM t_user;
# 排序
-- 查询所有用户,默认使用年龄升序排列
SELECT * FROM t_user order by age ;
SELECT * FROM t_user where age > 10 order by age asc;
SELECT * FROM t_user where age > 10 order by age desc;
SELECT * FROM t_user where age > 10 order by age desc, id asc;
# 分组
# 统计当前男生有多少人,女生多少人
SELECT count(gender) FROM t_user;
SELECT gender,count(*) FROM t_user group by gender;
SELECT age FROM t_user GROUP BY age;
# 通过性别进行分组,得到组员多余3人的
# having 必须是出现group by之后,它是对分组结果进行筛选
SELECT gender,count(*) as counts FROM t_user group by gender having counts > 3;
SELECT * FROM t_user LIMIT 5;前五个值
SELECT * FROM t_user LIMIT 0,2;(0哪开始,id=1开始,2表示查两个)
SELECT * FROM t_user LIMIT 2,2;
SELECT * FROM t_user LIMIT 4,2;