MySQL数据库运维实战第一章(入门)

一,认识MySQL语言

1.MySQL语言主要用于存取数据,查询数据,更新数据和管理关系数据库系统
2.DDL语句 数据库定义语言: 数据库、表、视图、索引、存储过程,例如CREATE DROP ALTER
3.DML语句 数据库操纵语言: 插入数据INSERT、删除数据DELETE、更新数据UPDATE
4.DQL语句 数据库查询语言: 查询数据SELECT

二,MySQL名词解释

1.数据库:
a自带默认数据库
information_schema: 虚拟库,主要存储了系统中的一些数据库对象的信息,例如用户表信息、列信息、权限信息、字符信息等
performance_schema: 主要存储数据库服务器的性能参数
mysql: 授权库,主要存储系统用户的权限信息
sys: 主要存储数据库服务器的性能参数
b用户自建数据库
2.表:记录的管理单元
3.记录:信息的载体,字段的管理单元
4.字段:字段名,字段类型(长度),字段约束组成
5.类型:字符,数字,日期
6.约束:不能为空,自动增长
7.图示:

三,用户自建库

  1. create databases 数据库名称(数据库名称区分大小写)
    2.查看数据库:show databases
    3.进入一个数据库
    USE 数据库名称
    4.删除数据库
    drop database 数据库名称
    5.MySQL数据库系统文件位置
    源码安装:/usr/local/mysql/data/
    RPM安装:/var/lib/mysql/

四,数据类型

1.数值类型 int
a 整数类型 int
b 浮点型 floatdouble
c 定点数类型 dec
d 位置类型 bit
2.字符串类型
a char
b text
c blob
d binary
e 枚举类型: enum
f 集合类型: set
g 时间和日期类型: date time datetime timestamp year

五,类型测试

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(两列id 和 name(16长度))
create table t2 (id int,name varchar(16));

查看表结构
desc t2;

插入数据
insert into t2 values(1,"zhangsan");
查询所有数据
select * from t2;

修改表名
ALTER TABLE t2 RENAME t3;

查看所有表
show tables;

增加一列
ALTER TABLE t3 ADD address varchar (50);

查看表结构
desc t3;

插入数据
insert into t3 values(1,"wangwu","beijing");
查询所有数据
select * from t3;
在ID列前增加一列(idd int)
ALTER TABLE t3 ADD idd int FIRST;

在ID列后增加一列(sex char)
ALTER TABLE t3 ADD sex char after id;

查看表结构
desc t3;
查看表结构
desc t3;

修改name列的列名为mingzi
ALTER TABLE t3 CHANGE name mingzi varchar(16) ;

查看表结构
desc t3;

把t3 复制 t4
create table t4 select * from t3;

查看t3 和t4 的内容
select * from t3;
select * from t4;

2.整数类型测试

创表
mysql> create table test1(
tinyint_test tinyint,
int_test int
);

插入两列合法值
mysql> insert into test1 values (111,111);
Query OK, 1 row affected (0.09 sec)

插入tinyint非法值
错误的示例:
mysql> insert into test1(tinyint_test) values(128);
ERROR 1264 (22003): Out of range value for column 'tinyint_test' at row 1
正确的示例:
mysql> insert into test1(tinyint_test) values(127);

插入int合法值
mysql> insert into test1(int_test) values(2147483647);
Query OK, 1 row affected (0.05 sec)

插入int的非法值
mysql> insert into test1(int_test) values(2147483648);
ERROR 1264 (22003): Out of range value for column 'int_test' at row 1
验证那些值插入成功?
select * from test1;

3.无符号类型 unsigned

创表
create table test2(
tinyint_test tinyint unsigned,
int_test int unsigned
);

插入tinyint unsigned 合法值
insert into test2(tinyint_test) values(255);

插入int unsigned 合法值
mysql> insert into test1(int_test) values(2147483648);

插入两列的非法数值 负数。
mysql> insert into test2 values(-20,-20);
ERROR 1264 (22003): Out of range value for column 'tinyint_test' at row 1

4.整数型 零填充约束 zerofill

创表
create table t2 (
id1 int zerofill,
id2 int(6) zerofill
);
插入值
mysql> insert into t2 values(2,2);
Query OK, 1 row affected (0.01 sec)
查询值
mysql> select * from t2;
+------------+--------+
| id1 | id2 |
+------------+--------+
| 0000000002 | 000002 |
+------------+--------+
1 row in set (0.00 sec)

5.浮点型 float

创表
create table test4(float_test float(5,2));
插入数值
insert into test4 values (10.2), (70.243), (70.246);
查询结果
mysql> select * from test4;
+------------+
| float_test |
+------------+
| 10.20 |
| 70.24 |
| 70.25 |
+------------+
3 rows in set (0.01 sec)

6.精准小数decimal类型

创表
create table test5(decimal_test decimal(5,2));
插入数据
insert into test5 values (70.245);
查询结果
select * from test5;

7.时间型数据的使用方法和特点。date 和time

创表
create table test_time(
d date,
t time,
dt datetime);
查看表结构
mysql> desc test_time;
+-------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| d | date | YES | | NULL | |
| t | time | YES | | NULL | |
| dt | datetime | YES | | NULL | |
+-------+----------+------+-----+---------+-------+
插入时间
insert into test_time values(now(),now(),now());
查看表内容
select * from test_time;

8.字符型数据类型 char ,varchar

创表
create table vc (
v varchar(4),
c char(4));
插入数据
insert into vc values('a','a');
insert into vc values('ab ','ab ');
查询数据
select * from vc;

9.“单选”“多选”型数据类型 enun,set

创表
create table student3(
name varchar(50),
sex enum('m','f'),
hobby set('music','book','game','disc') );
插入数据
insert into student3 values ('tom','m','book,game');
查询
select * from student3;

六,完整性约束

1.目的:a.由于生活中需要避免重名的情况,所以数据库中某列使用完整性约束来限定此类要求。
b.用于保证数据的完整性和一致性
2.约束的类型
a foreign key() 标识该字段为该表的主键,可以唯一的标识记录,不可以为空
b unique key() 标识该字段为该表的外键,实现表与表(父表主键/子表1外键/子表2外键)之间的关联
c auto_incremen 标识该字段的值是唯一的,可以为空,一个表中可以有多个UNIQUE KEY
d default 为该字段设置默认值
e notnull 标识该字段不能为空
f unsigned 无符号,正数
g zerofill 使用0填充,例如0000001

七,约束类型测试

1.掌握约束类型default-默认值,not null-非空
创表
create table student.student4(
id int not null,
name varchar(50) not null,
sex enum ('m','f') default 'm' not null,
age int unsigned default 18 not null,
hobby set('music','disc','dance','book') default 'book,dance' );

插入数据
mysql> insert into student4 values(1,'jack','m',20,'book');
Query OK, 1 row affected (0.00 sec)

mysql> select * from student4;

mysql> insert into student4(id,name) values(2,'robin');
Query OK, 1 row affected (0.00 sec)
查询数据
mysql> select * from student4;

2.掌握主键约束特性。
创表
mysql> create table student6(
id int primary key not null auto_increment,
name varchar(50) not null,
sex enum('male','female') default 'male',
age int default 18
);
插入数据
mysql> insert into student6 values (1,'alice','female',22);

mysql> insert into student6(name,sex,age) values
('jack','male',19),
('tom','male',23);
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0
查询
select * from student6;

3.掌握唯一约束
创表
CREATE TABLE company.department1 (
dept_id INT,
dept_name VARCHAR(30) UNIQUE,
comment VARCHAR(50));
插入正确数据
insert into department1 values (1,'zhangsan','yyy');
insert into department1 values (1,NULL,'yyy');
insert into department1 values (1,NULL,'yyy');
插入错误数据
insert into department1 values (1,'zhangsan','yyy');
ERROR 1062 (23000): Duplicate entry 'zhangsan' for key 'dept_name'
查询
select * from company.department1;

4.掌握外键约束 FOREIGN KEY
创表
mysql> create table employees(
name varchar(50) not null,
mail varchar(20),
primary key(name)
)engine=innodb;

mysql> create table payroll(
id int not null auto_increment,
name varchar(50) not null,
payroll float(10,2) not null,
primary key(id),
foreign key(name) references employees(name) on update cascade on delete cascade
)engine=innodb;

查看表结构
desc employees;
show create table payroll\G

插入测试数据
insert into employees values ('zhangsan','zhangsan@126.com');
insert into payroll values (1,'zhangsan',20000.23);
select * from employees;
select * from payroll;

父表更新,子表会如何?
update employees set name='zhangsansss' where name='zhangsan';
select * from payroll;

父表删除,子表会如何
delete from employees where name='zhangsansss';

八,MySQL数据库的一些基本操作

1.修改表名称
altertable 表名 rename 新表名称
2.增加字段
altertable add 字段名称 数据类型 (约束条件)
3.删除字段
drop 字段名称 (列)
4.修改字段
altertable 表名 change 旧字段名称 新字段名称 新数据类型 (完整约束条件);

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342

推荐阅读更多精彩内容