1.使用MySQL
- 打开MySQL服务
- 使用root用户登录
2.创建数据库并插入数据
- 查看数据库
- 创建数据库
- 连接数据库database_name
- 查看表
- 创建表,列名(id/name/phone),数据类型(int/char/date),数据长度(10/12/20)
- 查看表
- 向表中添加数据
3.SQL 的约束
- 删除数据库
- 导入数据库
- 主键
- 默认值
- 外键
- 非空
- 唯一
- [主键 (PRIMARY KEY)
在一张表中通过主键就能准确定位到一行,因此主键十分重要;
主键不能有重复且不能为空]
- [默认值约束 (DEFAULT)
- [唯一约束 (UNIQUE)
- [外键 (FOREIGN KEY)
- [非空约束 (NOT NULL)
4.SELECT语句
- 基本语法
- 数学符号条件
- AND OR IN
- 通配符
- 排序
- SQL 内置函数和计算
- 子查询与连接查询
- 基本的SELECT语句
select name,age from employee;
- 数学符号条件(=,<,>,<=,>=)
select name,age from employee WHERE age>25;
select name,age,phone from employee WHERE name='Mary';
- 筛选and&or
#筛选出 age 小于 25,或 age 大于 30
- 筛选in¬ in
#查询在dpt3或dpt4的人
- 通配符(like '_'&'%')
#要只记得电话号码前四位数为1101,而后两位忘记了,则可以用两个 _ 通配符代替
select name,age,phone from employee WHERE name LIKE 'J%';
#只记名字的首字母,又不知道名字长度,则用 % 通配符代替不定个字符
- 排序(order by ____ desc&asc)
#按salary降序排列
- SQL 内置函数和计算
SELECT MAX(salary) AS max_salary,MIN(salary) FROM employee;
#计算出salary的最大、最小值
- 子查询
WHERE of_dpt IN
(SELECT in_dpt FROM employee WHERE name='Tom');
#想要知道名为 "Tom" 的员工所在部门做了几个工程。员工信息储存在 employee 表中,但工程信息储存在project 表中
- 连接查询
FROM employee,department
WHERE employee.in_dpt = department.dpt_name
ORDER BY id;
#各员工所在部门的人数,其中员工的 id 和 name 来自 employee 表,people_num 来自 department 表
SELECT id,name,people_num
FROM employee JOIN department
ON employee.in_dpt = department.dpt_name
ORDER BY id;
5.修改删除
- 对数据库、数据库表、数据库表项及记录的修改和删除方法
- 对数据库的修改
#删除名为test_01的数据库
DROP DATABASE test_01;
- 对表修改
rename TABLE 原名 to 新名字;
alter TABLE 原名 rename 新名;
alter TABLE 原名 rename to 新名;
#修改 table_1 的名字为 table_2
rename table table_1 to table_2;
- 删除表格
drop table 表名字;
drop table table_2;
- 修改表中列
ALTER TABLE 表名字 ADD COLUMN 列名字 数据类型 约束(after 列名字)(first);
ALTER TABLE 表名字 ADD 列名字 数据类型 约束(after 列名字)(first);
#加入 height (身高)一个列并指定DEFAULT 约束
alter table employee add height int(4) default '179';
#新增一列 weight (体重)放置在 age (年龄)的后面
alter table employee add column weight int(4) default '120' after age;
- 删除一列
ALTER TABLE 表名字 DROP COLUMN 列名字;
ALTER TABLE 表名字 DROP 列名字;
- 重命名一列
ALTER TABLE 表名字 change 原列名 新列名 数据类型 约束;
alter table employee change height shengao int(4) default 170;
- 改变数据类型
alter table 表名字 modify 列名字 新数据类型;
- 修改表中内容
update 表名字 set 列1=值1,列2=值2 where 条件;
update employee set age=21,salary=3000 where name='Tom';
- 删除一行记录
delete from 表名字 where 条件;
delete from employee where name = 'Tom';
6.其他
- 索引:可以加快查询速度
- 视图:是一种虚拟存在的表
- 导入:从文件中导入数据到表
- 导出:从表中导出到文件中
- 备份:mysqldump 备份数据库到文件
- 恢复:从文件恢复数据库
- 索引
CREATE INDEX 索引名 ON 表名字 (列名);
ALTER TABLE employee ADD INDEX idx_id (id); #在employee表的id列上建立名为idx_id的索引
CREATE INDEX idx_name ON employee (name); #在employee表的name列上建立名为idx_name的索引
- 视图
CREATE VIEW v_emp(v_name,v_age,v_phone) as select name,age,phone from employee;
- 导入
load data infile '/tmp/SQL6/in.txt' into table employee;
- 导出
SELECT * INTO OUTFILE '/tmp/out.txt' FROM employee;
- 备份
mysqldump -u root 数据库名 表名字>备份文件名; #备份整个表
mysqldump -u root mysql_shiyan > bak.sql;
- 恢复
mysql -u root test < bak.sql
use test
show tables;