1.创建/删除数据库
create database 数据库名字; //注意分号不要漏掉
drop database 数据库名字;
2.显示数据库(用来检查是否数据库创建成功)
show databases;
3.确定对哪一个数据库进行操作
use <数据库名字>;
4.查看当前数据库有几张表
show tables;
5.新建一张表
create table 表的名字
(
列名a 数据类型(数据长度),
列名b 数据类型(数据长度),
列名c 数据类型(数据长度)
)
6.查看表中的内容
select * from 表名;
7.插入数据
insert into 表的名字(列名a,列名b,列名c) values(值1,值2,值3);
例如插入多条数据:insert into course values(1,'math'),(2,'chinese');
8.常用约束
主键 primary key
默认值 default
唯一 unique
外键 foreign key 例如:foreign key(sid) references student(sid)
非空 not null
9.IN,NOT IN
IN和NOT IN 用于筛选'在'或'不在'某个范围内的结果,例如:
select * from employee where in_dpt in ('dpt3','dpt4');
10.LIKE以及通配符
LIKE用于实现模糊查询,与通配符联用 _和%
_代表一个未指定字符,%代表不定个未指定字符
例如:
select * from employee where phone like '1101__'; //查询1101开头的6位数电话号码
select * from employee where name like 'J%'; //查询名字首字母为J的人
11.order by
排序,ASC,DESC,默认是升序ASC
12.SQL内置函数
COUNT,SUM,AVG,MAX,MIN
例如计算salary的最大最小值
select MAX(salary) as max_salary,MIN(salary) from employee; //使用AS可以给值重命名
13.子查询 having
当涉及到多个表去查询信息时使用,having和where的区别在于having是对分组后的数据进行筛选
例如:
SELECT of_dpt,COUNT(proj_name) AS count_project FROM project GROUP BY of_dpt
HAVING of_dpt IN
(SELECT in_dpt FROM employee WHERE name='Tom'); //注意括号
第二个select语句将返回一个集合的数据形式,然后被第一个select语句用in进行判断。
14.连接查询 join on
15.重命名一张表
rename table 原名 to 新名字;
alter table 原名 rename 新名字;
alter table 原名 rename to 新名字;
15.删除一张表
drop table 表名字;
16.增加一列
alter table 表名字 add column 列名字 数据类型 约束;
alter table 表名字 add 列名字 数据类型 约束;
若想让列插入到指定位置,则需要在最后加上after 列x,即表示插入到x列后面,若想放在第一列则在最后加first
ALTER TABLE employee ADD weight INT(4) DEFAULT 120 AFTER age; //新增一列weight到age后面
17.删除一列
alter table 表名字 drop column 列名字;
alter table 表名字 drop 列名字;
18.重命名一列
alter table 表名字 change 原列名 新列名 数据类型 约束;
//重命名语句后的数据类型不能省略,否则重命名失败。当原/新列名相同时,指定新的数据类型或约束,就可用于修改数据类型或约束。
19.改变数据类型
alter table 表名字 modify 列名字 新数据类型; //上面那种也是可以用来修改数据类型的
20.修改表中某个值
update 表名字 set 列1=值1,列2=值2 where 条件;
UPDATE employee SET age=21,salary=3000 WHERE name='Tom';
21.删除一行记录
delete from 表名字 where 条件;
DELETE FROM employee WHERE name='Tom';
22.索引 加快查询速度
alter table 表名字 add index 索引名(列名);
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的索引
23.视图 虚拟存在的表
create view 视图名(列a,列b,列c) as select 列1,列2,列3 from 表名字;
CREATE VIEW v_emp (v_name,v_age,v_phone) AS SELECT name,age,phone FROM employee;
24.导入
source * .sql
load data infile '文件路径和文件名' into table 表名字;
查看导入导出文件所在路径: show variables like '%secure%';
25.导出
select 列1,列2 into outfile '文件路径和文件名' from 表名字;
例如:SELECT * INTO OUTFILE '/var/lib/mysql-files/