mysql介绍
(1) mysql数据库是瑞典AB开发。
(2) mysql--> sun --> oracle。
(3) mysql数据库的特点。
1. 开源。
2. 免费。
3. 跨平台(windows/linux/unix/苹果)。
4. 处理并发性(13000个)/安全/稳定。
5. 该数据库 轻(对资源要求不高)安装文件 37.7M。而且

对cpu/内存要求都不高

基本语法:
在dos下输入:
mysql -u 用户名 -p 密码
特别说明 -p 后面的密码不要有空格 /使用该命令的时候,需

要配置一下环境变量
2. mysql数据库也提供图形化界面来登录以及操作。
3. 如何在mysql中创建数据库
基本语法:
create database mydb1 ;
--创建一个mydb1的数据库
create database mydb2 character set utf8 ; --创建一个

使用utf-8字符集的mydb2的数据库
create database mydb3 character set utf8 collate

utf8_general_ci

如何查看,创建数据库的指令
show create database 数据库名;
显示数据库
指令: show database ;
查看创建数据库的指令
drop database uuu ; ----删除数据库
如何使用某个数据库:
use mydb1 ----use 数据库名
-------如何创建一个数据表
create table users(
id int , ---学号
name varcahr(30) ---名字
)

如何备份数据库和回复数据库:
------ 该指令,需要在dos控制台下直接执行。
mysqldump -u root -p密码 数据名 > 存放路径+文件名.sql。
举例子:
mysqldump -u root -p123 myshop > D:\myshop.sql

数据库的恢复;
mysql> source d:/myshop.sql

恢复数据库:
1.创建一个数据库mydb2,但是这个数据库目前是空
2.mysql控制台,使用source备份文件路径、
mysql分页技术:
select * from 表名 limit start(从第几条取出),取出几条
.创建表
基本语法:
create table 表名(
列名 列的数据类型 ,
....
){
//后面可以设置字符集
character 字符集名称 collate 校对规则
}
案列:
创建一张用户表
create table users(
id int ,
name varchar(64),
pwd varchar(64),
birthday date
)

mysql的数据类型:

数值型:
1. bit(M) m默认为1 最大64 ---最大能存储八字节的数
-----这部分是整型
2. tinyint signed/unsigned 取值范围为: 这是对于有符号
-128-127,对于无符号而言,取值范围为: 0-255,其实说明白

了就是占一个字节。
3.smallint 占两个字节也分为有符号和无符号两种。
4.mediumint 占3字节也分为有符号和无符号两种。
5. int 占4字节 分有符号和无符号
6. bigint 占8字节 分有符号和无符号两种。

7. float 占4字节来表示
格式: Float(m,d)[unsigned]
m: 表示位数 ,d 表示小数点有几位
8. double 占8个字节
其用法类似float,只是表示的范围更大,也是定长。
9. numeric( m ,d )
用于表示小数,或者整数。
10.decimal(m ,d)属于变长。
对于文本和二进制类型:
常用的有:
(1)char(m) m范围是0-255,定长
eg: char(20)如果你存放,'abc' ,实际在表中的存在形

式为:‘abc【17个空格】’
小知识:
mysql自带的client默认支持utf8码,所有我们在添加中文的

时候,需要设置让client支持gbk.
*show variables like '%char%'* //显示关于字符的设置参


(2)varchar(m)
m表示大小 范围 0-65535 变长
varchar(20)如果你存放 'abc'字串,实际在表中存在形式‘abc’

建 议: 如果表的某列长度固定,比如 产品编号,学号,而且

在255内,我们应当使用char,如果长度不能取得,或者长度大于

255,小于65535,则使用varchar。
(3)text
该类型,可以表示更大的字串、
(4)日期类型:
1. date (日期:年-月-日)
对于date只保留 年-月-日
2. datetime
对于datetime。保存 年月日,时分秒
3. timestamp
邮戳: 该类型可以保存 年-月-日 : 时分秒
它和datetime最大的区别是,当你upda某条记录的时候,该列

值,会自动更新。
-------- 建议: 如果不知道该不该用timestamp,就不要用
*修改新的列
alter table 表名 add 列名 数据类型
----修改列(列的类型和大小)
alter table 表名 modify 列名 新的数据类型
----删除某列
alter table 表名 drop 列名
0. 在上面的员工表的基本上增加一个image列
1. 修改job列,使其长度为60
2. 删除sex列
3. 表名改为user
4. 修改表的字符集为utf8
5. 列名name修改为username
alter table user change column name username varchar(20);
使用insert语句向表中插入数据。
1、insert into 表名 [列名...] values(值...);
2、update 表名 set 列名=表达式... where 条件
说明:如果where 后面没有条件,则相当于对整个表进行操作。
3、delete from 表名 where 条件,
注意: 如果不使用where子句,将删除表中所有数据。
所有要小心使用
注意事项:
1. Delete语句不能删除某一列(可使用 Update)
2.使用delete语句仅删除记录,不删除表本身。如果删除表

,使用(drop语句)
3.同insert和update一样,从一个表中删除记录将引起其它

表的参照完整性问题,在修改数据库数据时,头脑中应该始终不

要忘记这个潜在的问题。
4.删除表中数据也可使用Truncate table语句,它和delete

有所不同、
---truncate table 表名 ,可以删除表的记录,速度快,但

不能回滚。
4. 在mysql中事务的一个特殊说明:

(1). mysql控制台是默认自动提交事务(dml)
(2). 如果我们要在控制台使用事务,应该这样
首先这样设置: set autocommit=false;
设置一个保存点: savapoint AA;
回滚: rollback to AA;
5. select 语句
select 列名....from 表名 where 条件
注意事项:
* select 指定查询乃邪恶列的数据
* column指定列名。
* 号代表查询所有列
select * from 表名。
* from 指定查询那张表
* Distinct可选,指显示结果时,是否剔除重要数据。
select distinct * from book ;
---使用where子句,进行过滤查询。
---like语句中,%代表0个或者多个任意字符,_代表一个字符。
使用order by子句排序查询结果,子句应位于select语句的结尾。
select column1,column2,column3..from table order by
column asc|desc ;
ASC: 升序 Desc 降序;
count语句,统计
统计一个班级共有多少学生
select count(*) from student where grade>90 ;
合计函数 sum
sum函数返回满足where条件的行的和
1. 统计一个班级数学总成绩?
select sum(math) from student;
2. 统计一个班级语文,英语,数学各科的总成绩
select sum(math),sum(english),sum(chinese) from student;
3.统计一个班级语文,英语,数学的成绩总和。
select sum(math+english+chinese) from student;
4.统计一个班级语文成绩平均分
select sum(chinese)/count(*) from student ;
注意:
1. sum仅对数值起作用。否则会报错。
avg的用法:
1. 求一个班级数学平均分:
select avg(math) from student ;
2. 求一个班级总分平均分
select avg(math+english+chinese) from student;
合计函数---MAX/MIN
i. 求班级最高分合最低分(数值范围在统计中特别有用)
select max(english+math+chinese) from student;
select语句(6)
1. ---使用group by 子句对列进行分组
1. select [列名] from 表名 group by 列名 ;
2. ---使用having子句过滤
select [列名] from 表名 group by 列名 having ...
(1). 对订单表中商品归类后,显示每一类商品的总价
select product ,sum(price) from goods group by product;
注意: Having 和where 均可实现过滤,但在having可以使

用合计函数,having通常跟在group by后,它作用于组:
group by...having....order by ...
请查询出,两个小时内,发布的消息:
select * from message where data_add(publishdate,interval

2 hour)>=now();
特别说明:
date_add(日期/date/datetime/timestamp , interval 数

type);
特殊用法:
1. 把一张表中的Name属性的第一个字母大写,其他全部小写,

怎么办?
select UCASE(SUBSTRING(LCASE('simth'),)) from dual ;
//首先把‘smith’的首字母取出
ucase(substring('smith',1,1));
//把‘smith’去掉首字母后,余下的部分取出转成小写
l、case(substring(substring('smith',2,length('smith')-1));
//最后拼凑
select
concat(ucase(substring('smith',1,1))lcase(substring

('smith',2,length('smith')-1))) from dual ;
对于mysql的常见约束
(1).primary key
特点:主键是用于唯一标识一条记录的约束,一张表,最多

只能有一个主键,主键不能为null,也不能重复。
create table user1 (id int primary key,name varchar(32));
(2).auto_increment 可以自增长。
举例:
create table user2(id int primary key auto_increment,

name varchar(32));
(3).unique ( 唯一约束 )
特点:表的某列的值,不能重复,可以为null
create table user3(
id int unque,
name varchar(32)
);
(4)not null (非空)
mysql 的表的列,默认情况下可以为null,如果不允许某列为

空,则可以使用not null说明
create table user5(
id int primary key ,
name varchar(32) not null
);
(5)外键 foregn key
从理论上说明,我们先建立主表,再建立从表
--部门表
create table dept(
id int primary key ,
name varchar(32),);
insert into dept value(1,'财务部');
---雇员表
create table emp(
id int primary key,
name varchar(32),
)
deptid int reference dept(id);
//上面的建立外键的写法是错误的
应该这样(表级定义)
create table emp(
id int primary key ,
name varchar(32),
depid int ,
constraint emp_fk foreign key(deptid) references dept(id);
)
小结外键:
(1).外键只能指向 主表的主键列 ,或者 unique
(2).外键的数据类型和它指向的列的数据类型一样
(3).外键的值,要么为空要么是指向的那列中存在的值。
(4).外键可以指向本表的主键列,或者unique

产品分类:
create table producttye(
id int primary key ,
catagory varcahr(32),
parentId int ,
constraint type_fk foreign key(paranetid) references
producttype(id);
)
insert into value(1,'张三',2);
* check
create table user7(age int check(age>12));
补充讲解mysql分页查询:
返回第四条----第七条记录
select * from student limit 3,4
基本语法:
select * from 表名 where 条件 .... limit从第几条取,取出几条,从第几条取,这里mysql从0开始编号;
* 安装语文成绩排序,查询出第3名到第5名
select * from student order by chinese desc limit 2,3 扩展,分页:pageNow ,pageSize
select * from 表名 where 条件[group by....having...order by...]limit(pageNow-1)*pageSize;
pageSize;

mysql知识初篇(一)的更多相关文章

  1. MySQL知识树-查询语句

    在日常的web应用开发过程中,一般会涉及到数据库方面的操作,其中查询又是占绝大部分的.我们不仅要会写查询,最好能系统的学习下与查询相关的知识点,这篇随笔我们就来一起看看MySQL查询知识相关的树是什么 ...

  2. SQL数据库基础知识-巩固篇<一>

    SQL数据库基础知识-巩固篇<一>... =============== 首先展示两款我个人很喜欢的数据库-专用于平时个人SQL技术的练习<特点:体积小,好安装和好卸载,功能完全够用 ...

  3. MySQL数据库扫盲篇

    MySQL数据库扫盲篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   一.MySQL概述 1>.什么是MySQL MySQL是瑞典的MySQL AB公司开发的一个可用于各 ...

  4. 【进阶之路】Redis基础知识两篇就满足(一)

    导言 大家好,我是南橘,一名练习时常两年半的java练习生,这是我在博客园的第一篇文章,当然,都是要从别处搬运过来的,不过以后新的文章也会在博客园同步发布,希望大家能多多支持^_^ 这篇文章的出现,首 ...

  5. 精通MySQL之架构篇

    老刘是即将找工作的研究生,自学大数据开发,一路走来,感慨颇深,网上大数据的资料良莠不齐,于是想写一份详细的大数据开发指南.这份指南把大数据的[基础知识][框架分析][源码理解]都用自己的话描述出来,让 ...

  6. 精通MySQL之索引篇,这篇注重练习!

    老刘是即将找工作的研究生,自学大数据开发,一路走来,感慨颇深,网上大数据的资料良莠不齐,于是想写一份详细的大数据开发指南.这份指南把大数据的[基础知识][框架分析][源码理解]都用自己的话描述出来,让 ...

  7. MYSQL(进阶篇)——一篇文章带你深入掌握MYSQL

    MYSQL(进阶篇)--一篇文章带你深入掌握MYSQL 我们在上篇文章中已经学习了MYSQL的基本语法和概念 在这篇文章中我们将讲解底层结构和一些新的语法帮助你更好的运用MYSQL 温馨提醒:该文章大 ...

  8. Oracle 数据库知识汇总篇

    Oracle 数据库知识汇总篇(更新中..) 1.安装部署篇 2.管理维护篇 3.数据迁移篇 4.故障处理篇 5.性能调优篇 6.SQL PL/SQL篇 7.考试认证篇 8.原理体系篇 9.架构设计篇 ...

  9. Vertica 数据库知识汇总篇

    Vertica 数据库知识汇总篇(更新中..) 1.Vertica 集群软件部署,各节点硬件性能测试 2.Vertica 创建数据库,创建业务用户测试 3.Vertica 数据库参数调整,资源池分配 ...

随机推荐

  1. MySql使用show processlist查看正在执行的Sql语句

    今天上班例行的查看了下服务器的运行状况,发现服务器特卡,是mysqld这个进程占用CPU到了99%导致的. 比较好奇是那个程序在使用mysql导致cpu这么高的,通过show processlist命 ...

  2. Create XO Checker Game With Oracle Forms

    Created XO Checker game in Oracle Forms and sharing its FMB (source code) for reference so that you ...

  3. 在服务器端如何提取checkbox提交的数据?

    HttpServeletRequest 单个字符串,getParameters() 多个字符串,getParametersValues(),返回一个数组,需要提前定义一个数组

  4. ServiceStack.OrmLite 学习笔记3 建表

    创建表 前一篇忘记写创建表了,这里补上.(其实前一篇也有那么一点) 建议安装源码里的t4模板看看效果先. public 的属性才有效 在表被创建或者删除的时候执行sql语句 [PostCreateTa ...

  5. hibernate缓存说明

    hibernate缓存说明: 1.一级缓存(session级别缓存)     一级缓存,不是用来提升性能,是用来处理事务的 2.二级缓存(sessionFactory级别缓存):     二级缓存,对 ...

  6. mysq错误(1)空用户创建库

    mysql5.6.24免安装版: 1.ERROR 1044 (42000): Access denied for user ''@'localhost' to database 现象:创建库失败. 出 ...

  7. c point

    a[i] 与 *(a+i) 是等价的. 事实上在计算a[i]的值时,c语言首先将前者转换为后者形式, 而且,通常而言,用指针编写的程序要比用数组下标编写的程序执行速度快,(为什么?) 因此,应该尽量用 ...

  8. 用Maven创建第一个项目

    1.在Eclipse左侧的空白处点击鼠标右键,选择:New>Other : 2.选择Maven项目,点击"Next"按钮: 3.保持默认,直接点击“Next”按钮: 4.选择 ...

  9. [转载] 每周推荐阅读 BFQ:实现IO的隔离共享与高吞吐访问

    磁盘IO和网络IO隔离与共享是混部应用中基本需求,从早些年的BVC到现在的Matrix,以及Galaxy,或者未来的BS/Mint混部都遇到类似的问题:由于无法有效实现IO级的隔离(包括吞吐隔离.延时 ...

  10. JavaWeb学习总结(十三)--数据库连接池

    一.数据库连接池的概念 用池来管理Connection,这可以重复使用Connection.有了池,所以我们就不用自己来创建Connection,而是通过池来获取Connection对象.当使用完Co ...