set names gbk;dos解决乱码 临时方案
命令下操作数据库语句
创建数据库 create database 数据库名;
查看数据库 show databases;
删除数据库 drop database 数据库名称;
查询正在使用的数据库 select database();
使用数据库 use 数据库名;
创建表create table 表名(
字段名类型(长度) [约束],
字段名类型(长度) [约束],
...
);
删除表 drop table 表名;
关键字
primary key
foreign key
references
constraint
Unique
auto_increment
=========================创建数据库
* create database 数据库名;
* create database 数据库名 character set 字符集;
===============================查看数据库
show databases;
=======================================删除数据库
drop database 数据库名称;
=============================查看正在使用的数据库
select database();
创建表==================================================
###创建分类表
CREATE TABLE category (
cid INT primary key, #分类ID
cname VARCHAR(100) #分类名称
);
=========================================查看表
show tables;
=======================================查看表结构
desc 表名;
==================================删除表
drop table 表名;
=================================================修改表结构
#1,为分类表添加一个新的字段为分类描述 varchar(20)
ALTER TABLE category ADD `desc` VARCHAR(20);
#2, 为分类表的描述字段进行修改,类型varchar(50) 添加约束 not null
ALTER TABLE category MODIFY `desc` VARCHAR(50) NOT NULL;
#3, 为分类表的分类名称字段进行更换更换为 snamesname varchar(30)
ALTER TABLE category CHANGE `desc`description VARCHAR(30);
#4, 删除分类表中snamename这列
ALTER TABLE category DROP description;
#5, 为分类表category改名成 category2
RENAME TABLE category TO category2;
#6, 为分类表 category 的编码表进行修改,修改成 gbk
ALTER TABLE category CHARACTER SET gbk;
==================================================插入语句
-- 向表中插入某些字段
insert into 表 (字段1,字段2,字段3..) values (值1,值2,值3..);
--向表中插入所有字段,字段的顺序为创建表时的顺序
insert into 表 values (值1,值2,值3..);
===============================================================更新表
--更新所有记录的指定字段
update 表名 set 字段名=值,字段名=值,...;
--更新符号条件记录的指定字段
update 表名 set 字段名=值,字段名=值,... where 条件;
===========================================================删除表记录
delete from 表名 [where 条件];
或者
truncate table 表名;
=============================================================查询
简单查询#####
1.查询所有的商品 select * from product;
2.查询商品名和商品价格. select pname,price from product;
3.别名查询.使用的关键字是 as(as可以省略的).
3.1表别名: select * from product as p;
3.2列别名:select pname as pn from product;
4.去掉重复值. select distinct price from product;
5.查询结果是表达式(运算查询):将所有商品的价格+10元进行显示.
select pname,price+10 from product;
======================================================条件查询
BETWEEN ...AND...显示在某一区间的值(含头含尾)
IN(set) 显示在in列表中的值,例:in(100,200)
LIKE ‘张pattern’
模糊查询,Like语句中,
%代表零个或多个任意字符,
_代表一个字符,
例如:first_name like ‘_a%’;
IS NULL 判断是否为空
and 多条件成立
or 多条件任意一个成立
not 不成立,例:where not(salary>100);
========================================================================
===============================================================排序
#1.使用价格排序(降序)
SELECT * FROM product ORDER BY price DESC;
#2.在价格排序(升序)的基础上
SELECT * FROM product ORDER BY price ASC
#3.显示商品的价格(去重复),并排序(降序)
SELECT DISTINCT price FROM product ORDER BY price DESC;
=========================================================聚合函数
#1 查询商品的总条数
SELECT COUNT(*) FROM product;
#2 查询价格大于200商品的总条数
SELECT COUNT(*) FROM product WHERE price > 200;
#3 查询同名商品的总和
SELECT SUM(price) ,pname FROM product group by pname;
#4 查询同名商品的平均价格
SELECT AVG(price), pname FROM product group by pname;
#5 查询商品的最大价格和最小价格
SELECT MAX(price),MIN(price) FROM product;
=============================================================分组查询
SELECT 字段1,字段2… FROM 表名GROUP BY分组字段 HAVING 分组条件;
分组操作中的having子语句,是用于在分组后对数据进行过滤的,作用类似于where条件。
#1 统计各个分类商品的个数
SELECT SUM(price) ,pname FROM product group by pname having
=====================================================分页查询
SELECT 字段1,字段2... FROM 表明 LIMIT M,N
M: 整数,表示从第几条索引开始,计算方式 (当前页-1)*每页显示条数
N: 整数,表示查询多少条数据
SELECT 字段1,字段2... FROM 表明 LIMIT 0,5
SELECT 字段1,字段2... FROM 表明 LIMIT 5,5
===========================================================主键约束
PRIMARY KEY 约束唯一标识数据库表中的每条记录。
主键必须包含唯一的值。
主键列不能包含 NULL 值。
每个表都应该有且只能有一个主键。
方式一:创建表时,在字段描述处,声明指定字段为主键:
CREATE TABLE Persons
(
Id_P int PRIMARY KEY,
LastName varchar(255),
)
方式二:创建表时,在constraint约束区域,声明指定字段为主键:
格式:[constraint 名称] primary key (字段列表)
关键字constraint可以省略,如果需要为主键命名,constraint不能省略,主键名称一般没用。
字段列表需要使用小括号括住,如果有多字段需要使用逗号分隔。声明两个以上字段为主键,我们称为联合主键。
CREATE TABLE Persons
(
FirstName varchar(255),
LastName varchar(255),
CONSTRAINT pk_PersonID PRIMARY KEY (FirstName,LastName)
)
或
CREATE TABLE Persons
(
FirstName varchar(255),
LastName varchar(255),
PRIMARY KEY (FirstName)
)
方式三:创建表之后,通过修改表结构,声明指定字段为主键:
ALTER TABLE Persons ADD [CONSTRAINT 名称] PRIMARY KEY (字段列表)
CREATE TABLE Persons
(
FirstName varchar(255),
LastName varchar(255),
)
ALTER TABLE Persons ADD PRIMARY KEY (FirstName)
====================================================删除主键约束
ALTER TABLE Persons DROP PRIMARY KEY
==============================================自动增长
CREATE TABLE Persons
(
P_Id int PRIMARY KEY AUTO_INCREMENT,
LastName varchar(255),
FirstName varchar(255),)
向persons添加数据时,可以不为P_Id字段设置值,也可以设置成null,数据库将自动维护主键值:
#####修改起始值
ALTER TABLE Persons AUTO_INCREMENT=100
================================================非空约束
NOT NULL 约束强制列不接受 NULL 值。
删除非空约束 ALTER TABLE student MODIFY LastName varchar(255)
=====================================================唯一约束
UNIQUE 约束唯一标识数据库表中的每条记录。
UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。
PRIMARY KEY 拥有自动定义的 UNIQUE 约束。
请注意,每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。
方式1:创建表时,在字段描述处,声明唯一:
CREATE TABLE Persons
(
Id_P int UNIQUE,
LastName varchar(255) NOT NULL,
)
方式2:创建表时,在约束区域,声明唯一:
CREATE TABLE Persons
(
Id_P int,
LastName varchar(255) NOT NULL,
CONSTRAINT 名称 UNIQUE (Id_P)
)
方式3:创建表后,修改表结构,声明字段唯一:
ALTER TABLE Persons ADD [CONSTRAINT 名称] UNIQUE (Id_P)
###删除唯一约束
ALTER TABLE Persons DROP INDEX名称
==============================================默认约束
方式一: 创建表,字段处声明
CREATE TABLE Persons
(
Id_P int,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255) DEFAULT '北京',
City varchar(255)
)
方式二: 修改表结构
ALTER TABLE Persons MODIFY Address VARCHAR(255) DEFAULT '北京'
删除默认约束ALTER TABLE Persons MODIFY Address VARCHAR(255)
==========================================外键约束
#添加约束
alter table products add constraint product_fk foreign key (category_id) references category (cid);
声明外键约束
语法:alter table 从表 add [constraint] [外键名称] foreign key (从表外键字段名) references 主表 (主表的主键);
[外键名称] 用于删除外键约束的,一般建议“_fk”结尾
alter table 从表 drop foreign key 外键名称
使用外键目的:
保证数据完整性
=============================================多表查询
1.交叉连接查询(基本不会使用-得到的是两个表的乘积) [了解]
语法:select * from A,B;
2.内连接查询(使用的关键字 inner join -- inner可以省略)
隐式内连接:select * from A,B where 条件;
显示内连接:select * from A inner join B on 条件;
3.外连接查询(使用的关键字 outer join -- outer可以省略)
左外连接:left outer join
select * from A left outer join B on 条件;
右外连接:right outer join
select * from A right outer join B on 条件;
#1.查询哪些分类的商品已经上架
#隐式内连接
SELECT * FROM category c , products p
WHERE c.cid = p.category_id;
#内连接
SELECT * FROM category c
INNER JOIN products p ON c.cid = p.category_id
WHERE p.flag = '1';
#2.查询所有分类商品
#左外连接
INSERT INTO category(cid,cname) VALUES(4,'奢侈品');
SELECT cname,COUNT(category_id) FROM category c
LEFT OUTER JOIN products p
ON c.cid = p.category_id
GROUP BY cname;