MySQL基础
2017-05-26 本文已影响10人
c4a1d989518e
- 打开MySQL
# 启动 MySQL 服务
sudo service mysql start
# 使用 root 用户登录,实验楼环境的密码为空,直接回车就可以登录
mysql -u root
- 查看数据库
show databases;
- 连接数据库
use <数据库名>
- 查看表
show tables;
- 退出
quit 或者 exit
- 新建数据库
CREATE DATABASE <数据库名字>;
- 新建数据表
CREATE TABLE 表的名字
(
列名a 数据类型(数据长度),
列名b 数据类型(数据长度),
列名c 数据类型(数据长度)
);
example:
CREATE TABLE employee (id int(10),name char(20),phone int(12));
- 插入数据
查看表中的数据
SELECT * FROM employee;
我们尝试向 employee 中加入 Tom、Jack 和 Rose:
INSERT INTO employee(id,name,phone) VALUES(01,'Tom',110110110);
INSERT INTO employee VALUES(02,'Jack',119119119);
INSERT INTO employee(id,name) VALUES(03,'Rose');
- SELECT查询
SELECT 要查询的列名 FROM 表名字 WHERE 限制条件;
SELECT name,age FROM employee WHERE age>25;
查找一个名字为 Mary 的员工的 name,age 和 phone:
SELECT name,age,phone FROM employee WHERE name='Mary';
“AND”与“OR”
SELECT name,age FROM employee WHERE age<25 OR age>30;
IN 和 NOT IN
用于筛选“在”或“不在”某个范围内的结果,比如说我们要查询在dpt3或dpt4的人:
SELECT name,age,phone,in_dpt FROM employee WHERE in_dpt IN ('dpt3','dpt4');
通配符
关键字 LIKE 在SQL语句中和通配符一起使用,通配符代表未知字符。SQL中的通配符是 _ 和 % 。其中 _ 代表一个未指定字符,% 代表不定个未指定字符。
SELECT name,age,phone FROM employee WHERE phone LIKE '1101__';
SELECT name,age,phone FROM employee WHERE name LIKE 'J%';
- 对结果排序
为了使查询结果看起来更顺眼,我们可能需要对结果按某一列来排序,这就要用到 ORDER BY 排序关键词。默认情况下,ORDER BY的结果是升序排列,而使用关键词ASC和DESC可指定升序或降序排序。
SELECT name,age,salary,phone FROM employee ORDER BY salary DESC;
- SQL 内置函数和计算
SQL 有 5 个内置函数,COUNT、SUM、AVG、MAX、MIN。其中 COUNT 函数可用于任何数据类型(因为它只是计数),而 SUM 、AVG 函数都只能对数字类数据类型做计算,MAX 和 MIN 可用于数值、字符串或是日期时间数据类型。
SELECT MAX(salary) AS max_salary,MIN(salary) FROM employee;
- 子查询
想要知道名为 "Tom" 的员工所在部门做了几个工程。员工信息储存在 employee 表中,但工程信息储存在project 表中。
SELECT of_dpt,COUNT(proj_name) AS count_project FROM project
WHERE of_dpt IN
(SELECT in_dpt FROM employee WHERE name='Tom');
- 连接查询
子查询只有在结果来自一个表时才有用。但如果需要显示两个表或多个表中的数据,这时就必须使用连接 (join) 操作。连接的基本思想是把两个或多个表当作一个新的表来操作
SELECT id,name,people_num
FROM employee,department
WHERE employee.in_dpt = department.dpt_name
ORDER BY id;
参考文章:
Mysql