拿着我写好的文档给工作室成员上mysql课程
被一些人吐槽我的文档写的很详细了,我完全可以不用讲
也看到一些人我还在讲上面,他已经默默的看着文档做到最后了
手动比一个无奈的表情
概览
- 需要做的准备
- 数据库的基本操作
- 库的操作
- 表的操作
感觉格式上有一点点乱,还需要多加练习:)
需要做的准备
[+] 安装好mysql(xampp之类的都可以)
[+] 将mysql加至环境变量中(方便直接在命令行里使用mysql)
[+] 文中斜杠表示选择其一,而不是加上斜杠照打-.-
数据库的基本操作
- 登陆(默认情况)
1 | > mysql -u root -p #默认没有密码 |
- 修改密码(shell模式下)
1 | > mysqladmin -u root -p 旧密码(默认为空) password 123456 # -p后面为旧密码,password后面为新密码 |
- 退出
1 | quit |
用户管理
mysql关键字不区分大小写,但是一般推荐关键字用大写以便于区分
用户相关数据存储在mysql库中的user表内,可自行查看
或修改
- 创建用户
1 | CREATE USER 'admin'/'admin'@'localhost' IDENTIFIED BY 'password'; #单引号中内容按需求自行替换 |
- 删除用户
1 | DROP USER admin; |
- 赋予权限
1 | GRANT select/insert/delete/update/ALL ON test1/ *.* TO 'admin'; #赋予什么权限用于什么库上 |
数据库的备份与恢复
- 备份数据库
在shell模式下
1 | > mysqldump -u root -p test1>test1.sql #任意后缀都可以(貌似),用txt后缀可看出实际是如何备份的 |
- 恢复数据库
1 | > mysql -u root -p test1<test1.sql |
显示库/表
1 | SHOW DATABASES/TABLES; #SHOW之类用复数,创建修改之类用单数 |
库的操作
- 创建数据库
1 | CREATE DATABASE test1; #创建一个名为test的数据库 |
- 删除数据库
1 | DROP DATABASE test1; #删库然后跑路 |
- 打开数据库
1 | USE test1; #引用指定库 |
有人会问怎么退出这个库。实际上这个操作更像是指向一个库而不是进入一个库,还是可以用SHOW DATABASES之类的
表的操作
主要类型: INT(整数),CHAR/VARCHAR(字符串),DATE(日期)
CHAR和VARCHAR的区别:
CHAR长度固定,设了CHAR(10)的情况,不满会用空格补足到10位
VARCHAR长度可变,如数据长度为X,实际存储为X+1/2位(标识你输入的长度,超过255用2位,小于则1位)主要参数: NOT NULL(不能为空),AUTO_INCREMENT(自增),PRIMARY KEY(主键)
- 创建表
创建顺序:字段名 类型 额外选项(是否为空,默认值,是否自增,主键以及外键等等)
1 | CREATE table studio1( |
- 删除表
1 | DROP TABLE studio1; |
对表结构的修改(ALTER)
- 查看表字段
1 | SHOW COLUMNS FROM studio1; |
- 删除字段
1 | ALTER TABLE studio1 DROP kind; |
- 增加字段
1 | ALTER TABLE studio1 ADD sex INT(1); #默认插在最后 |
- 修改字段
可用MODIFY或CHANGE子句
1 | ALTER TABLE studio1 MODIFY age INT(2); #MODIFY修改属性 |
- 修改默认值
1 | ALTER TABLE studio1 ALTER birth SET DEFAULT '2000-1-1' ; |
- 修改表名
1 | ALTER TABLE studio1 RENAME TO xxx; |
对表内容的操作(增删改查)
- 增
1 | INSERT INTO studio1 |
- 删
自增情况下删除数据会导致断层,创建的下一条数据不会补上你删除的id
1 | DELETE FROM studio1; #删除表内所有数据 |
- 改
1 | UPDATE studio1 SET age=18 WHERE name='tom'; |
- 查(花式查法)
1 | SELECT name,age FROM studio1; |
模糊查询
1 | SELECT * FROM studio1 WHERE birth LIKE '2000%'; |
排序查询
1 | SELECT * FROM studio1 ORDER BY age ASC/DESC; #默认ASC(升序),DESC为降序 |
分组查询
COUNT(计数),SUM(总和),AVG(平均)
1 | SELECT name,COUNT(*) FROM studio1 GROUP BY name; #统计各个name出现次数 |
GROUP BY必须用在WHERE之后,ORDER BY之前
联合查询
联合查询用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中
UNION默认删除重复数据,UNION ALL保留重复数据
1 | SELECT * FROM studio1 UNION/UNION ALL SELECT * FROM studio2; |