廖雪峰SQL教程读书笔记(五):SQl语句小技巧及MySQL中的应用

  • MySQL

安装完MySQL后,除了MySQL Server,即真正的MySQL服务器外,还附赠一个MySQL Client程序。MySQL Client是一个命令行客户端,可以通过MySQL Client登录MySQL,mysql -u root -p。然后,输入SQL语句并执行。也可以使用可视化图形界面MySQL Workbench管理MySQL。

MySQL Client的可执行程序是mysql,MySQL Server的可执行程序是mysqld。

MySQL Workbench是一个图形客户端,它对MySQL的操作仍然是发送SQL语句并执行。因此,本质上,MySQL Workbench和MySQL Client命令行都是客户端,和MySQL交互,唯一的接口就是SQL。

在MySQL Client中输入的SQL语句通过TCP连接发送到MySQL Server。默认端口号是3306,即如果发送到本机MySQL Server,地址就是127.0.0.1:3306

也可以只安装MySQL Client,然后连接到远程MySQL Server。假设远程MySQL Server的IP地址是10.0.1.99,那么就使用-h指定IP或域名:mysql -h 10.0.1.99 -u root -p

# 登录服务器
mysql -h 10.0.1.99 -u root -p   # 重指定ip地址
mysql -u root -p   # 正常登录MySQL Client
-----------------------------------------------------
# 查看、创建、删除数据库
SHOW DATABASES;   # information_schema、mysql、performance_schema和sys是系统库,其他是用户创建

CREATE DATABASE test;   # 创建一个叫test的数据库

DROP DATABASE test;   # 删除test数据库

USE test;   # 切换到test数据库
-----------------------------------------------------
# 表操作
SHOW TABLES;   # 查看当前数据库中所有的表

DESC students;   # 查看一个表的结构

SHOW CREATE TABLE students;   # 查看创建表的SQL语句

CREATE TABLE students;   # 创建表

DROP TABLE students;   # 删除表

ALTER TABLE students ADD COLUMN birth VARCHAR(10) NOT NULL;   # 增加一列birth

ALTER TABLE students CHANGE COLUMN birth birthday VARCHAR(20) NOT NULL;   # 把列名改为birthday,类型改为VARCHAR(20)

ALTER TABLE students DROP COLUMN birthday;   # 删除列
-------------------------------------------------------
# 退出MySQL
EXIT   # 只是断开客户端与服务器的连接,MySQL服务器仍然在继续运行
  • SQL语句小技巧

REPLACE INTO students (id, class_id, name, gender, score) VALUES (1, 1, '小明', 'F', 99);   # 如果id=1存在,先删除原纪录,再插入新纪录;如果不存在,则新建插入
INSERT INTO students (id, class_id, name, gender, score) VALUES (1, 1, '小明', 'F', 99) ON DUPLICATE KEY UPDATE name='小明', gender='F', score=99;   #若id=1的记录不存在,INSERT语句将插入新记录,否则,当前id=1的记录将被更新,更新的字段由UPDATE指定。
INSERT IGNORE INTO students (id, class_id, name, gender, score) VALUES (1, 1, '小明', 'F', 99);   #若`id=1`的记录不存在,`INSERT`语句将插入新记录,否则,不执行任何操作。
CREATE TABLE students_of_class1 SELECT * FROM students WHERE class_id=1;   # 创建一个新表跟原表一样:快照
INSERT INTO statistics (class_id, average) SELECT class_id, AVG(score) FROM students GROUP BY class_id;   # 将查询结果写入表中
  • 参考

  1. 廖雪峰的官方网站

.
.
.
2019-01-04 21:27:26写于变革的时代,降准1个点,这才刚刚开始

猜你喜欢

转载自blog.csdn.net/The_Time_Runner/article/details/85801535