文章目录
- 一、Mysql的登录
- 二、创建数据库
- 三、查看MySQL服务器中的所有的数据库
- 四、删除数据库
- 五、使用数据库
- 六、DDL操作:table
- 1)创建表
- 2)查看表
- 3)删除表
- 4)修改表结构格式
- 七、DML数据操作语言
- 1)insert
- 2)update
- 3)delete
- 八、SQL约束
- 1)主键约束
- 1.添加主键约束
- 2.删除主键约束
- 3.自动增长列
- 2)非空约束
- 3)唯一约束
- 4)外键约束
- 九、DQL数据查询语言
- 1)条件查询
- 2)排序查询
- 3)聚合查询
- 4)分组查询
- 5)分页查询
- 十、多表操作
- 1)外键约束
- 2)多表查询
- 3)索引的操作
- 4)唯一索引
- 十一、MySql开窗函数
一、Mysql的登录
此处是基础Linux系统的终端操作
方式1:
mysql -u root - p123456
mysql -u root -p 然后回车输入密码
方式2:
该方式用在通过远程方式连接到别的Mysql服务器
mysql --host=xx.xxx.xxx(目的ip) --user=root --password=123456
mysql --host=xxx.xxx.xx(目的ip) --user=root --password 然后回车输入密码
二、创建数据库
- 格式
create database 数据库名;
create database if not exists bigdata_db;
create database 数据库名 character set 字符集;
三、查看MySQL服务器中的所有的数据库
show databases;
四、删除数据库
drop database bigdata_db;
五、使用数据库
- 选择数据库
use bigdata_db;
- 查看正在使用的数据库
select database();
六、DDL操作:table
1)创建表
- 格式
create table if not exists 表名(
字段名 类型(长度)[约束],
字段名 类型(长度)[约束],
...
);
- 实列:
CREATE TABLE category(
cid varchar(20) primary key,
cname varchar(100)
);
2)查看表
- 查看数据库重的所有表
show tables;
- 查看表结构
格式:desc 表名
例如:desc sort
3)删除表
格式: drop talbe 表名;
4)修改表结构格式
- alter table 表名 add 列名 类型(长度)[约束];
作用:修改表添加列.
ALTER TABLE catagory ADD 'desc' VARCHAR(20);
- alter table 表名 change 旧列名 新列名 类型(长度)约束;
作用:修改表修改列名.
ALTER TABLE category CHANGE 'desc' description VARCHAR(30);
- alter table 表名 drop 列名
作用:修改表删除列
ALTER TABLE category DROP description;
- rename table 表名 to 新表名;
作用:修改表名
RENAME TABLE 'category' TO category2;
七、DML数据操作语言
1)insert
- 语法
insert into 表(字段1,字段2,字段3...)values(值1,值2,值3...);
insert into 表 values(值1,值2,值3...);
- 注意:
- 值与字段必须对应,个数相同,类型相同
- 值的数据大小必须在字段的长度范围内
- 除了数值类型外,其它的字段类型的值必须使用引号引起。(建议单引号)
- 如果要插入空值,可以不写字段,或者插入 null。
- 例如
INSERT INTO category(id,name) VALUES('001','电器');
2)update
- 语法
update 表名 set 字段名=值,字段名=值,...;
update 表名 set 字段名=值,字段名=值,... where 条件;
- 注意
- 列名的类型与修改的值要一致.
- 修改值得时候不能超过最大长度.
- 除了数值类型外,其它的字段类型的值必须使用引号引起
- 实例
update category set name = '水果' where id = '001';
3)delete
- 语法
delete from 表名 [where 条件];
或者
truncate table 表名;
- 注意
- delete 一条一条删除,不清空auto_increment记录数。
- truncate 直接将表删除,重新建表,auto_increment将置为零,从新开始。
- 实例
delete from category where id = '005';
truncate category;
八、SQL约束
1)主键约束
- PRIMARY KEY 约束唯一标识数据库表中的每条记录。
- 主键必须包含唯一的值。
- 主键列不能包含 NULL 值。
- 每个表都应该有一个主键,并且每个表只能有一个主键。
1.添加主键约束
- 方式一:创建表时,在字段描述处,声明指定字段为主键
CREATE TABLE Persons1
(
Id int PRIMARY KEY,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
- 方式二:创建表时,在constraint约束区域,声明指定字段为主键
- 格式:[constraint 名称] primary key (字段列表)
- 关键字constraint可以省略,如果需要为主键命名,constraint不能省略,主键名称 一般没用。
- 字段列表需要使用小括号括住,如果有多字段需要使用逗号分隔。声明两个以上字段 为主键,我们称为联合主键。
CREATE TABLE Persons2
(
FirstName varchar(255),
LastName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT pk_PersonID PRIMARY KEY (FirstName, LastName)
);
2.删除主键约束
ALTER TABLE Persons DROP PRIMARY KEY;
3.自动增长列
- auto_increment
CREATE TABLE Persons4
(
Id int PRIMARY KEY AUTO_INCREMENT,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
- 扩展:默认AUTO_INCREMENT 的开始值是 1,如果希望修改起始值,请使用下列 SQL 语法:
ALTER TABLE Persons AUTO_INCREMENT = 100
…
2)非空约束
NOT NULL 约束强制列不接受 NULL 值。
CREATE TABLE Persons5 (
Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
3)唯一约束
UNIQUE 约束唯一标识数据库表中的每条记录。
- UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。
4)外键约束
FOREIGN KEY 表示外键约束
九、DQL数据查询语言
1)条件查询
2)排序查询
SELECT *FROM 表名 ORDER BY 排序字段 ASC|DESC;
eg.
SELECT * FROM product ORDER BY price DESC;
SELECT *FROM product ORDER BY price DESC,category_id DESC;
SELECT DISTINCT price FROM product ORDER BY price DESC;
3)聚合查询
#查询价格大于200商品的总条数
SELECT COUNT(*) FROM product WHERE price > 200;
4)分组查询
分组查询是指使用group by字句对查询信息进行分组。
SELECT 字段1,字段2… FROM 表名 GROUP BY分组字段 HAVING 分组条件;
- having与where的区别:
- having是在分组后对数据进行过滤.,where是在分组前对数据进行过滤。
- having后面可以使用分组函数(统计函数),where后面不可以使用分组函数。
# 统计各个分类商品的个数,且只显示个数大于1的信息
SELECT category_id ,COUNT(*) FROM product GROUP BY category_id HAVING COUNT(*) > 1;
5)分页查询
SELECT 字段1,字段2... FROM 表明 LIMIT M,N
M: 整数,表示从第几条索引开始,计算方式 (当前页-1)*每页显示条数
N: 整数,表示查询多少条数据
查询product表的前5条记录
SELECT * FROM product LIMIT 0,5
十、多表操作
1)外键约束
- 声明外键约束
alter table 从表 add [constraint] [外键名称] foreign key (从表外键字段名) references 主 表 (主表的主键);
删除外键约束:
alter table 从表 drop foreign key 外键名称
2)多表查询
- 交叉连接查询(基本不会使用-得到的是两个表的乘积)
select * from A,B
- 内连接查询(使用的关键字 inner join – inner可以省略)
- 隐式内连接:select * from A,B where 条件;
- 显示内连接:select * from A inner join B on 条件;
- 外连接查询(使用的关键字 outer join – outer可以省略)
- 左外连接:select * from A left outer join B on 条件;
- 右外连接:select * from A right outer join B on 条件;
3)索引的操作
- 创建索引
- 方式一:
CREATE INDEX indexName ON mytable(username([length]));
- 方式二:
ALTER table tableName ADD INDEX indexName(columnName)
- 方式三:
CREATE TABLE mytable(
ID INT NOT NULL,
username VARCHAR(16) NOT NULL,
INDEX indexName(username(length))
);
- 查询索引
SHOW INDEX FROM table_name;
- 删除索引
DROP INDEX [indexName] ON mytable;
alter table mytable drop index indexName;
4)唯一索引
- 创建索引
- 方式一:
CREATE UNIQUE INDEX indexName ON mytable(username(length))
- 方式二:
ALTER table mytable ADD UNIQUE [indexName] (username(length))
- 方式三:
CREATE TABLE mytable(
ID INT NOT NULL,
username VARCHAR(16) NOT NULL,
UNIQUE [indexName] (username(length))
);
- 删除索引
DROP INDEX [indexName] ON mytable;
alter table mytable drop index indexName;
十一、MySql开窗函数
- 结构
<开窗函数> over ([PARTITION by <列清单>]
Order by <排序用列清单>)
常见开窗函数:row_number(), rank() ,dense_rank()