DBA第四天

1.mysql内置的功能

1.连接数据库
-u (以什么身份登录)
-P (以哪个端口登录)
-S (以哪个路径启动)
-h (连接什么地址)
-p (密码)
-e (不交互,不进入数据库执行命令)
< (回复数据)

例子:

 (1)mysql -uroot -p -S /tmp/mysql.sock
 (2)mysql -uroot -p -h10.0.0.51 -P3306
 (3)mysql -uroot -p -e "show databases;"
 (4)mysql -uroot -p123 < /root/world.sql (world.sql 为数据,平时恢复数据的时候经常会用到)

2.内置命令
help 打印mysql帮助
\c=ctrl+c
\q quit; exit; ctrl+d 退出mysql
\G 格式化显示(原来是横着显示,在结尾处+\G就会竖着显示) 例如:mysql> select * from.user\G
source 恢复备份 (和<号命令一样)

3.SQL基础应用
(1)SQL介绍
结构化的查询语言
关系型数据库通用语言的命令
遵循SQL92的标准(SQL_MODE)
(2)SQL常用种类
DDL 数据定义语言
DCL 数据控制语言
DML 数据操作语言 (data manage language)都是缩写
DQL 数据查询语言

4.SQL引入-数据库的逻辑结构

库名字:
库属性:字符集,排序规则

表名字:
表属性:存储引擎类型,字符集,排序规则
列名字:
列属性:数据类型,约束,其他属性
数据行

5.字符集(charset)
相当于MySQL的密码本(编码表)
show charset;
utf8 :3字节
utf8mb4 :4字节,支持emoji(表情)

6.排序规则:collation
mysql> show collation;
对于英文字符串的大小写的敏感
utf8mb4_general_ci 大小写不敏感
utf8mb4_bin 大小写敏感(存拼音,日文啥的)

7.数据类型介绍
(1)数字
整数
tinyint : -128~127
int :-2的31次方 ~ 2的31次方-1
浮点型数
(2)字符串
char(100)
定长的字符串类型(不管存多少,都会占用100个字符的存储空间,未填满的空间使用空格填充)
varchar
变长字符串类型,每次存储数据之前,都要判断一下长度,按需分配此盘空间
会单独申请一个字符空间的空间存储字符长度(少于255,如超过255,则占用两个存储空间)

8.如何选择这两个数据类型?
(1)少于255个字符串长度,定长的列值,选择char
(2)多于255字符长度,变长的字符串,可以选择varchar
enum 枚举数据类型
address enum(‘sz’,‘sh’,'bj’分别定义为 1 2 3 储存时就储存1 2 3即可)
以上数据类型可能会影响到索引的性能
(3)时间
datetime
范围为从 1000-01-01 00:00:00.000000 至 9999-12-31 23:59:59.999999。
timestamp
1970-01-01 00:00:00.000000 至 2038-01-19 03:14:07.999999。
unix时间戳
timestamp会受到时区的影响

(4)二进制
略了

9.DDL的应用
(1)DDL语句库的定义
创建库

create database zabbix charset utf8mb4 collate utf8mb4_bin;
创建    数据库     库名称  设字符  字符集版本 校对规则   大小写敏感型
查看库情况
show databases;
show create databases zabbix;
删除库(不代表生产操作,必须谨慎)
drop database zabbix;
修改库
注意:一定是从小往大了改,比如utf8--->utf8mb4
目标字符集一定是源字符集的严格超级.
一般默认创建的库都是拉丁
cerate database zabbix;
show create database zabbix;
这就可以看到它的信息为(字符集)拉丁然后修改
alter database zabbix charset utf8mb4;

(2)库的定义规范
建库(名)使用小写字符
建库(名)不能以数字开头(语法就不允许)
不能是数据库内部的关键字
必须设置字符集(charset)

(3)DDL 表定义
建表
表名,列名,列属性,表属性
列属性

primary key主键约束,表中只能有一个,非空且唯一
not null非空约束,不允许空值
unique key唯一键约束.不允许重复
default一般配合not null一起使用
unsigned无符号,一般是配合数字列,非负数
comment注释
auto_increment自增长的列

例如创建一张表格

create table stu (
id int primary key not null auto_increment comment '学号', (第一个列就定义完了)
sname varchar(255) not null comment '姓名',
age tinyint unsigned not null default 0 (默认值) comment '年龄',
gender enum('m','f','n') not null default 'n' comment '性别',
intime datetime not null default now() comment '入学时间'
)engine innodb charset utf8mb4;

这就完成了创建表格.
建表规范
(1) 表名小写字母,不能是数字开头,不能是保留字符,使用和业务有关的表名
(2) 选择合适的数据类型及长度.
(3) 每个列设置 not null+default 对于数据0填充,对字符使用有效字符串
(4) 每个列必须要加注释 commen ‘xxx’
(5) 每个表必须设置存储引擎和字符集
(6) 主键列尽量是无关列数字列,最好是自增长
(7) enum类型不要保存数字,自能是字符串类型.

查询建表信息

show table;
show create  table stu;

创建一个表结构一样的表

create table test like stu;

删表(危险命令)

drop table test;

修改表
在stu表中添加qq列

DESC stu;
ALTER TABLE stu ADD qq VARCHAR(20) NOT NULL UNIQUE COMMENT 'qq号';

在sname后加微信列

ALTER TABLE stu ADD wechat VARCHAR(64) NOT NULL UNIQUE  COMMENT '微信号' AFTER sname ;
注意*after sname的位置

在id列前加一个新列num

ALTER TABLE stu ADD num INT NOT NULL COMMENT '数字' FIRST;
DESC stu;

把刚才添加的列都删掉(危险)

ALTER TABLE stu DROP num;
ALTER TABLE stu DROP qq;
ALTER TABLE stu DROP wechat;

修改sname数据类型的属性

ALTER TABLE stu MODIFY sname VARCHAR(128)  NOT NULL ;
注意看清楚 modify是修改数据类型

将sgender 改为 sg 数据类型改为 CHAR 类型

ALTER TABLE stu CHANGE sgender sg CHAR(1) NOT NULL DEFAULT 'n' ;
DESC stu;
注意看清楚change是修改数据类型和名

10.DCL

grant
revoke

11.DML

insert
最标准的insert语句

INSERT INTO stu(id,sname,sage,sg,sfz,intime) 
VALUES (1,'zs',18,'m','123456',NOW());
SELECT * FROM stu;

省事的写法

INSERT INTO stu 
VALUES(2,'ls',18,'m','1234567',NOW());

针对性的录入数据

INSERT INTO stu(sname,sfz)
VALUES ('w5','34445788');

同时录入多行数据

INSERT INTO stu(sname,sfz)
VALUES ('w55','3444578d8'),('m6','1212313'),('aa','123213123123');
三个数据用括号括起来,然后逗号分隔就行
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值