开源数据库MySQL DBA运维实战 第2章 SQL1
作者:帽子先生
SQL语言分类
SQL(Structured Query Language 即结构化查询语言)
SQL语言主要用于存取数据、查询数据、更新数据和管理关系数据库系统,SQL语言由IBM开发。
分类
DDL语句 数据库定义语言: 数据库、表、视图、索引、存储过程,例如CREATE DROP ALTER
DDL(data definition language):
DML语句 数据库操纵语言: 插入数据INSERT、删除数据DELETE、更新数据UPDATE
DML(data manipulation language):
DQL语句 数据库查询语言: 查询数据SELECT
DQL(Data Query Language )数据查询语言 SELECT
DCL语句 数据库控制语言: 例如控制用户的访问权限GRANT、REVOKE
DCL(Data Control Language):
名词解释
数据库服务器
运行着数据库应用程序的设备
CENTOS+Mysql
硬件+系统软件+MYSQL软件
数据库
默认数据库
mysql>show databases ;
information_schema: 虚拟库,主要存储了系统中的一些数据库对象的信息,例如用户表信息、列信息、权限信息、字符信息等
performance_schema: 主要存储数据库服务器的性能参数
1.提供进程等待的详细信息,包括锁、互斥变量、文件信息;
2.保存历史的事件汇总信息,为提供MySQL服务器性能做出详细的判断;
3.对于新增和删除监控事件点都非常容易,并可以随意改变mysql服务器的监控周期
mysql: 授权库,主要存储系统用户的权限信息
sys: 主要存储数据库服务器的性能参数
SYS database中,可以获取mem page、io 、latch/mutex/lock等各种性能数据,方便做peformance turning 和 troubleshooting。比如可以方便获取2个sql发生 lock block,用户占用的资源等信息。
创建需要的业务主库...
表的管理单元
表
记录的管理单元
记录
信息的载体,字段的管理单元
张三,男,23,云计算工程师,月薪25K
字段
字段名,字段类型(长度),字段约束组成(可选)
姓名,文字,不能为空
张三
类型
字符,数字,日期
约束
不能为空,自动增长
DDL(数据库定义语言)
DDL-库
定义库
a.创建业务数据库
语法
CREATE DATABASE 数据库名;
CREATE DATABASE discuz;
数据库名要求
区分大小写
唯一性
不能使用关键字如 create select
不能单独使用数字和特殊符号“如-"
正常的:用拼音或单词即可。
b.查看所有数据库
SHOW DATABASES;
选择/进入数据库
USE 数据库名
SELECT database();
调用函数,查询当前库
删除数据库
DROP DATABASE 数据库名;
系统中的位置
/var/lib/mysql/
数据类型
1.数值类型
整数类型 INT
浮点数类型 FLOAT
小数
2.字符串类型
字符系列 CHAR和VARCHAR
枚举类型 ENUM
单选
集合类型 SET
多选
3.时间和日期类型
年 YEAR
日期 DATE
时间 TIME
日期和时间 DATETIME
DDL-表
创表目的
表是数据库存储数据的基本单位,
由若干个字段(列)组成,
主要用来存储数据记录(行)。
操作数据库实例1
操作数据库实例1
创建1列的表格-序号
创库
create database haha;
使用库
use haha;
创表1
create table t1 (id int);
查看所有表
show tables;
插入数据
insert into t1 values(1);
查询所有数据
select * from t1;
删除表
drop table t1;
操作数据库实例2
操作数据库实例2
创两列的表格-序号和姓名
create table t2 (id int,name varchar);
查看表结构
desc t2;
插入数据
insert into t2 values (1,"zhangsan");
查询所有数据
select * from t2;
操作数据库实例3
1.创建表
要求
创建库school
创建表student1
语法
create table 表名(字段名1 类型,字段名2 类型,字段名3 类型 );
示例
mysql> CREATE DATABASE school;
创建数据库school
mysql> use school;
使用库
mysql> create table student1( id int, name varchar , sex enum('m','f'), age int );
创建一个表,四列
提示
Query OK, 0 rows affected (0.03 sec)
2.查看表名
mysql> show tables;
+------------------+
| Tables_in_school |
+------------------+
| student1 |
+------------------+
1 row in set (0.00 sec)
查看表名(需要进入一个数据库)
3.表中插入内容
语法
insert into 表名(字段1,字段2…) values(字段值列表…);
插入数据
insert into student1 values (1,'zhangsan','m',33) ,
insert into student1 values (2,'lisi','f',20) ,
insert into student1 values (1,'wangwu','m',40) ,
4.查看表内容
mysql> select * from student1;
查询表中所有字段的值
5.查看表结构
desc student1;
注意表结构和表内容是两个概念。