赞
踩
MySQL 是最流行的关系型数据库管理系统,在WEB应用方面 MySQL 是最好的RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。
在学习MySQL语言之前,我们先来了解一下数据库。
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据。
简单地说数据库就是用来存储和和管理大量数据的一个仓库。
RDBMS即关系数据库管理系统(Relational Database Management System)的特点:
在我们开始学习MySQL 数据库前,让我们先了解下RDBMS的一些术语:
MySQL 为关系型数据库(Relational Database Management System), 这种所谓的"关系型"可以理解为"表格"的概念, 一个关系型数据库由一个或数个表格组成, 如图所示的一个表格:
这些术语也比较官方,是从菜鸟教程上copy下来的,在实际使用当中,其实数据表就是一个table,可以形象化来理解。
下面就正式进入MySQL语言的学习,对于MySQL的安装请自行百度。
数据库操作思路图:
[root@host]# mysql -u root -p
Enter password:******
一般默认用户名是root
退出 mysql> 命令提示窗口可以使用 exit 命令,如下所示:
mysql> exit
Bye
SHOW DATABASES;
CREATE DATABASE 数据库名称
MySQL默认创建创建的数据库字符集是utf8
用命令行查看当前mysql默认字符集命令:
show variables like 'character_set%';
若创建数据库要修改默认字符集,使用以下语句即可:
# utf-8
CREATE DATABASE 数据库名称 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
# gbk
CREATE DATABASE 数据库名称 DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
USE 数据库名称;
注:每次使用数据库必须打开相应数据库
查看当前数据表:
SHOW TABLES;
#创建用户
create user '用户名'@'IP地址' identified by '密码';
#删除用户
drop user '用户名'@'IP地址';
#修改用户
rename user '用户名'@'IP地址'; to '新用户名'@'IP地址';
#修改密码
set password for '用户名'@'IP地址' = Password('新密码')
PS:用户权限相关数据保存在mysql数据库的user表中,所以也可以直接对其进行操作(不建议)
MySQL备份和还原,都是利用mysqldump、mysql和source命令来完成。不过我们可以通过MySQL的可视化界面进行操作,这里就不详细介绍了。
删除数据库语句:
drop database 数据库名;
show tables;
创建语句:
create table 表名(
列名 类型 是否可以为空,
列名 类型 是否可以为空
);
操作执行结果
mysql> CREARE TABLE tbtest(
num INT(8) NOT NULL AUTO_INCREMENT PRIMARY KEY,
sname VARCHAR(10) NOT NULL
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.07 sec)
注意:在实际使用中,以大写方便区分MySQL语句,实际MySQL是无法辨别大小写的。
primary key
create table tb1(
nid int not null auto_increment primary key,
num int null )
或
create table tb1(
nid int not null,
num int not null,
primary key(nid,num)
)
auto_increment
create table tb1(
nid int not null auto_increment primary key,
num int null )
或
create table tb1(
nid int not null auto_increment,
num int null,
index(nid)
)
注意:1、对于自增列,必须是索引(含主键)。 2、对于自增可以设置步长和起始值
show session variables like 'auto_inc%';
set session auto_increment_increment=2;
set session auto_increment_offset=10;
shwo global variables like 'auto_inc%';
set global auto_increment_increment=2;
set global auto_increment_offset=10;
creat table color(
nid int not null primary key,
name char(16) not null
)
create table fruit(
nid int not null primary key,
smt char(32) null ,
color_id int not null,
constraint fk_cc foreign key (color_id) references color(nid)
)
drop table 表名
delete from 表名
truncate table 表名
添加列:alter table 表名 add 列名 类型 删除列:alter table 表名 drop column 列名 修改列: alter table 表名 modify column 列名 类型; -- 类型 alter table 表名 change 原列名 新列名 类型; -- 列名,类型 添加主键: alter table 表名 add primary key(列名); 删除主键: alter table 表名 drop primary key; alter table 表名 modify 列名 int, drop primary key; 添加外键:alter table 从表 add constraint 外键名称(形如:FK_从表_主表) foreign key 从表(外键字段) references 主表(主键字段); 删除外键:alter table 表名 drop foreign key 外键名称 修改默认值:ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000; 删除默认值:ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;
insert into 表 (列名,列名...) values (值,值,值...)
insert into 表 (列名,列名...) values (值,值,值...),(值,值,值...)
insert into 表 (列名,列名...) select (列名,列名...) from 表
实际操作:
delete from 表
delete from 表 where id=1 and name='alex'
where表示条件,and表示并且。
语句翻译过来理解:删除满足id=1并且name=alex的那条数据。
update 表 set userId = 1231231 where id=2
查询数据应用数据库的一个主要且频繁的一个操作。当然我们可以根据具体要求进行操作查询。
a、条件
select * from 表 where id > 1 and userPwd != 123 and userId = 1234;
select * from 表 where id between 5 and 16;
select * from 表 where id in (11,22,33)
select * from 表 where id not in (11,22,33)
select * from 表 where id in (select id from 表)
b、限制
select * from 表 limit 5; - 前5行
select * from 表 limit 4,5; - 从第4行开始的5行
select * from 表 limit 5 offset 4 - 从第4行开始的5行
* 号代表查询选择所有数据
例如上面图中使用的select * from people
排序
select * from 表 order by 列 asc - 根据 “列” 从小到大排列
select * from 表 order by 列 desc - 根据 “列” 从大到小排列
select * from 表 order by 列1 desc,列2 asc - 根据 “列1” 从大到小排列,如果相同则按列2从小到大排序
通配符(模糊查询)
select * from 表 where name like 'ale%' - ale开头的所有(多个字符串)
select * from 表 where name like 'ale_' - ale开头的所有(一个字符)
分组
select num from 表 group by num
select num,nid from 表 group by num,nid
select num,nid from 表 where nid > 10 group by num,nid order nid desc
select num,nid,count(*),sum(score),max(score),min(score) from 表 group by num,nid
select num from 表 group by num having max(id) > 10
特别的:group by 必须在where之后,order by之前
在本文中我们对普通查询、数据排序查询、模糊查询、分组查询进行了简单介绍,对聚集函数查询和多表查询使用较少,在后面的博客中会有介绍。
在一些简单的项目开发中上面的一些数据库操作语句基本能满足需求,对于更高级的数据库操作呢,后续再更新,主要有连接使用、索引、临时表、复制表及SQL注入等高级操作。
在这个大数据时代,数据的庞大以及多用户的大量访问势必导致数据库交互困难,处理高并发问题我们不能单纯依靠后端来处理,数据库的优化在处理高并发也发挥着不可或缺的力量,所以数据库的基础必须得打牢。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。