A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

周星星9573

初级黑马

  • 黑马币:11

  • 帖子:2

  • 精华:0

© 周星星9573 初级黑马   /  2021-9-17 17:45  /  861 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

<select>        用于查询操作
<insert>        添加记录
<update>  更新记录
<delete>         删除记录



-- 基本用语
#create database 创建的数据库名
CREATE DATABASE xxx;

#drop database 删除的数据库名
DROP DATABASE xxx;

#查看所有数据库
SHOW DATABASES;

#创建表     名称name,年龄age,性别sex
create table 表名(

);

CREATE TABLE 表名(
        name varchar(14),
        age int,
        sex int
);

#drop table 表名; #删除表
DROP TABLE xxx;

#alter table 表名 rename to 新表名; #修改表名
ALTER TABLE xxx RENAME TO xxx;

#alter table 表名 add 新字段的名字 类型; #添加表字段
ALTER TABLE xxx ADD xxx VARCHAR(23);

#alter table 表名 change 旧字段名 新字段名 类型(); #修改字段名
ALTER TABLE xxx CHANGE xx xxx VARCHAR(32);

#alter table 表名 drop 字段名; #删除字段
ALTER TABLE xxx DROP xxx;

-- 操作表
#insert into 表名 values #添加表字段数据
(),
();

#带条件删除数据,删除xxx为xxx的数据
DELETE FROM xxx WHERE xxx='xxx';

DELETE FROM xxx; #删除表中所有数据

#select 字段名, 字段名 from 表名; #查询xxx表中的 xxx和 xxx列
SELECT xxx,xxx FROM xxx; #细节:查询只是查看xxx和xxx的所有数据,不会修改表中数据

#select * from 表名; #查询所有字段, 使用*代表所有列 列就是字段
SELECT * FROM xxx;

#selet *, xx * xx from 表名; #查询 xxx * xxx; #查询结果参与运算
SELECT *, xxx * xxx FROM 表名; #只有数字才能进行运算

SELECT xxx AS 别名, xxx AS 别名 FROM 表名;select xxx as 别名, xxx as 别名 from 表名;
SELECT xxx 别名, xxx 别名 FROM 表名; #取别名的时候as可以忽略

# 条件判断语句WHERE(where)
#select * from 表名where 数字类型的xxx判断;
SELECT * FROM 表名 WHERE 数字类型的xxx<1000;
#查询的数据 表名 where进行判断 数字类型的xxx<1000;

#逻辑运算符
#select * from 表名 where 字段名判断 && 字段名判断
#select * from 表名 where 字段名判断 and 字段名判断
# 并且 &&/and     # 或者 ||/or
SELECT * FROM goods WHERE price>1000 AND sales_volume<500;
SELECT * FROM goods WHERE price>8000 OR sales_volume<100;

#where条件判断     查询name是 xxx 和 xxx 和 xxx 的商品
#select * from 表名 where name in (字段名内容); #select * from 表名 where xxx in (字段名内容);
SELECT * FROM goods WHERE NAME IN ('华为P40', '小米11', '米糊');

#查询name不是xxx和xxx和xx的商品
#select * from 表名 where name not in (字段名内容); #select * from 表名 where xxx not in (字段名内容);
SELECT * FROM 表名 WHERE NAME NOT IN ('华为P40', '小米11', '米糊');

#范围: BETWEEN 值1 AND 值2 -- 表示从值1到值2范围,包头又包尾
SELECT * FROM goods WHERE price BETWEEN 1000 AND 5000;
#select * from 表名 where 字段名 between 小范围 and 大范围; #大的范围不能写前面

SELECT * FROM 表名 WHERE NAME IS NULL; #查询商品名称是空的商品 不要用=,要用is
SELECT * FROM goods WHERE NAME IS NOT  NULL;#查询商品名称不是null的商品


#模糊查询like
# %任意字符     _一个字符
SELECT * FROM 表名 WHERE NAME LIKE '米%';(米开头的商品) %米%(包含'米')
'_米%'(第二个字为米) '%米'(最后字为米)

/*  查询排序  */
-- order by 表示排序, ASC升序, DESC降序
#select * from 表名 order by 字段名 asc; (desc)

#查询所有数据,在price降序排序的基础上,如果price相同再以sales_volume降序排序
SELECT * FROM 表名 ORDER BY 价格xxx DESC, 销量xxx DESC; #大到小

CREATE TABLE `select` (     INSERT INTO `select` VALUES
);                          ();

-- 查询统计个数 COUNT
SELECT COUNT(NAME) FROM goods; #统计时会忽略NULL值

SELECT COUNT(*) FROM goods; #统计包含null个数

#select count (*) from 表名 where 字段名判断
SELECT COUNT(*) FROM xxx WHERE 数字类型的字段名>1000; #判断得出个数

SELECT COUNT(*) FROM 表名 WHERE 字段名 IN ('xx', 'xx'); #IN是包含的意思 #扩展用法:统计手机 加 食物 的总个数

#查询所有商品总销量
SELECT SUM (xxx) FROM 表名; #总销量是把所有商品的销量加起来
sum(总和) max(最大值) min(最小值) avg(平均值)

#ROUND(数据, 小数位数)
#select round (avg(字段名),指定留几位小数) from 表名;
SELECT ROUND(AVG(price), xxx) FROM 表名; #只能是数据类型否则为0

/*  分组查询  */
按商品类型分组
SELECT * FROM 表名 GROUP BY xxx; #分组后会返回每组的第一条数据
SELECT category FROM goods GROUP BY category; #获取分组字段

#查询销量大于100的商品,按商品类型分组,统计每组的数量
WHERE xxx>100 #查询销量大于100的商品
SELECT xxx, COUNT(*) FROM 表名 WHERE xxx>100 GROUP BY xxx;

#查询销量大于100的商品,按商品类型分组,统计每组的数量,并只显商品类型数量大于2的数据
HAVING COUNT(*)>2; #只显商品类型数量大于2的数据
SELECT xxx, COUNT(*) FROM 表名 WHERE xxx>100 GROUP BY xxx HAVING COUNT(*)>2;

#查询商品表中数据,跳过前面x条,显示y条
SELECT * FROM goods LIMIT x, y; 跳过的条数是0,可以省略x

-- 扩展查询的七个关键字顺序
SELECT -> FROM -> FROM -> WHERE -> GROUP BY -> HAVING -> ORDER BY -> LIMIT
先查询表里面所有的数据并进行过滤。(此时用where关键字过滤的是表里面的数据,把name为null的给过滤掉了)
然后进行分组,并统计每一组有多少条数据。
利用HAVING关键字对查询的结果再次过滤 把个数大于等于2的展示出来。
对having过滤之后的结果按照个数进行排序
最后再跳过第一个,展示两条数据
SELECT category, COUNT(*) AS 个数 FROM 表名
WHERE NAME IS NOT NULL GROUP BY category
HAVING 个数 >= 2
ORDER BY 个数 ASC
LIMIT 1,2;

-- 约束
CREATE TABLE 表名 (
        id INT         alter table 表名 add primary key(字段名);
);                ALTER TABLE 表名 ADD PRIMARY KEY(id);#添加主键约束
                alter table 表名 drop primary key; #删除主键约束
                #主键不能重复,不能为空

#一般都是创建表的时候就添加主键约束
CREATE TABLE 表名 (
        id INT PRIMARY KEY
);                        (主键约束)PRIMARY KEY

CREATE TABLE 表名 (
        id INT PRIMARY KEY AUTO_INCREMENT
);       
       
#修改自动增长的开始值(面试题)
#alter table 表名 auto_increment = 数据;
ALTER TABLE 表名 AUTO_INCREMENT = 104; #设置为104开头
INSERT INTO 表名 (NAME, age) VALUES ('如花', 22); #添加信息,表头为104

唯一约束
CREATE TABLE 表名 (
        id INT,
        NAME VARCHAR(23) UNIQUE
        #name varchar(23) unique     unique(唯一,不可重复)
);
CREATE TABLE 表名 (
        id INT,
        NAME VARCHAR(14) NOT NULL,
#非空约束 name varchar(14) not null, #字段名() not null  
        gender VARCHAR(2)
);
-- NULL表示什么都没有                        我没有水杯                        你没有女朋友
-- ''包裹的是字符串,空字符串                我有水杯,但是水杯中没有水        你有女朋友,但是没有灵魂
-- 扩展:一个字段可以同时添加多个约束
#name varchar(23) unique not null

-- 创建一个学生表st5,包含字段(id,name,address), address默认值是广州
CREATE TABLE st5 (
        id INT,
        NAME VARCHAR(14),
        #字段名 varchar (23) default '广州' # default 初始化默认值为 '广州'
        address VARCHAR(23) DEFAULT '广州'
);

是否可空,null表示空,非字符串
not null - 不可空
null - 可空

default - 默认值,创建列时可以指定默认值,当插入数据时如果未主动设置,则自动添加默认值
设置id字段有默认值后,则无论id字段是null还是not null,都可以插入空,插入空默认填入default指定的默认值

约束主键MySQL看E:MySQL应用的05-约束

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马