参考
实验楼——实操:https://www.shiyanlou.com/courses/9
书:《MySQL必知必会》
安装
环境:Ubuntu18.04 Linux
step 1
#安装 MySQL 服务端、核心程序
sudo apt-get install mysql-server
#安装 MySQL 客户端
sudo apt-get install mysql-client
step 2
实验楼提供检验是否安装成功的代码:
sudo netstat -tap | grep mysql
tips:apt-get找不到netstat包,需安装net-tools才可使用
net-tools包括arp、hostname、ifconfig、netstat、rarp、route、plipconfig、slattach、mii-tool、iptunnel、ipmaddr工具
最后安装成功再用代码检验:(成功如图)
启动MySQL
实验楼:sudo service mysql start
(但回车后终端完全没反应emm)
后查有三种方法,采取第二种:
- 启动(记得sudo)
- service启动:
service mysql start
- mysqld脚本启动:
/etc/init.d/mysql start
- safe_mysqld启动:
safe_mysql&
- 停止
- service启动:
service mysql stop
- mysqld脚本启动:
/etc/init.d/mysql stop
mysqladmin shutdown
- 重启
- service启动:
service mysql restart
- mysqld脚本启动:
/etc/init.d/mysql restart
- 检验
- 是否启动:
ps -aux | grep musqld
- 是否监听端口命令
netstat -tl | grep mysql
进入MySQL
实验楼提供mysql -u root
(依旧不适用)
最后:mysql -u root -p
,输入密码即可
书上另外提供指定用户名等方式:
mysql -u ben
用户名+主机名+端口+口令
mysql -u ben -p -h myserver -p 9990
tips:出现问题:
很早之前就安装了MySQL,我完全记不得有设置过,上网搜索:
初始密码为乱码/0,0错;
怀疑忘记密码(
在忘记root密码的时候,可以这样
以windows为例:
- 关闭正在运行的MySQL服务。
- 打开DOS窗口,转到mysql\bin目录。
- 输入mysqld --skip-grant-tables 回车。–skip-grant-tables 的意思是启动MySQL服务的时候跳过权限表认证。
- 再开一个DOS窗口(因为刚才那个DOS窗口已经不能动了),转到mysql\bin目录。
- 输入mysql回车,如果成功,将出现MySQL提示符 >。
- 连接权限数据库: use mysql; 。
- 改密码:update user set password=password(“123”) where user=“root”;(别忘了最后加分号) 。
- 刷新权限(必须步骤):flush privileges; 。
- 退出 quit。
- 注销系统,再进入,使用用户名root和刚才设置的新密码123登录。
另外:https://www.jianshu.com/p/f2025014cfda
还没尝试嗯(
利用实验楼提供的虚拟环境尝试
-
新建数据库
CREATE DATABASE 名称;
,show databases;
链接:use;查表:show tables
SQL不分大小写
一定记得“;”!!!!!
由书:命令用;或者\g结束,仅按enter没用 -
建表
CREATE TABLE 表的名字
(
列名a 数据类型(数据长度),
列名b 数据类型(数据长度),
列名c 数据类型(数据长度)
);
括号内是数据长度!不是个数!
数据类型:https://blog.youkuaiyun.com/anxpp/article/details/51284106#comments
查表内容:SELECT * FROM employee;
(如果查某几列,则用列名替代星号,列名间用逗号隔开——返回数据为随机顺序)
(星号又称通配符)
书中:SHOW COLUMUNS FROM employee;
或者DESCRIBE employee;
插入:INSERT INTO 表的名字(列名a,列名b,列名c) VALUES(值1,值2,值3);
如果只写入部分数据,一定需在表名后括号内注明!否则错误(
- SQL约束
- 主键:记录数据完全一致时,通过主键进行区分。
name int(10)PRIMARY KET; - 默认值:为空时自动填充(否则NULL)。
name int(10)DEFAULT ‘23456’; - 唯一约束:同列数据不能有相同值,否则insert报错。
UNIQUE(name); - 非空约束:不能为空
name int(10)NOT NULL; - 外键约束:(没懂,再研究
- SELECT语句
SELECT DISTINCT +列名 from xxx
检索后只返回不同值,应用于检索的多个列。- 限制结果:
LIMIT 5
只返回前5行;
LIMIT 5,5
返回第五行后的五行,即6~10行;
没有足够行则只返回有的;
*在MySQL 5中,LIMIT 3,4
=LIMIT 4 OFFSET 3
完全限定名(没懂