MySQL 基本语句使用总结

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;

 

你可能感兴趣的:(数据库)