【初识mysql】
mssql 2000 Access DB2 oracle
【mysql安装】
1、官方下载mysql win32 msi
2、点击安装
3、配置
4、查看是否安装成功
通过cmd 输入netstat -a搜索3306端口是否处于listening状态
【mysql服务的启动与停止】
1、右击我的电脑-管理-服务与应用程序-服务-mysql
2、net stop mysql|net start mysql
【mysql的配置文件以及数据位置】
1、安装目录下名为mysql.ini文件
2、默认数据位置 配置文件中字段为datadir
3、配置文件中简单的字段的理解
【mysql的登录与退出】
1、通过图形化界面
phpmyadmin
mysqlGUI
Navicat for MySQL
2、DOS登录或者自带的MySQL Command Line Client
mysql -h IP或者域名 -u username -p -P port 回车 PWD
3、exit或者quit(CLI)
【密码的修改】
1、set password = password('密码');
set password for 用户名@域名或者地址 =password('密码');
2、cmd下输入mysqladmin -uroot -p password 新密码 回车 旧密码
3、通过修改mysql数据库的user表
update mysql.user set password=password('新密码')
where host='ip或者域名' and user='用户名'
【忘记密码的解决办法】
1、停止mysql服务
2、mysqld(mysqld-nt) --skip-grant-tables
3、重新打开窗口cmd
4、输入mysql -u root -p 回车 无需密码
5、通过上述密码修改方法3修改密码
6、flush privileges
7、exit
8、资源管理器kill进程mysqld 或者 mysql-nt 不要把mysql.exe
9、net start mysql
【简单的用户权限管理】
1、用户的创建
create user 用户名 identified by 密码
2、删除用户
drop user 用户名
3、用户重命名
rename user 原始名称 to 新名称
注释 :
用户名@localhost 只能本地登录
用户名@% 可以通过非本地登录
如果本地登录将%自动转换为localhost
【用户的权限】
1、初始用户只具有连接权限不具有其他权限,而且连接这个权限无法收回
只能通过删除用户
2、授权grant 收回权限revoke
3、授权语法
grant 权限 on 数据库.表 to 用户@域名或者IP identified by '密码'
4、收回权限
revoke 权限 on 数据库.表 from 用户@域名或者IP
max_queries_per_hour 每个小时最大查询的数 0没有限制
max_updates_per_hour 每个小时最大更新数据的次数 0没有限制
max_user_connects 最大并发数 连接数 0没有限制
max_connects_per_hour 每个小时最大的并发数 0没有限制
【数据库的基本CLI】
1、show databases; 查看服务器中的所有数据库
2、select user(); 查看当前用户
3、select version(); 版本
4、show processlist; 在线详细信息
5、show warnings; 警告信息
6、use 数据库名称; 调用具体的数据库
7、show grants [for 用户名@域名或者IP]; 查看用户权限
8、select database(); 产看当前使用数据库
【数据库的创建和删除】
1、create database [if not exists] 数据库名称
2、drop database 数据库名称
【表的创建、修改和删除】
1、创建
create table [if not exists] 表名(
字段名称 类型(大小) 属性,
字段名称 类型(大小) 属性,
字段名称 类型(大小) 属性,
⋯⋯
)engine=innodb default charset=编码;
create table [if not exists] 表名(
字段名称 类型(大小),
字段名称 类型(大小),
字段名称 类型(大小),
⋯⋯
属性,
属性,
⋯⋯
)engine=innodb default charset=编码;
2、数据类型
日期类型:date Y-M-D 20110105(自动去除其中的非法符号!,*)
time h:m:s 14:12:11
datetime date+time Y-M-D H:m:S
timestamp:更新时日期值也会更新
timestamp default current_timestamp:只记录第一次插入的时间
数值类型:
tinyint 0|1
smallint
mediumint
int[M] M默认11 人为设定系统也会根据自动分配空间(类似char和varchar)
bigint
float[(M,D)] 10的(M-D)次方->代表最大值 D->代表保留位数不够补0
//For float(M,D), double(M,D) or decimal(M,D), M must be >= D
//只写M 0-24代表float精确度总的十位数超过6位用科学计数法,小数超出四舍五入,不够不补0
//float和double在desc中不会显示精确度
//select 中通过 float查询的前提是MD都有或者是double
double //25-53代表double 但是不可以写精确度 >15位用科学计数法
字符串类型
char
varchar
text
blob
enum(v1,v2,v3⋯⋯65535) 插入的值是其中的一个
set(v1,v2,v3⋯⋯64) 插入的值是其中的0到多个
3、属性
1、自增属性 auto_increment
2、不为空not null | null
3、默认值default
4、主键primary key
5、列值的唯一 unqiue
6、索引 index|key
7、前导0 zerofill
属性可以写在末尾的主键 列值唯一 索引
4、查看表
desc 表名
show columns from 表名
show columns in 表名
5、修改表
alter table 表名
a) drop 字段 注意当表中字段为1个的时候不能删除
b) add 字段名 类型[大小] 属性,add 字段名 类型[大小] 属性⋯⋯ [after|first 字段]
c) modify 字段名 类型[大小] 属性,modify 字段名 类型[大小] 属性⋯⋯ [after|first 字段]
d) change 原始的字段名 新的字段名 字段名 类型[大小] 属性,modify 字段名 类型[大小] 属性⋯⋯ [after|first 字段]
e) rename 新的表名 (方法二:rename table 旧的表名 to 新的表名)
f) engine=存储引擎(type不建议使用)
g) charset=字符编码
6、删除表格
drop table 表名
【表创建例题】
例题1:创建一个表用于存储用户上传的文件信息
(文件的原始名,大小,路径,文件名,类型,上传人,是否共享)
例题2:创建一个表用于存储用户注册信息
(用户名,密码,id,email,安全问题,安全问题答案)
例题3:创建一个表用户留言板信息
(给谁留言,是谁留的言,留言时间,留言内容)
【数据库和表相关信息的一些CLI】
1、show create database 数据库名
2、show create table 表名
3、show status;
4、show table status like "";
5、show variables;
【数据库的备份与导入】
1、备份cmd->mysqldump -u root -p 数据库 [表名] > 文件名.sql->回车->密码
注意:cmd下运行mysqldump >覆盖 >>追加
2、还原:进入mysql下->source 路径
3、备份和还原可以进入配置文件所在数据目录下拷贝
【CURD操作】
1、表中记录的写入
insert into 表名[(字段1,字段2,字段3,⋯⋯)]
values(值1,值2,值3,⋯⋯),(值1,值2,值3,⋯⋯)
2、insert into 表名 set 字段1=值1,字段2=值2,字段3=值3⋯⋯
3、表中记录的删除
delete from 表名 where 条件
4、表中记录的更新
update 表名 set 字段1=值1,字段2=值2,字段3=值3⋯⋯ [where 条件]
5、表中记录的查询
select *|字段[,字段] [as 新字段名称] from 表名
[where 条件 group by 字段 having 附加条件 in()
order by ASC|DESC limit开始,长度]
6、where 条件的理解
= | !=() | between and | or | and | in | not
【mysql中的简单的数学函数】
1、统计函数
count()|max()|min()|avg()|sum()
2、mysql运算
php运算一致(除逻辑运算&& || !)
3、数学函数
pi()|round()|rand()|ceil()|floor|sin()|abs()|mod()
4、特殊的
like '' %->任意
regexp '' ->posix
【mysql中的字符串和时间】
concat(字符1,字符2...) 字符连接
instr(字符串,字符) 寻找字符所在字符串的位置
char ascii编码 转化为字符
ord 字符转化为ascii编码
substring(字符串,开始位置,长度);
length(字符串) 字符串长度
substr(字符串,开始位置,长度);
lpad 往左边填充
rpad 往右边填充
lower 转化为小写
upper 转化为大写
select left(字符串,长度);从左边取几位
select right(字符串, 长度);从右边取几位
select curdate(); 获取当前的日期
select curtime(); 获取当前的时间
select now();获取当前的时间跟日期