1.连接MySQL
1.1 连接到本机上的MySQL
mysql -u root -p # 如果刚安装好MySQL,root是没有密码的
1.2 连接到远程主机上的MySQL
- 假设远程主机的IP为:
192.168.206.100
,用户名为root
,密码为12345678
。
mysql -h 192.168.206.100 -u root -p 12345678;
1.3 退出MySQL
exit;
# or
quit;
2. 修改root密码与简单权限管理
2.1 修改root密码
方法1: 用SET PASSWORD命令
mysql -u root
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
方法2:用mysqladmin
mysqladmin -u root password "newpass"
# 如果root已经设置过密码,采用如下方法
mysqladmin -u root password oldpass "newpass"
方法3: 用UPDATE直接编辑user表
mysql -u root
mysql> use mysql;
mysql> UPDATE user SET Password = PASSWORD('newpass') WHERE user = 'root';
mysql> FLUSH PRIVILEGES;
方法4:在丢失root密码的时候
mysqld_safe --skip-grant-tables&
mysql -u root mysql
mysql> UPDATE user SET password=PASSWORD("new password") WHERE user='root';
mysql> FLUSH PRIVILEGES;
2.2 允许用户远程登录
允许root使用密码admin123
从任何主机连接到mysql服务器
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'admin123' WITH GRANT OPTION;
-- 其中"*.*"代表所有资源所有权限, “'root'@%”其中root代表账户名,%代表所有的访问地址,也可以使用一个唯一的地址进行替换,只有一个地址能够访问。如果是某个网段的可以使用地址与%结合的方式,如10.0.42.%。IDENTIFIED BY 'root',这个root是指访问密码。WITH GRANT OPTION允许级联授权。
flush privileges;
-- 刷新访问权限表
允许用户root使用密码admin123从ip为192.168.12.16的主机连接到mysql服务器
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.16' IDENTIFIED BY 'admin123' WITH GRANT OPTION;
flush privileges;
3.库操作
create database db_name; -- 创建数据库
show databases; -- 显示所有的数据库
drop database db_name; -- 删除数据库
use db_name; -- 使用数据库
4.表操作
建表与删表
create table tb_name (字段名 varchar(20), 字段名 char(1)); -- 建表
show tables; -- 显示数据表
desc tb_name; -- 显示表结构
drop table tb_name; -- 删除表
eg:
-- 创建学生表
create table Student(
Sno char(10) primary key,
Sname char(20) unique,
Ssex char(2),
Sage smallint,
Sdept char(20)
);
修改表结构
-- 增加字段
alter table table_name add field_name field_type;
-- 删除字段
alter table table_name drop field_name;
-- 修改字段的注释
alter table `student` modify column `id` comment '学号';
-- 修改原字段名称及类型
alter table table_name change old_field_name new_field_name field_type;
-- 加索引
alter table 表名 add index 索引名 (字段名1[,字段名2 …]);
-- 删除某个索引
alter table employee drop index emp_name;
-- 设置主关键字
alter table 表名 add primary key (字段名);
-- 设置唯一限制条件
alter table 表名 add unique 索引名 (字段名);
5.数据操作
5.1 插入数据(Add)
-- 第一种形式无需指定要插入数据的列名,只需提供被插入的值即可:
insert into tb_name values (value1,value2,value3,...);
-- 第二种形式需要指定列名及被插入的值:
insert into tb_name (column1,column2,column3,...) values (value1,value2,value3,...);
eg:
insert into Student values ( 20180001,张三,男,20,CS);
insert into Student values ( 20180002,李四,男,19,CS);
insert into Student (Sno,Sname,Ssex,Sage,Sdept) values ( 20180003,王五,男,18,MA);
insert into Student (Sno,Sname,Ssex,Sage,Sdept) values ( 20180004,赵六,男,20,IS);
5.2 查询数据(Select)
select 语句的一般格式如下:
select <目标列表达式列表>
[into 新表名]
from 表名或视图名
[where <条件>]
[group by <分组表达式>]
[having <条件>]
[order by <排序表达式>[ASC|DESC]]
查询所有
-- 查询表中所有列
select * from tb_name;
-- 查询表中指定的列
select tb_name.<字符型字段>,<字符型字段> ... from tb_name;
-- 指定查询结果中的列名
select <字符型字段> as 列标题1,<字符型字段> as 列标题2, <字符型字段> as 列标题3 from bt_name;
-- 查询经过计算的列(即表达式的值)
select <字符型字段>,<字符型字段>,列标题 = <字符型字段> * n from tb_name;
消除查询结果中的重复行
select distinct <字符型字段>[,<字符型字段>,...] from tb_name;
限制查询结果中的返回行数
select top n from tb_name; -- 查询前 n 的数据
select top n percent from tb_name; -- 查询前 n% tb_name的数据
对查询结果排序
select * from tb_name order by <排序表达式> <排序方法>;
查询满足条件的行
- 模板
select [all|distinct] [top n[percent]]<目标列表达式列表> from 表名 where <条件>;
-- 说明:在查询条件中可使用以下运算符或表达式:
-- 比较运算符 <=,<,=,>,>=,!=,<>,!>,!<
-- 范围运算符 between... and,not between... and
-- 列举运算符 in,not in
-- 模糊匹配运算符 like,not like
-- 空值运算符 is null,is not null
-- 逻辑运算符 and,or,not
- 具体应用
-- 使用比较运算符
select * from tb_name where <字段> >= n ;
-- 指定范围
select * from tb_name where <字段> [not] between <表达式1> and <表达式2>;
-- 使用列举
select * from tb_name where <字段> [not] in(值1,值2,...,值n);
-- 使用通配符进行模糊查询 匹配串中通常含有通配符%和_(下划线)。
select * from tb_name where <字符型字段> [not] like <匹配串>;
-- 使用null的查询
select * from tb_name where <字符型字段> is [not] null;
-- 多重条件查询:使用逻辑运算符
select * from tb_name where <字符型字段> = 'volues' and <字符型字段> > n;
使用统计函数
-- 求指定的数值型表达式的和或平均值
select avg(<字符型字段>) as 平均数,sum(<字符型字段>) as 总数 from tb_name where <字符型字段> ='字符串';
-- 求指定表达式的最大值或最小值。
select max(<字符型字段>) as 最大值,min(<字符型字段>) as 最小值 from tb_name;
-- 统计记录总数。
select count(*) as 总数 from tb_name;
-- 统计指定字段值不为空的记录个数
select count(<字符型字段>) as 总数 from tb_name;
对查询结果分组
-- group by子句用于将查询结果表按某一列或多列值进行分组,列值相等的为一组,每组统计出一个结果。该子句常与统计函数一起使用进行分组统计。格式为:
-- group by 分组字段[,...n][having <条件表达式>];
-- 1.在使用group by子句后
-- select列表中只能包含:group by子句中所指定的分组字段及统计函数。
-- 2.having子句的用法
-- having子句必须与group by 子句配合使用,用于对分组后的结果进行筛选(筛选条件中常含有统计函数)。
-- 3. 分组查询时不含统计函数的条件
-- 通常使用where子句;含有统计函数的条件,则只能用having子句。
select <字符型字段>,count(*) as 列标题 from tb_name where <字符型字段>='字符串' group by <字符型字段>;
5.3 修改数据(Update)
update tb_name set 列名称 = 新值 where 列名称 = 某值;
5.4 删除数据(Delete)
-- 条件删除
delete from tb_name where 列名称 = 某值;
-- 删除所有行
delete * from tb_name;
-- 或
delete from tb_name;
评论 (0)