今天是3月7日,女生节,在此先祝各位广大女性同志节日快乐。
今天清理桌面,找到了一份MySQL的入门笔记,趁着今天清闲,我就把它倒腾过来,顺便复习复习,毕竟很久没碰过数据库了。
下面直接进入正题:
1、入门须知:
客户端的概念:我们存取数据都需要客户端和服务器端进行通话,我们打开任务管理器,可以看到mysql相关的服务,可以找到mysql(客户端)和mysqld(服务端),其实数据的存取就是这二者之间的通话。
SQL语言的特点:结构化查询的语言、what型语言而非how型语言。
基础操作命令:
- 连接数据库:mysql -h 地址 -u 用户名 -p密码
- 查看数据库:show databases
- 使用数据库:use 数据库名
- 查看数据表:show tables
- 查看表的字段:desc 表名
- 创建数据库:create database dbname charset utf8;
- 删除数据库:drop database dbname;
- 查看表的创建过程:show create table tableName;
下面看一下我创建的一个数据库:
create database qingshudan;
use qingshudan;
CREATE TABLE `user` (
`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '用户名',
`phone` VARCHAR(15) NOT NULL DEFAULT '' COMMENT '手机号',
`avatar` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '头像',
`signature` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '签名',
`wx_id` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '微信绑定',
`qq_id` VARCHAR(100) NOT NULL DEFAULT '' COMMENT 'QQ绑定',
`wb_id` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '微博绑定',
`fans` INT(11) NOT NULL DEFAULT '0' COMMENT '粉丝数',
`followers` INT(11) NOT NULL DEFAULT '0' COMMENT '关注数',
`collections` INT(11) NOT NULL DEFAULT '0' COMMENT '收藏数',
`writ_reads` INT(11) NOT NULL DEFAULT '0' COMMENT '待看数',
`integral` INT(11) NOT NULL DEFAULT '0' COMMENT '积分',
`address` VARCHAR(200) NOT NULL DEFAULT '' COMMENT '联系地址',
`status` INT(11) NOT NULL DEFAULT '0' COMMENT '状态 0 正常 1 删除',
`create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '注册时间',
PRIMARY KEY (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `category` (
`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`name` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '类名',
`books` INT(11) NOT NULL DEFAULT '0' COMMENT '书本数',
`status` INT(11) NOT NULL DEFAULT '0' COMMENT '状态 0 正常 1 删除',
PRIMARY KEY (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `book` (
`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '书名',
`author` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '作者',
`isbn` VARCHAR(20) NOT NULL DEFAULT '' COMMENT 'ISBN',
`publisher` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '出版社',
`publish_time` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '出版时间',
`category_id` INT(11) NOT NULL DEFAULT '0' COMMENT '分类id',
`category_name` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '分类名',
`pages` INT(11) NOT NULL DEFAULT '0' COMMENT '页数',
`price` DECIMAL(10,2) NOT NULL DEFAULT '0.00' COMMENT '定价/最低价',
`cover` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '封面',
`recommend_des` VARCHAR(1000) NOT NULL DEFAULT '' COMMENT '推荐语',
`collections` INT(11) NOT NULL DEFAULT '0' COMMENT '收藏数',
`shares` INT(11) NOT NULL DEFAULT '0' COMMENT '分享数',
`user_id` INT(11) NOT NULL DEFAULT '0' COMMENT '用户id',
`buy_link` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '购买地址',
`status` INT(11) NOT NULL DEFAULT '0' COMMENT '状态 0 正常 1 删除',
`create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `bill` (
`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`title` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '标题',
`books` INT(11) NOT NULL DEFAULT '0' COMMENT '图书数量',
`recommend_des` VARCHAR(1000) NOT NULL DEFAULT '' COMMENT '推荐语',
`collections` INT(11) NOT NULL DEFAULT '0' COMMENT '收藏数',
`shares` INT(11) NOT NULL DEFAULT '0' COMMENT '分享数',
`comments` INT(11) NOT NULL DEFAULT '0' COMMENT '评论数',
`user_id` INT(11) NOT NULL DEFAULT '0' COMMENT '用户id',
`status` INT(11) NOT NULL DEFAULT '0' COMMENT '状态 0 正常 1 删除',
`create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `comment` (
`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`user_id` INT(11) NOT NULL DEFAULT '0' COMMENT '用户id',
`user_name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '用户名',
`user_avatar` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '用户头像',
`bill_id` INT(11) NOT NULL DEFAULT '0' COMMENT '书单id',
`content` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '内容',
`status` INT(11) NOT NULL DEFAULT '0' COMMENT '状态 0 正常 1 删除',
`create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `share` (
`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`user_id` INT(11) NOT NULL DEFAULT '0' COMMENT '用户id',
`type` INT(11) NOT NULL DEFAULT '0' COMMENT '类型 0 书籍 1书单',
`bill_id` INT(11) NOT NULL DEFAULT '0' COMMENT '书单id',
`book_id` INT(11) NOT NULL DEFAULT '0' COMMENT '书籍id',
`channel` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '分享渠道',
`share_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '分享时间',
PRIMARY KEY (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `attention` (
`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`attention_id` INT(11) NOT NULL DEFAULT '0' COMMENT '关注人id(我关注)',
`attentioned_id` INT(11) NOT NULL DEFAULT '0' COMMENT '被关注人id(粉丝)',
`status` INT(11) NOT NULL DEFAULT '0' COMMENT '状态 0正常 1取消关注' ,
`attent_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '关注时间',
PRIMARY KEY (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `collect`(
`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`user_id` INT(11) NOT NULL DEFAULT '0' COMMENT '用户id',
`type` INT(11) NOT NULL DEFAULT '0' COMMENT '类型 0书籍 1书单',
`bill_id` INT(11) NOT NULL DEFAULT '0' COMMENT '书单id',
`book_id` INT(11) NOT NULL DEFAULT '0' COMMENT '书籍id',
`status` INT(11) NOT NULL DEFAULT '0' COMMENT '状态 0正常 1取消收藏',
`collect_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '收藏时间',
PRIMARY KEY (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `gift`(
`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`img` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '礼物封面图',
`title` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '礼物名称',
`score` INT(11) NOT NULL DEFAULT '0' COMMENT '积分数',
`status` INT(11) NOT NULL DEFAULT '0' COMMENT '状态 0正常 1下架',
`num` INT(11) NOT NULL DEFAULT '0' COMMENT '兑换次数',
`explain` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '说明',
`create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `gift_exchange`(
`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`user_id` INT(11) NOT NULL DEFAULT '0' COMMENT '用户id',
`gift_id` INT(11) NOT NULL DEFAULT '0' COMMENT '礼物id',
`status` INT(11) NOT NULL DEFAULT '0' COMMENT '状态 0兑换失败 1兑换成功',
`num` INT(11) NOT NULL DEFAULT '0' COMMENT '兑换个数',
`score` INT(11) NOT NULL DEFAULT '0' COMMENT '积分',
`exchange_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '兑换时间',
PRIMARY KEY(`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `score`(
`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`user_id` INT(11) NOT NULL DEFAULT '0' COMMENT '用户id',
`num` INT(11) NOT NULL DEFAULT '0' COMMENT '积分总数',
`remark` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '备注',
`time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '时间',
PRIMARY KEY(`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `score_rule`(
`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`type` INT(11) NOT NULL DEFAULT '0' COMMENT '类型 0签到 1任务',
`name` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '任务名',
`status` INT(11) NOT NULL DEFAULT '0' COMMENT '状态 0未完成 1完成',
`score` INT(11) NOT NULL DEFAULT '0' COMMENT '积分数',
PRIMARY KEY(`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `checkin`(
`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`user_id` INT(11) NOT NULL DEFAULT '0' COMMENT '用户id',
`rule_id` INT(11) NOT NULL DEFAULT '0' COMMENT '规则id',
`progress` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '完成进度',
`status` INT(11) NOT NULL DEFAULT '0' COMMENT '完成状态 0未完成 1完成',
`time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '时间',
PRIMARY KEY(`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `bill_book`(
`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`bill_id` INT(11) NOT NULL DEFAULT '0' COMMENT '书单id',
`book_id` INT(11) NOT NULL DEFAULT '0' COMMENT '书籍id',
`status` INT(11) NOT NULL DEFAULT '0' COMMENT '状态 0正常 1移除',
`time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '时间',
PRIMARY KEY(`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `today_recommend`(
`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`book_id` INT(11) NOT NULL DEFAULT '0' COMMENT '书籍id',
`name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '书名',
`author` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '作者',
`publisher` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '出版社',
`publish_time` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '出版时间',
`cover` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '封面',
`type` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '书籍分类',
`recommend_des` VARCHAR(1000) NOT NULL DEFAULT '' COMMENT '推荐语',
`user_id` INT(11) NOT NULL DEFAULT '0' COMMENT '用户id',
`user_phto` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '用户头像',
`user_name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '用户名',
`num` INT(11) NOT NULL DEFAULT '0' COMMENT '关注数',
`time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '时间',
PRIMARY KEY(`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `user_recommend`(
`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`recommend_id` INT(11) NOT NULL DEFAULT '0' COMMENT '推荐id',
`user_id` INT(11) NOT NULL DEFAULT '0' COMMENT '用户id',
`hobby` INT(11)NOT NULL DEFAULT '0' COMMENT '兴趣 0不喜欢 1喜欢',
`time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '时间',
PRIMARY KEY(`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
2、数据的增删查改:
增加:INSERT INTO tablename ( field1, field2,...field ) VALUES ( value1, value2,...value ); 如果数据是字符型,必须使用单引号或者双引号,如:"value"。
删除:DROP TABLE table_name ; 删除数据表
delete from student where T_name = "张三"; 删除某一条数据
查询:select * from table_name ;查询数据表中所有
select * from book limt 0,30 后面的limit m,n (分页:m(m=(页数-1)*n)为略过的条数,n为每页多少条)
修改:UPDATE ss SET name ='dahai' WHERE id=1;(set后为修改值,where为查询条件)
3.查询模型:
(1)、列是变量,变量是可以计算的
select name,age+1 from table_name
select substring(goods_name,3) ………
(2)、where是表达式,值为真或者假
select * from table_name where 1
给大家介绍两个装逼的术语:
- 投影运算:从表中取出列
- 广义投影:列与列再做运算
4、运算符:
1)比较运算符:
< 小于 != 或 <> 不等于
<= 小于或等于 >= 大于或等于
In 在某集合内 between 在某范围内
2)逻辑运算符:
NOT 或者 ! 逻辑非
OR 或 || 逻辑或
AND 或者 && 逻辑与
5、模糊查询:
like模糊匹配 %通配任意字符 _通配单一字符
select * from goods where good_name like ‘%哈哈’
select * from goods where good_name like ‘哈哈___’
6、奇怪的null
null没有值,无法做比较 ==> null=null 返回假 null !=null 返回假
select * from goods where name=null //查不到
查询怪癖的null我们需要通过is来查询:
select * from goods where name is null
select * from goods where name is not null
7、group分组与统计函数
- max() 求最大值
- min() 求最小值
- avg() 求平均值
- count() 求行数
- sum() 求总和
group by cloum_name 分组统计
select * from goods group by cat_id;
8、order by 排序:
- asc 升序(默认方式)
-
desc 降序
select * from goods order by cat_id
9、having筛选结果集:
先看一个例子,大家可以动手试一试:
select (a-b) as num from goods having num>100;(此处使用where会报错)
having:是针对内存里的结果集的 ,where是针对磁盘里的数据文件
这里我就不详细介绍这两者的区别,毕竟这一部分就已经脱离了我们入门的概念了,作为一名前端工程师,上述基础知识基本够用了。