第一阶段:前端开发_MySQL——对数据库中库的操作和表结构的操作

2018-06-12

 

对数据库中库的操作和表结构的操作

 

一、对数据库的操作

1、创建数据库

  create database 数据库名;

  create database 数据库名 character set 编码;

 

2、查看数据库

  查看数据库服务器中的所有数据库:show databases;

  查看某个数据库的定义的信息:show create database 数据库名;

 

3、删除数据库

  drop database 数据库名;

 

4、其他的数据库操作命令

  切换数据库:use 数据库名;

  查看正在使用的数据库:select database();

 -------------------------------------------

 

二、表操作:table

1、创建表

  create table 表名(

    字段名 类型 (长度)  [约束],

    字段名 类型 (长度)  [约束]

  );

  

  字符类型:varchar(n)

  单表约束:

    主键约束:primary key,要求被修饰的字段:唯一  和  非空

    唯一约束:unique,要求被修饰的字段:唯一

    非空约束: not null,要求被修饰的字段:非空

 

2、查看表

  查看数据库中所有的表:show tables;

  查看表结构:desc 表名;

 

3、删除表

  drop table 表名;

 

4、修改表

  alter table 表名 add 列名 类型(长度) [约束];  --修改表添加列

  alter table 表名 modify 列名 类型(长度) 约束;  --修改表修改列的类型长度及约束

  alter table 表名 change 旧列名 新列名 类型(长度) 约束;  --修改表名修改列

  alter table 表名 drop 列名;   --修改表删除列

  rename table 表名 to 新表名;  --修改表名

  alter table 表名 character set 字符集;  --修改表的字符集

 

5、查看当前编码

  show create table 表名;

------------------------------------------------------------------------------------------------------- 

 

三、对数据库表记录进行操作(修改)

1、插入记录:insert

  insert into 表(列名1,列名2,列名3...) values(值1,值2,值3...);  --向表中插入某些列

  insert into 表  values(值1,值2,值3...);  --向表中插入所有列

 

  注意:

    • 列名数与values后面的值的个数相等
    • 列的顺序与插入 值的顺序一致
    • 列名的类型与插入的值要一致
    • 插入值的时候不能超过最大长度
    • 值如果是字符串或者是日期需要加‘ ’(一般是单引号)

 

  例如:

  insert into t_cate(cid,canme) values('c001','电器');

 

  插入数据中文乱码问题的解决办法:

    方式一:【不建议!】

      直接修改数据库安装目录里面的my.ini文件的第57行,重启mysql服务器

      default-characer-set = utf8

    方式二:在cmd命令行中,当前cmd命令窗口有效

      set names gbk;

 

2、修改表的记录:update

  update 表名 set 字段名=值,字段名=值 ...;  --更改该列的所有记录

  update 表名 set 字段名=值,字段名=值 ... where 条件;  

 

  注意:

    • 列名的类型与修改的值要一致。
    • 修改值的时候不能超过最大长度。
    • 值如果是字符串或者日期需要加‘’。

 

 

3.删除表记录:delect

  delect from 表名 [where 条件];

 

 

  面试题:说说delete与truncate的区别?

 

    delete删除的时候是一条一条的删除记录,它配合事务,可以将删除的数据找回。

    truncate删除,它是将整个表摧毁,然后再创建一张一模一样的表。它删除的数据无法找回。

 

  注意:  

    delect删除,uid不会重置。而使用truncate操作,uid会重置。

 

 

4.查询表记录:select

准备工作:

 1 #创建商品表
 2 create table product(
 3     pid int primary key auto_increment,
 4     pname varchar(20),
 5     price double,
 6     pdate timestamp
 7 );
 8 #自动增长列:auto_increment, 要求:1.必须整形(int2.必须主键
 9 
10 
11 insert into product values(NULL, '谭尼平', 0.01, NULL);
12 insert into product values(null, '李士雪', 38, null);
13 insert into product values(null, '左慈', -998, null);
14 insert into product values(null, '黄迎', 9999, null);
15 insert into product values(null, '南国强', 999998, null);
16 insert into product values(null, '士兵', 1, null);

 

4.1 简单查询:

   select [distinct] * from 表名 [where 条件]

   select [distinct] 列名1,列名2 from 表名 [where 条件]

 1 #一、简单查询:
 2 
 3 #1.查询所有商品
 4 select * from product;
 5 
 6 #2.查询商品名和商品价格
 7 select pname,price from product;
 8 
 9 #3.别名查询,使用关键字as.as 可以省略的
10 #3.1表别名
11 select * from product as p;
12 #3.2列别名
13 select pname as pn from product;
14 
15 #4.去掉重复值(按照价格)
16 select distinct price from product;
17 
18 #5.查询结果是表达式(运算查询):将所有商品的价格+10元进行显示
19 select pname, price+10 from product;

 

4.2条件查询

   where后的条件写法:>, <, =, >=, <=, <>
   like使用占位符_ 和 %。_代表一个字符,%代表任意字符。
     select * from product where pname like '%新%';
   in在某个范围中获得值
     select * from product where pid in(2,5,6);
     select * from product where pid=1 or pid=3 or pid=5;

 

 1 #1.查询商品名称为“左慈”的商品所有信息
 2 select * from product where pname = '左慈';
 3 
 4 #2.查询价格>60元的所有商品信息
 5 select * from product where price > 60;
 6 
 7 #3.查询商品名称含有"士"字的商品信息
 8 select * from product where pname like '%士%';
 9 
10 #4.查询商品id在(3,6,9)范围内的所有商品信息
11 select * from product where pid in(3,6,9);
12 
13 #5.查询商品名称含有"士"字并且id为6的商品信息
14 select * from product where pname like '%士%' and pid=6;
15 
16 #6.6.查询id为2或者6的商品信息
17 select * from product where  pid=2 or pid=6;

 

4.3 排序操作

  select ... order by 字段1 asc | desc, 字段2 asc | desc ...

   asc:升序, desc:降序

1 #1.查询所有的商品,按价格进行排序(asc:升序, desc:降序)
2 select * from product order by price;
3 
4 #2.查询名称有"士"的商品信息并且按照价格降序排序
5 select * from product where pname like '%士%' order by price desc;

 

4.4 聚合函数

常用的聚合函数:sum()求和, avg()平均, max()最大值, min()最小值, count()计数


注意:聚合函数不统计null值

1 #1.获得所有商品的价格的总和
2 select sum(price) from product;
3 
4 #2.获得所有商品的平均价格
5 select avg(price) from product;
6 
7 #3.获得所有商品的个数
8 select count(*) from product;

 

4.5 分组操作

 1 #1.添加分类id 
 2 alter table product add cid varchar(32);
 3 #2.初始化数据
 4 update product set cid='1';
 5 update product set cid='2' where  pid in (5,6,7);
 6 
 7 #1.根据cid字段分组,分组后统计商品的个数。
 8 select cid,count(*) from product group by cid;
 9 
10 #2.根据cid分组,分组统计每组商品的平均价格,并且平均价格大于20000元。
11 select cid, avg(price) from product group by cid having avg(price)>20000;

 

 

四、SQL语句查询总结

select  一般在的后面的内容都是要查询的字段

from    要查询到表

where  查询条件

group by  分组字段

having    分组条件:分组后带有条件只能使用having

order by  排序字段:asc | desc    它必须放到最后面

 

转载于:https://www.cnblogs.com/sunNoI/p/9172052.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值