-u # 指定连接的用户
-p # 指定用户密码
-S # 指定sock文件
-h # 指定数据库IP地址
-P # 指定数据库端口
-e # 执行一次指定的mysql语句
<
# 例子:
# 1. 使用套接字sock文件连接
mysql -uroot -p -S /tmp/mysql.sock
# 2. 使用ip/port连接
mysql -uroot -p -h10.0.0.51 -P3306
# 3. -e 免交互执行sql语句
[root@db01 ~]# mysql -uroot -p -e "show databases;"
4. < 恢复数据
[root@db01 ~]# mysql -uroot -p123 < /root/world.sql
help 打印mysql帮助
\c ctrl+c 结束上个命令运行
\q quit; exit; ctrl+d 退出mysql
\G 将数据竖起来显示
source 恢复备份文件
库
表
相当于MySQL的密码本(编码表)
show charset;
utf8 : 3个字节
utf8mb4 (建议): 4个字节,支持emoji
mysql> show collation;
# 对于英文字符串的,大小写的敏感
utf8mb4_general_ci 大小写不敏感
utf8mb4_bin 大小写敏感(存拼音,日文)
char(100)
varchar(100)
如何选择这两个数据类型?
enum 枚举数据类型
address enum('sz','sh','bj'.....)
1 2 3
# 悬念,以上数据类型可能会影响到索引的性能
CREATE DATABASE zabbix CHARSET utf8mb4 COLLATE utf8mb4_bin;
SHOW DATABASES;
SHOW CREATE DATABASE zabbix;
DROP DATABASE oldguo;
# 注意: 一定是从小往大了改,比如utf8--->utf8mb4.
# 目标字符集一定是源字符集的严格超级.
CREATE DATABASE oldguo;
SHOW CREATE DATABASE oldguo;
ALTER DATABASE oldguo CHARSET utf8mb4;
# 表名,列名,列属性,表属性
# 列属性
# 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;
建表规范
查询建表信息
SHOW TABLES;
SHOW CREATE TABLE stu;
DESC stu;
CREATE TABLE test LIKE stu;
DROP TABLE test;
# 在stu表中添加qq列 *****
DESC stu;
ALTER TABLE stu ADD qq VARCHAR(20) NOT NULL COMMENT 'qq号';
pt-osc
# 在sname后加微信列 ***
ALTER TABLE stu ADD wechat VARCHAR(64) NOT NULL UNIQUE COMMENT '微信号' AFTER sname;
# 在id列前加一个新列num ***
ALTER TABLE stu ADD num INT NOT NULL UNIQUE COMMENT '身份证' FIRST ;
DESC stu;
# 把刚才添加的列都删掉(危险,不代表生产操作) ***
ALTER TABLE stu DROP num;
DESC stu;
ALTER TABLE stu DROP qq;
ALTER TABLE stu DROP wechat;
# 修改sname数据类型的属性 ***
DESC stu;
ALTER TABLE stu MODIFY sname VARCHAR(64) NOT NULL COMMENT '姓名';
# 将gender 改为 sex 数据类型改为 CHAR 类型 ***
ALTER TABLE stu CHANGE gender sex CHAR(4) NOT NULL COMMENT '性别';
grant
revoke
DESC stu;
# 最偷懒
INSERT stu VALUES(1,'zs',18,'m',NOW());
SELECT * FROM stu;
# 最规范
INSERT INTO stu(id,sname,age,sex,intime)
VALUES (2,'ls',19,'f',NOW());
# 针对性的录入数据
INSERT INTO stu(sname,age,sex)
VALUES ('w5',11,'m');
# 一次性录入多行
INSERT INTO stu(sname,age,sex) VALUES
('aa',11,'m'),
('bb',12,'f'),
('cc',13,'m');
UPDATE stu SET sname='aaa';
SELECT * FROM stu;
UPDATE stu SET sname='bb' WHERE id=6;
DELETE FROM stu;
DELETE FROM stu WHERE id=9;
# 使用update替代delete
ALTER TABLE stu ADD is_del TINYINT DEFAULT 0 ;
UPDATE stu SET is_del=1 WHERE id=7;
SELECT * FROM stu WHERE is_del=0;
create database school charset utf8mb4;
use school
# student :学生表
# sno: 学号
# sname:学生姓名
# sage: 学生年龄
# ssex: 学生性别
create table student (
sno int primary key not null AUTO_INCREMENT comment '学生学号',
sname varchar(32) not null comment '学生姓名',
sage tinyint(3) not null comment '学生年龄',
ssex enum('m','f','n') not null comment '学生性别'
) ENGINE INNODB CHARSET utf8mb4;
# teacher :教师表
# tno: 教师编号
# tname:教师名字
create table teacher (
tno int primary key not null AUTO_INCREMENT comment '教师编号',
tname varchar(32) not null comment '教师姓名'
) ENGINE INNODB CHARSET utf8mb4;
# course :课程表
# cno: 课程编号
# cname:课程名字
# tno: 教师编号
create table course (
cno int primary key not null AUTO_INCREMENT comment '课程编号',
cname varchar(32) not null comment '课程名字',
tno int not null comment '教师编号'
) ENGINE INNODB CHARSET utf8mb4;
# score :成绩表
# sno: 学号
# cno: 课程编号
# score:成绩
create table score (
sno int not null comment '学号',
cno int not null comment '课程编号',
score tinyint(3) not null comment '成绩'
) ENGINE INNODB CHARSET utf8mb4;
INSERT INTO student(sno,sname,sage,ssex)
VALUES (1,'zhang3',18,'m');
INSERT INTO student(sno,sname,sage,ssex)
VALUES
(2,'zhang4',18,'m'),
(3,'li4',18,'m'),
(4,'wang5',19,'f');
INSERT INTO student
VALUES
(5,'zh4',18,'m'),
(6,'zhao4',18,'m'),
(7,'ma6',19,'f');
INSERT INTO student(sname,sage,ssex)
VALUES
('oldboy',20,'m'),
('oldgirl',20,'f'),
('oldp',25,'m');
INSERT INTO teacher(tno,tname) VALUES
(101,'oldboy'),
(102,'hesw'),
(103,'oldguo');
DESC course;
INSERT INTO course(cno,cname,tno)
VALUES
(1001,'linux',101),
(1002,'python',102),
(1003,'mysql',103);
DESC score;
INSERT INTO score(sno,cno,score)
VALUES
(1,1001,80),
(1,1002,59),
(2,1002,90),
(2,1003,100),
(3,1001,99),
(3,1003,40),
(4,1001,79),
(4,1002,61),
(4,1003,99),
(5,1003,40),
(6,1001,89),
(6,1003,77),
(7,1001,67),
(7,1003,82),
(8,1001,70),
(9,1003,80),
(10,1003,96);
SELECT * FROM student;
SELECT * FROM teacher;
SELECT * FROM course;
SELECT * FROM score;