MySQL简单入门
SQL语句分类:
-
DCL:数据控制(Control)语言 ->定义访问权限和安全级别(可自行百度简单了解就可)
-
DDL:数据定义(Definition)语言->对数据库和表结构的操作
-
DML:数据操作(Manipulation)语言->对表增删改
-
DQL:数据查询(Query)语言->select(相当重要)
select 查询的列名 from 表名 (join(也可以是其他连接方式,如left join) 表名 on (id)相同条件) where 条件(`=、!=、<>、<、>、>=、<=、between...and、in(…)、is null、not、or、and`) group by 按条件某列分组 having 条件<font color="red">(第二次条件:是在前面的操作查询出来后再按这个条件筛选)</font> order by 排序的列名(asc升序默认 desc降序)
一、简单入门:
1.构建数据库
create database (if not exists) 数据库名;
2.删除数据库
drop database (if exists) 数据库名;
3.创建表
create table 表名 (
字段名1(列名) 类型(宽度) 约束条件,
字段名2 类型(宽度) 约束条件,
字段名3 类型(宽度) 约束条件,
.......
);
-
char和varchar:
char 长度固定,一般用于性别
varchar 可变长, 会根据所给的字符串变换合适的长度
-
建表约束
not null 非空约束 unique唯一约束,值不允许重复
primarykey主键,非空且唯一 auto_increment自增
default 默认值 foreignkey外键
FOREIGN KEY [column list] REFERENCES [primary key table] ([column list]);
4.修改表
修改表之添加列:add
ALTER TABLE 表名 add (列名 列类型,...,列名 列类型);
修改表之修改列类型:modify
ALTER TABLE 表名 MODIFY 列名 列的新类型;
修改表之列名称列类型一起修改:change
ALTER TABLE 表名 CHANGE 原列名 新列名 列名类型;
sql操作集合实例:
--创建数据库,删除数据库 create database if not exists sql_store2 character set utf8mb4; drop database if exists sql_test1; drop table if exists customers; create table if not exists customers ( customer_id int primary key auto_increment, first_name varchar(50) not null, points int not null default 0, email varchar(255) not null unique ); -- 修改表 alter table customers add last_name varchar(50) not null after first_name, add city varchar(50) not null, modify column first_name varchar(50) default 'xxx', drop points; -- 创建关系 create table orders ( order_id int primary key, customer_id int not null, foreign key fk_orders_customers (customer_id) references customers (customer_id) on update cascade on delete no action )
5.为表插入数据
insert into 表名(字段名1,字段名2,...) values (对应插入对的字段),(对应插入的字段);
6.修改表的数据
修改某列的全部值:
update 表名 set 列名1=列值1(,列名2=列值2);
7.删除表的数据
delete from 表名 (where 条件);
8.聚合函数
COUNT(col) : 统计查询结果的行数
MIN(col): 查询指定列的最小值
MAX(col): 查询指定列的最大值
SUM(col): 求和,返回指定列的总和
AVG(col): 求平均值,返回指定列数据的平均值
二、多表查询
1.内连接:join->只含A与B表的交集
-- 查询订单和相应的客户信息
select order_id,o.customer_id,first_name,last_name
from orders o join customers c
on o.customer_id = c.customer_id;
合并多个表
-- 查询订单表,同时显示相应的客户信息和订单状态信息
select o.order_id,o.order_date,c.first_name,c.last_name,os.name
from orders o
join customers c on o.customer_id = c.customer_id
join order_statuses os on o.status = os.order_status_id;
隐式关联查询:where连接多表