安装mysql教程,网上有很多,这里就过多的介绍了。
- 连接数据库
打开命令行,输入以下命令
mysql -u root -p123456
以上是mysql在本地的连接方式,如果mysql安装在服务器呢,我们需要怎么连接呢。其实只需要在以上命令上面加上-h 主机名和-P
端口号即可。
注:端口号的P是大写的。
mysql -h 192.168.0.53 -P 3306 -u root -p123456
数据库操作
- 创建数据库
create database develop default charset utf8;
这里创建一个名为develop的数据库 ,并指定默认编码为utf8。 - 查看数据库
show databases;
- 删除数据库
drop database develop;
- 进入数据库
use develop;
查看数据库详细信息 可以使用status
命令
数据类型
sql中的数据类型分为三大类,详细的分类请查看MySQL 中的数据类型介绍
-
数值类型
-
日期和时间类型
-
字符串类型
数据表操作
- 查看所有数据表
show tables;
- 创建数据表
create table t1(
#id从1自动省长,并设置为主键
id int auto_increment primary key,
#设置name不可以为null,如果插入时没有name则会报错,默认是可以为null
name varchar(50) not null,
#设置username不可以为null,并且其值在数据表里是唯一的,不可重复
username varchar(255) uniqu not null,
#设置age是无符号的正整数,并且默认值为0
age int unsigned default(0)
)
- 显示表信息
desc t1;
查看表结构
show create table t1;
显示创建表的sql语句 - 添加列
alter table t1 add phone varchar(50);
- 修改列
alter table t1 change phone age int;
把原先的phone列改名为age,并修改数据类型为int - 删除列
alter table t1 drop phone;
- 删除表
drop table t1;
数据行操作
-
插入
往数据表里插入数据
insert into t1 (column1,column2...) values (value1,vaule2...);
-
查询
查询是数据库里使用的最频繁的操作,据统计数据库的读写比例为10:1,由此可见查询是有多么重要。
为了满足各种复杂的需求,我们也需要写出各种复杂的sql,所以难度系数最高的也是查询。- 简单的查询
select * from t1;
从数据表里获取所有记录,这里的*是一个通配符,即返回结果集里所有列 - 带条件查询where
select id,name from t1 where id = 1;
从t1表中查询符合id=1行的id,name - in操作符
in查询某值是否在某条件里,相反的也有not in
select * from t1 where id in (select cid from t2 where name = 'test')
select 语句返回的结果集可以作为条件继续查询 - 多条件查询 and,or
and 逻辑与 即两边的条件都符合才成立
or 逻辑或 即两边的条件只要满足一个就成立
select * from meizi where name='lucy' or (height>160 and weight <= 120)
这里使用了一个算术优先级,把括号内的内容做为一个整体条件 - 范围匹配
select * from meizi where age between 18 and 30 ;
查找age在18~30之间的所有行,这里只能采用and操作符,不能使用or - null
select * from meizi address is null;
查找符合地址为null的数据
select * from meizi address is not null;
查找地址不为null的mz - 通配符
- "%" 匹配任意数目字符(包括零个字符)
- "_" 匹配任何单个字符
在sql中匹配模式中不能使用!=或者=来进行匹配,而是使用like或not like比较操作符。
使用示例:
select * from t1 name like 'l%'
匹配所有name以l开头的
select * from t1 name like '_ucy'
匹配所有name第一个字符为任意字符,并以ucy结尾
- 排序
排序使用order by对指定的列进行排序,使用 desc降序 asc升序 排序规则进行排序
select * from meizi order by age desc;
对age进行降序排序,最大的数值在最前面。如果不指定desc,则默认按asc升序进行排序
对多个列排序
select * from meizi order by age desc,name,height;
如果第一个列值相同,才会对二个列按指定的规则进行排序,第三列同上
order by 可以对任何数据类型进行排序,varchar,text等类型 则按ascii码表的值进行排序 - 聚合函数
mysql常用的聚合函数如下:- count(exrp) 返回指定列中非null值的个数
- avg(exrp) 返回指定列的平均值
- max(exrp) 返回指定列的最大值
- min(exrp) 返回指定列的最小值
- sum(exrp) 返回指定列的所有值的和
- 分组查询
使用group by对指定列不同的值进行分组,group by一般和聚合函数一起使用才有意义
使用group by有两个要素- 出现在select后面的字段 要么是是聚合函数中的,要么就是group by 中的.
- 要筛选结果 可以先使用where 再用group by 或者先用group by 再用having
having和where都是对条件进行筛选,SQL语言中设定集合函数的查询条件时使用having而不是where。通常情况下,having被放置在SQL命令的结尾处。
使用示例:
select age from t1 group by age;
select age,height from meizi where age >18 group by height having height > 165;
- 连接查询
在sql中 分为三个连接- inner join 内连接(一般简写为join),获取两个表中字段匹配关系的记录
- left join 左连接,获取左表所有记录,即使右表没有对应匹配的记录
- right join 右连接,与left join相反
这三种连接的使用方式都是相同的,只是连接后的取值方式略有差异
使用示例:
select * from t1 join t2 on t1.id = t2.pid
使用连接操符后如果没有 on 的条件,会出现笛卡尔积 - 简单的查询
-
删除
delete from t1;
这样是删除整个表里的数据,请谨慎使用。
如果只是删除指定的的数据,使用where关键字后跟上根据查询条件删除。如:
delete from t1 where name = 'test';
删除name等于test的所有行 -
更新
更新数据表,使用update关键字,后面也需要跟上查询条件进行更新,否则是更新整个表
update t1 set name='czlyj' where id = 1;
更新所有符合id=1行
注:执行更新和删除操作时,尤其要谨慎,一但操作失误,数据也无法恢复,所以尽量使用唯一的条件去匹配,避免照成不必要的损失。
网友评论