三大主流关系型数据库:
Oracle sql server MySQL
专业术语:
数据库(database):存储数据的仓库,简称为DB
数据库管理系统(database manger system),DBS
数据库系统(database system),DBS DB+DBS====> (软件)
MySQL是典型的关系型数据库
mysql安装:
1、.msi 的安装:
下一步
2、.zip 压缩包的安装
1、官网下载
2、解压压缩包(不要有中文和特殊字符)
3、修改my.ini (随机复制其中一个)文件
修改basedir=mysql的主目录
修改datadir=mysql的主目录\data
5、将mysql的bin配置到path中:
此电脑(右键)===>属性=====>高级===>环境变量====>path(上面是当前用户,下面是登录用户 win7 和win8需要在最后打个英文分号 然后将路径配置过去)
6、右键单击以管理员权限打开 将位置切换到mysql安装路径的bin目录下
7、注册服务:mysqld install 安装到电脑上的/ mysql remove 移除(必须把服务先停止)
8、启动服务:
(1)、使用服务面板,手动启动
(2)、window下启动服务(不用管位置) net start/stop/(linux下启动服务 service xxx start/stop/restart/status)
(3)、进入mysql
liunx下安装:
1、离线下载
2、--atp(atp-get):
ubuntu: sudo apt-get install mysql-server(服务器)mysql-client(客户端)
CenterOS:sudo yum install mysql-server(服务器)mysql
退出mysql:
exit、quit、\q、Ctrl+C
常见的mysql命令:
show databases; #此命令返回当前DBS系统中所有数据库
use dbName; #表示进入到对应名称的数据库中去
show tables; # 查看当前数据库下的所有表
desc/describe board; # 查询一张已经存在表的结构
select * from tableName; # 表示查询tableName表的所有数据;
sql(structured query language)结构化查询语言
sql:
DDL(database defined language):数据库定义语言
create drop show alter……
DML(database Manipulation Language):数据库操作语言
CRUD(create Retrieve update delete)
insert
update
delete
select---DQL
DCL(database controller language):数据库控制语言
grant invoke
创建数据库:
create [database/table/index/function/cursor/view] 名称
create database db_py1805 [default charset=utf8 ]
删除数据库
drop [database/table/index/function/cursor/view] 名称
drop database db_py1805;
创建表:
create table 表名(
字段1 类型 [约束条件],
字段2 类型 [约束条件],
……
字段n 类型 [约束条件]
)
create table t_user (
id int ,
username varchar(50),
age int,
gender varchar(5)
)
insert插入语句
insert into 表名(字段1,字段2,……,字段n) values(值1,值2,……,值n);
insert into t_user(id,username,age,gender) values(1,"zs",16,'nan');
配置mysql的远程登录:
1、到mysql 数据库 use mysql
2、查询user select user from user;
3、修改root用户(现在只有一个root用户 所以修改 但一般情况下 只修改对应帐号) update user set host=“%” where user=“root”;
在修改之后:还需要进入配置文件修改配置文件
4、修改配置文件 /etc/mysql/mysql.conf.d/mysqld.cnf 找到43行
bind-address注释掉
5、重启mysql
创建表格:
create table t_hero (
id int primary key auto_increment,(主键 不能重复,不能为空 自动维护)
name varchar(50) not null,(不能为空)
age int default 40,(如果填入的不写,则默认填写40岁)
gender varchar(5),
nikename varchar(50) unique, -- 不能重复,
address varchar(50),
level int default 100
)
插入:
insert into 表名 values(xxxxx);
insert into 表名(字段……) values(xxxxx);
查询:
select * from tableName; 查询所有
select [字段1,字段2,……,字段n] from tableName;
select version() 返回当前数据库的版本信息
select now()返回当前时间
select database()返回当前所在的数据库
name varchar(30) lvbgfbjk 小于30的时候自动做成自己的长度
name char(30) lvbgfbjk 小于30的时候也占30
日期date(只能表示年月日) time(只能表示时分秒) datatime (年月日时分秒)
grant语句的使用:
grant all on db_py05.* to 'xxx'@'localhost' identified by '543245';
grant all(权限) on db_py05(某个数据库).*(某张表) to “xxx”(用户名称 表示创建)@'localhost'(表示只能远程登录 % 表示可以远程登录) identified by '55655'(密码);
grant all on *.* to 'root'@'%' identified by '123456';
更新
update tableName set 字段1=新值,字段2=新值,字段3=新值 [where condition]
update tableName set 字段1=新值,字段2=新值,字段3=新值 [where condition] 必须跟条件,否则全表更新
删除
delete from tableName [where condition] 必须带条件,不带条件则全表清空
truncate [table] tablename; 删除 慎用 不可逆的 常规手段是不可恢复的
修改
alter的操作
修改类型 alter table t_user modify type text;
增加一个字段 alter table t_user add type int;
alter table t_user add (添加)type(列名字) int(类型);
删除一个字段 alter table t_user drop type;
数据库的备份:
mysqldump:在bin目录下
mysqldump 命令
mysqldump –u root –p dbname > 保存路径.sql
mysqldump –u root –p db_bbs > d:/db_bbs.bak.sql将数据库db_bbs以脚本的形式保存到D盘]
将sql脚本还原为数据库
mysql –u root –p dbname < 保存路径
mysql 的单表条件查询:
1、查询id为1的用户:select * from t_user where id=1;
2、查询id大于等于3的用户:select * from t_user where id>=3;
3、查询id不为3的用户:
select * FROM t_user WHERE id != 3;
select * FROM t_user WHERE id <> 3;
4、查询年龄大于10并且姓名为张三的人的性别:
SELECT gender FROM t_user where age > 10 AND username = '张三';
5、查询年龄大于等于20 或者性别是男的人的详情
SELECT * FROM t_user WHERE age >= 20 OR gender = '男';
6、查询性别为空
注意:在sql中,判断为空,或者判断不为空,需要使用is,而不是等于符号
SELECT * FROM t_user where gender is null;
SELECT * FROM t_user where gender is not null;
7、查询所有人的年龄的和
SELECT SUM(age) FROM t_user;
8、找出年龄最大的那个哥们
SELECT max(age) FROM t_user;
9、找出年龄最大的那个姐们
SELECT min(age) FROM t_user;
10、求当前所有人的平均年龄
SELECT avg(age) FROM t_user;
11、 共有多少人?
SELECT count(*) FROM t_user;
12、共有多少人?
SELECT count(*) as counts FROM t_user;
13、 共有多少人?
SELECT count(*) counts FROM t_user;
14、年龄大于16 并且 年龄小于 20岁
SELECT * FROM t_user where age >= 16 AND age <= 20;
15、年龄大于16 并且 年龄小于 20岁
SELECT * FROM t_user where age BETWEEN 16 AND 20;
16、 查询年龄为5 8 16 20 30 50的人
SELECT * from t_user where age in (5,8,16,20,30,50);
17、 查询年龄为5 8 16 20 30 50的人
SELECT * from t_user where age not in (5,8,16,20,30,50);
模糊查询 like
1、 查询姓王的人
SELECT * FROM t_user where username LIKE '王%'
2、 查询名称中第二个字是建的
SELECT * FROM t_user where username LIKE '_建%'
SELECT * FROM t_user where username LIKE '%哥%'
SELECT * FROM t_user;
3、 排序
-- 查询所有用户,默认使用年龄升序排列
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;
4、分组
统计当前男生有多少人,女生多少人
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;
SELECT * FROM t_user LIMIT 2,2;
SELECT * FROM t_user LIMIT 4,2;