1、SQL语言主要分为:
● DQL:数据查询语言,用于对数据进行查询,如select
● DML:数据操作语言,对数据进行增加、修改、删除,如insert、update、delete
● TPL:事务处理语言,对事务进行处理,包括begin transaction、commit、rollback
● DCL:数据控制语言,进行授权与权限回收,如grant、revoke
● DDL:数据定义语言,进行数据库、表的管理等,如create、drop
2、安装MySQL:
sudo apt-get install mysql-server
查看MySQL服务效果图:
ps -aux | grep mysql
ps说明
● ps 查看当前系统中的进程
● -a 表示所有用户
● -u 表示显示用户名
● -x 表示显示所有的执行程序
查看MySQL服务状态:
sudo service mysql status
停止、开启、重启MySQL服务:
sudo service mysql stop/start/restart
MySQL配置文件的介绍:
配置文件路径为: /etc/mysql/mysql.conf.d/mysqld.cnf
mysql客户端连接服务端:
mysql -uroot -pmysql
3、常用的数据类型:
○ 整数:int,bit
○ 小数:decimal
○ 字符串:varchar,char
○ 日期时间: date, time, datetime
○ 枚举类型(enum)
常见的约束:
○ 主键约束 primary key
○ 非空约束 not null
○ 惟一约束 unique
○ 默认约束 default
○ 外键约束 foreign key
○ unsigned 没有符号,signed 有符号
4、建库:
create database python varchar=utf8;
建表:
create table students(
id int unsigned primary key auto_increment not null,
name varchar(20) not null,
age tinyint unsigned default 0,
height decimal(5,2),
gender enum(‘boy’,‘girl’,‘**’)
);
添加字段:
alter table students add birthday datetime;
改名字及类型(表结构),alert 可以同时修改多个字段信息:
alter table students change 新名 旧名 datetime nt null(可以将原来的重新输入想要的字段结构);
删除:
alter table students drop birthday;
查看创建表或者库的sql语句:
show create database/table python/students;
删库/表:
drop database/table python/students;
5、查询表中的数据:
select */(字段) from 表名;
增加数据(上面的增加是增加的一列数据,本次增加是增加的一行数据):
insert into 表名 values (… …)
修改:
update 表名 set 列1=值1,列2=值2 … where 条件
删除:
delete from 表名 where 条件
as :起别名
distinct 可以去除重复数据行。
6、查询
● 常见的比较运算符有 >,<,>=,<=,!=
● 逻辑运算符and表示多个条件同时成立则为真,or表示多个条件有一个成立则为真,not表示对条件取反
● like是模糊查询关键字、%表示任意多个任意字符、_表示一个任意字符
● between-and限制连续性范围、 in限制非连续性范围
● 判断为空使用: is null、判断非空使用: is not null
排序:
select * from students where gender=1 and is_delete=0 order by id desc(降序)/asc(升序);
分页查询:
select * from 表名 limit start,count
7、条件查询
聚合函数:
count(col): 表示求指定列的总行数
max/min(col): 表示求指定列的最大/小值
sum/avg(col): 表示求指定列的和/平均值
select avg(ifnull(height,0)) from students where gender = 1;
ifnull函数: 表示判断指定字段的值是否为null,如果为空使用自己提供的值。
分组查询:
group by
GROUP BY 列名 [HAVING 条件表达式] [WITH ROLLUP]
● 列名: 按照指定字段的值进行分组。
● having表达式: 用来过滤分组后的数据。
聚合:select gender,avg(age) from students group by gender;
select gender,count() from students group by gender having count()>2 and … …;
● group by 根据指定的一个或者多个字段对数据进行分组
● group_concat(字段名)函数是统计每个分组指定字段的信息集合
● 聚合函数在和 group by 结合使用时, 聚合函数统计和计算的是每个分组的数据
● having 是对分组数据进行条件过滤
● with rollup在最后记录后面新增一行,显示select查询时聚合函数的统计和计算结果
连接查询:
内连接:
select 字段 from 表1 inner join 表2 on 表1.字段1 = 表2.字段2
左/右连接:
以左/you表为主根据条件查询右/zuo表数据,如果根据条件查询右/zuo表数据不存在使用null值填充
select 字段 from 表1 left/right join 表2 on 表1.字段1 = 表2.字段2
自连接:自连接查询必须对表起别名
select c.id, c.title, c.pid, p.title from areas as c inner join areas as p on c.pid = p.id where p.title = ‘山西省’;
将文件中存的数据导入到表中:执行sql文件给areas表导入数据:
source areas.sql;
子查询
主查询和子查询的关系: