新博客地址:https://kyzhou.bitcron.com/
MySQL 第一章
参考:实验楼 https://www.shiyanlou.com/courses
sudo service mysql start
或者通过
rpm -qa | grep mysql
如果已安装,可以进行卸载:
rpm -e --nodeps mysql
检查系统中是否安装mysql数据库,如果没有安装:
sudo apt-get install mysql-server #mysql的服务端和核心程序。
sudo apt-get install mysql-client #mysql的客户端安装
安装好服务端,和客户端后检查验证是否安装成功。
sudo netstat -tap | grep mysql
此时可以修改mysql的配置文件
sudo vim /etc/mysql/my.cnf
启动mysql数据库并登陆:
mysql -u root
查看有哪些数据库:
show databases;
连接其中的一个数据库
use <数据库名称>
查看该数据库中的表格:
show tables;
退出该mysql
quit 或者exit
MySQL第二章
一、创建一张表格
CREATE DATABASE mysql_shiyan;
查看创建的表格show databases;
连接上我们创建好的数据库use mysql_shiyan;
查看改数据库中有几张表show tables;
注意:数据表(table)简称表,他是数据库最重要的组成部分之一,数据库只是一个框架,表才是实质内容。一个数据库中一般会有多张表他们之间通过建立关系联系起来,成为一个可以交叉查阅的数据。
在数据库中新建一张表
CREATE TABLE 表名
(
列名a 数据类型(数据长度),
);
查看创建的表的表中的内容
SELECT * FROM employee;
用INSERT向数据库中插入数据
INSERT INTO 表的名字(列名a,列名b)
VALUES(值1,值2);
MySQL第三章
SQL约束:约束是一种限制。它通过对表的行或者列做出限制来确保表的数据的完整性、唯一性。
约束类型 | 主键 | 默认值 | 唯一 | 外键 | 非空 |
---|---|---|---|---|---|
关键字 | PRIMARY KEY | DEFAULT | UNIQUE | FOREIGN KEY | NOT NULL |
删除已有数据库:
DROP DATABASE 数据库名称
加载数据:
source ***.sql
一、主键约束:PRIMARY KEY 是约束表中的某一行,作为这一行的唯一标识,在一张表中通过主键就能准确的定位某一行。主键不能重复,且不能为空。
-
主键类型,和写法:
CREATE TABLE employee
(id int(10) PRIMARY KEY,
name CHAR(20)); -
CONSTRAINT dpt_pk PRIMARY KEY (dpt_name)
-
复合主键:
CONSTARINT proj_pk PRIMARY KEY (proj_num,proj_name)
二、默认约束:(DEFAULT)
people_num INT(10) DEFAULT ‘10’
唯一约束:(UNIQUE)
- UNIQUE (phone)
三、外键约束:(FOREIGN KEY)
外键既能确保数据的完整性,也能表现表之间的关系。
一个表可以有多个外键,每个外键必须REFERENCES另外一个表的主键,被外键约束的列,取值必须在他参考的列中有对应的值。
CONSTRAINT emp_fk FOREIGN KEY (in_dpt) REFERENCES department(dpt_name);
四、非空约束:(NOT NULL)
MySQL第四章
SELECT的用法
SELECT基本语法
-
将创建SQL表写成sql文件,同时创建插入数据的SQL表。用source导入
-
SELECT语句的基本格式:
SELECT 查询的列名 FROM 表名 WHERE 限制条件;
-
数学符号条件:
SELECT name,age FROM employee WHERE age> 25;
-
逻辑运算符 AND和OR:
SELECT name,age FROM employee WHERE age>25 OR age<30;
SELECT name,age FROM employee WHERE age BETWEEN 25 AND 30;
-
IN 和 NOT IN:
SELECT name,age,phone,in_dpt FROM employee WHERE in_dpt IN(‘dpt3’,‘dpt4’)
-
通配符:
在SQL中 __ 和%是通配符,其中 __ 代表一个未指定字符,%代表不定个未指定字符。与LIKE连用。
SELECT name,age,phone FROM employee WHERE phone LIKE '1101__'
表示号码的后两位不知道。
SELECT name,age,phone FROM employee WHERE name LIKE ‘J%’
-
排序
通过DESC和ASC来控制升序还是降序。
SELECT name,age,salary,phone FROM employee ORDER BY salary DESC
-
内置函数和计算
SQL允许对表中的数据进行计算。对此,SQL有5个内置函数,这些函数对SELECT的结果进行操作。
函数名: | COUNT | SUM | AVG | MAX | MIN |
---|
SELECT MAX(salary) AS max_salary ,MIN(salary) AS MIN(salary) FROM employee
- 子查询
例:查询“Tom”的员工所在的部分共有多少项目,员工信息存在employee表中,工程信息存在project表中。
SELECT of_dpt ,COUNT(project_name) AS count_project FROM project GROUP BY of_dpt HAVING of_dpt IN (SELECT in_dpt FROM employee WHERE name=“Tom”);
- 连接查询 JOIN
- 在处理多张表时,子查询,仅在结果来自一个表时才有用,如果需要显示两个或多个表中的数据,这是要用JOIN。
SELECT id,name,people_num FROM employee,departmant
WHERE employee.in_dpt = department.dpt_anme
ORDER BY id
MySQL第五章
数据库的修改和删除工作:
- 删除数据库
DROP DATABASE test_01
- 重命名一张表
RENAME TABLE 原名 TO 新名字;
或者
ALTER TABLE 原名 RENAME 新名;
或者
ALTER TABLE 原名 RENAME TO新名;
- 删除一张表:
DROP TABLE 表名字;
- 增加一列
ALTER TABLE 表名 ADD COLUMN 列名字 数据类型 约束;
或者:
ALTER TABLE 表名字 ADD 列名字 数据类型 约束;
可以发现:新增加的列,被默认放置在这张表的最右边。如果要把增加的列插入在指定位置,则需要在语句的最后使用AFTER关键词(“AFTER 列1” 表示新增的列被放置在 “列1” 的后面)。
如果想放在第一列用FIRST关键字
- 删除一列,和刚才的增加一列很相似,只是将ADD改为DROP.
- 重命名一列
ALTER TABLE 表的名字 CHANGE 原列名 新列名 数据类型 约束;
注意:这条重命名语句后面的 “数据类型” 不能省略,否则重命名失败。
如果仅要修改数据类型还可以用
ALTER TABLE 表名 MODIFY 列名 新数据类型;
- 修改表中的某个值
UPDATE 表名 SET 列1=值1,列2=值2 WHERE 条件;
- 删除一行数据
DELETE FROM WHERE 条件
MySQL第六章
本章学习内容。索引、视图、导入、导出、备份和恢复。
-
对表中的某个列建立索引,有以下两种语句格式:
ALERT TABLE 表的名字 ADD INDEX 索引名 (列名);
或者
CREATE INDEX 索引名字 ON 表名(列名);
-
查看建立的索引
SHOW INDEX FROM 表的名字
-
视图
视图是从一个或者多个表中导出的表,是一种虚拟存在的表。
数据库中存放的视图的定义,而没有存放视图中的数据,这些数据存放在原来的表中;
CREATE VIEW 视图名称(列a,列b,列c) AS SELECT 列1,列2,列3 FROM 表的名字;
-
导入
LOAD DATA INFILE ‘文件路径和文件名’ INTO TABLE 表的名字;
-
导出
SELECT 列1,列2 INTO OUTFILE ‘文件路径’ FROM 表的名字;
-
数据备份
mysqldump -u root 数据名>文件名;
备份整个数据库
mysqldump -u root 数据库名 表名字> 备份文件名;
-
用备份的文件恢复数据库
source 文件;
另一种恢复方式
mysql -u root;
CREATE DATABASE test;
mysql -u root test < back.sql;