目录
一.MySQL的功能特点
1.开源
MySQL在GPL的限制下通过因特网开发,免费提供其源代码,任何人可以修改其代码。
2.可扩展
MySQL可伸缩,可用于管理小型或大型数据库,RDBMS适应数据的增长。
3.可移植
MySQL支持多个操作系统。
4.使用客服机/服务器和嵌入式架构
5.高性能
6.低TCO
7.可靠
8.便于利用
9.安全
10.高可用
二.数据库查询语言
1.数据定义语言(DDL)
create:创建数据库对象(表)。
alter:修改数据库对象的定义。
rename:修改数据库对象的名称。
drop:删除对象。
truncate:删除表中的所有数据。
2.数据操作语言(DML)
insert:在表中插入一个或多个记录。
update:修改表中的数据。
delete:删除表中的一条记录。
select:以不同格式显示一条或多条记录。
3.数据控制语言(DCL)
grant:授权对数据库对象的访问权限。
revoke:拒绝用户对特定数据库对象的访问权限。
4.事务控制语言(TCL)
commit:保存事务期间做的更改。
rollback:撤销事务期间做的更改。
savepoint:标识事务期间的某点,与rollback语句使用可以撤销事务的一部分。
三.MySQL架构
1.应用层:使用户与MySQL服务器交互。
用户类型:数据库管理员,客户端,查询用户。
2.逻辑层:逻辑层负责解析,分析,优化和查询等等活动。
3.物理层:负责把用户数据,系统日志和事件信息的数据以物理方式读写入辅助存储设备。
四.MySQL命令行客户端
MySQL命令行客服端是执行SQL语句的命令行用户界面。
常见的MySQL命令
1.help或者\h或者? :显示命令的描述。
eg:help show
2.clear或者\c :清除当前的输入语句
eg:clear
3.connect或者\r :连接或者重新连接到服务器
eg:connect mydatabase
4.quit或者\q :退出MySQL
eg:quit
5.status或者\s :显示服务器的状态
eg:status
6.delimiter或者\d :设置MySQL认为是语句结尾的字符
eg:delimiter &
五.创建和管理数据库
1.了解数据库对象
表:表一行和列的格式包含数据。它提供数据的结构化组织。仅仅存储满足预定义的数据,执行不违背预定义的操作。
索引:索引是内部表结构,MySQL用它基于一列或者多列的值来提供对表的快速访问。
视图:视图是虚拟表,提供对来自一个或者多个相关表的列的子集进行访问。
存储过程:存储过程是MySQL和过程语句的命名块,存储在服务器中作为一个单元执行。
函数:函数是SQL和过程语句的命名快,存储在一个名称下并返回值。
触发器:触发器是与表相关的命名对象。由SQL语句组成。
2.数据库类型
information_schema:虚拟数据库,存储MySQL服务器所维护的所有数据库信息,可以访问数据库的元数据,元数据含有数据容器的信息,比如数据库名称,表结构,索引信息,触发器信息等等。
mysql:mysql数据库是容纳系统表的管理数据库,这些表包含的信息包括用户定义函数信息,授权表信息,帮助系统信息等等。
performance _schema:通过监视MySQL服务器的事件检查服务器执行情况。包含history,summary表等等。
3.创建用户定义数据库
CREATE DATABASE [IF NOT EXISTS] <database_name>
[[DEFAULT] CHARACTER SET <character_set_name>]
[[DEFAULT] COLLATE <collate_name>]
模板
CREATE DATABASE IF NOT EXISTS test_mysql
DEFAULT CHARACTER SET latin1
DEFAULT COLLATE latin1_bin;
创建test_mysql数据库
latin1_bin是latin1字符集的字符序
MySQL支持的一些字符集:big5,dec8,latin1,latin2。
SHOW CHARACTER SET;
列出字符集
SHOW COLLATION;
列出字符序
4.访问数据库
USE <database_name>
USE test_mysql;
进入test_mysql数据库
SHOW DATABASES;
显示所有数据库
5.修改数据库
ALTER DATABASE <database_name>
[[DEFAULT] CHARACTER SET <character_set_name>]
[[DEFAULT] COLLATE <collate_name>]
模板
ALTER DATABASE test_mysql
CHARACTER SET big5
COLLATE big5_chinese_ci;
修改test_mysql数据库
6.删除数据库
DROP DATABASE database_name;
DROP DATABASE test_mysql;
六.创建和管理表
表是用来存储数据的数据库对象。
1.创建表produce
CREATE TABLE IF NOT EXISTS Produce
(
id int NOT NULL,
name varchar(45) NOT NULL,
price INT NULL,
order INT NULL
)
ENGINE = innodb;
创建表
DESCRIBE <table_name>
DESCRIBE Produce;
查看表
2应用约束
id设置为主键
CREATE TABLE IF NOT EXISTS Produce
(
id int NOT NULL,
name varchar(45) NOT NULL,
price INT NULL,
order INT NULL,
PRIMARY KEY (id)
)
ENGINE = innodb;
唯一约束(name)
CREATE TABLE IF NOT EXISTS Produce
(
id int NOT NULL,
name varchar(45) NOT NULL,
price INT NULL,
order INT NULL,
PRIMARY KEY (id),
Constraint Unique_PName UNIQUE(name)
)
ENGINE = innodb;
外键约束(fk1,fk2)
CREATE TABLE IF NOT EXISTS order
(
id int NOT NULL,
name varchar(45) NOT NULL,
order_id INT NOT NULL,
P_id INT NOT NULL,
c_id INT NOT NULL,
price INT NULL,
order INT NULL,
PRIMARY KEY (id),
Constraint Unique_PName UNIQUE(name),
CONSTRAINT fk1 FOREIGN KEY (p_id) REFERENCES Products(p_id),
CONSTRAINT fk2 FOREIGN KEY (c_id) REFERENCES Customers(c_id)
)
ENGINE = innodb;
3.更改表
添加约束
alter table customer
add constraint pk_id primary key (customer_id)
添加列
alter table customer
add column category varchar(45);
修改列
alter table produce
alter column category set default 'Silk Carpets';
删除列
alter table produce
drop column name;
重命名表
alter table produce
rename to PPPddd;
alter table pppddd
rename to produce;
4.操作数据表
插入数据
insert
CREATE TABLE IF NOT EXISTS products
(
Product_id INT NOT NULL,
Product_name VARCHAR(45) NOT NULL,
hand int NOT NULL,
PRIMARY KEY(Product_id),
constraint Unique_PName UNIQUE (Product_name)
);
创建表
insert into Products set Product_id = 2, Product_name = 'Tom',hand = 123;
set插入一行数据
insert into Products (Product_id,Product_name,hand) values (2,'jerry',234);
value插入一行数据
insert into Products values (3,'aili',345),(4,'boy',456);
value插入多行数据
replace
replace into Products (Product_id,Product_name,hand)
values (5,'Tim',567);
replace into Products values(6,'aa',678), (7,'bb',789);
更新数据
update Products set hand = 123 where Product_id = 2;
复制数据
create table New_Product
(
P_id int not null,
P_name varchar(45) not null,
primary key (P_id)
);
创建表
insert into New_Product
select Product_id,Product_name
from Products;
复制数据到New_Product
replace into New_Product
select Product_id,Product_name
from Products;
复制数据到New_Product
create table New_Product
(
Product_id int,
Product_name varchar(45),
hand int
)
select Product_id,Product_name,hand from Products;
复制数据到New_Product
删除数据
delete from Products
where Product_name = 'Tom';
删除Tom这一行
delete from Products;
删除全部
truncate table Products;
删除全部数据并重新创建表
5.删除表
disable table table_name;
drop table table_name;