Mysql基础

MySQL
===========================
1.什么是数据库
2.什么是MySQL
3.为什么要用数据库
4.什么是实体 entity
客观存在的,可以被描述的事或物(一件商品、一次交易记录...)
如何描述实体:------>特征(属性)
一个实体,就是一条记录,也叫一行(row) record
特征(属性)---->列(字段)
表--->一条一条的记录组成
数据库--->由多张表组成,表之间有关系

5.数据库系统
Database System 、 DBS

数据库Database 、db
数据库管理系统Database Manager System 、DBMS
6.数据库管理员
Database Administrator 、DBA

7.主流数据库
Oracle MySQL MSSQLServer DB2 Access SQLite

8.数据冗余
根据需求决定

9.数据的完整性
如何保证数据的完整性

10.主键
最小、最稳定、不重复、不改变
如果实体中选不出合适的,加一列,用自增的整数作为主键

11.唯一约束
***主键与唯一约束的区别:主键不允许为null ,唯一约束可以为null

12.外键
用来和其它表发生关联

 

=====================================================
1.服务运行中
我的电脑->右键->管理->服务->mysql
cmd命令行:
net stop mysql
net start mysql
2.进入MySQL
运行cmd
程序->附件->命令提示符
显示C:\Users\User> 这是Windows命令得示符,表示当前是在Windows中,并未进入到MySQL

-h主机名 -u用户名 -p密码
mysql -hlocalhost -uroot -p123456 #注意-p和密码之间没有空格
mysql -uroot -p 常用这种

显示mysql> 说明进入到MySQL中了,就可以在这里执行MySQL相关指令

3.MySQL常用指令
指令结束: ; \g
命令输错了: \c 清除缓冲区
帮助: help; \h
退出: exit quit ctrl+c


提示符:
-> 等分号或\g 或\c
'> 等单引号
"> 等输入双引号

上下箭头能调出历史记录

如何复制到记事本中

=================================================================
1.查看当前有哪些数据库?
show databases;

2.如何创建一个数据库?
创建一个名称叫s01的数据库
create database s01;
3.删除数据库
drop database s01;
4.进入一个数据库
use 数据库名;
use s01;
5.如果查看当前在哪个数据库中?
select database();
6.查看当前数据库有哪些表
show tables;


数据类型
4种:数值、字符串 日期时间 null

*tinyint 1个字节 -128到127 无符号的 0-255
smallint 2个字节 无符号的0-65535
mediumint 3个字节
*int 4个字节 正负21亿多 无符号的:0到40多亿
bigint 8个字节 负的2的63次方到正的2的63次方减1 无符号的:……

float(m,d) m总位数 d有多少位是小数
float(3,2) -9.99到9.99
m和d都不填,表示最大范围

float(p)

double(m,d)

decimal(m,d) 以字符串表示浮点数 缩写 dec

char(0-255)
是定长的,不足长度,会在后面加空格,如果太长,会删除后面一部份
varchar(0-65535)
变长的,占位空间取决于真正存放的数据
text 长文本 不需要指定长度 也没有默认值
blob 二进制
enum('男','女') 只能选一个
set('a','b','c') 'ab' 'abc' 'bc' 'ca' 'a'

datetime 日期时间
datetime yyyy-mm-dd hh:ii:ss
date yyyy-mm-dd
time hh:ii:ss
year yyyy



7.创建表
create table stu(
id int auto_increment primary key,
name varchar(50) unique not null,
sex tinyint not null default 0,
email varchar(255) not null default ''
)engine=MyISAM default charset=utf8;


8.删除表
drop table stu;


9.如果查看建表语句(已经创建好的表,想知道是怎么创建的)
show create table 表名\G


10.如何查看表结构
desc 表名;
11.concat

下拉菜单
sql="select * from category order by concat(path,id)"
连接的作用
----------------------------------------
运算符

+ - * / %
= > < >= <= <> !=

select 2+3;

比较是否相等,是用一个等号,不是两个等号
null不等于null

is null
is not null
*in
not in
*between and
*like
regexp
not regexp


&& and || or ! not
not的优先级很高


& | >> <<

select 3 in (3,4,5);
select 3 between 2 and 5;
select (3>=2 and 3<=5); 与上一行一样的
select 'admininistrator' like 'admin%';
select * from t1 where name regexp 'a.*$';

=============================
安装MysQL
mysql-5.9-win32.msi
mysql-5.9-win32.zip 推荐

mysqld -install mysql
mysqld -remove mysql

my.ini
[msyqld]
character-set-server = utf8
[client]
default-character-set = utf8


命令行的中文编码
*简体中文版Windows系统中
set names gbk;
=============================

约束
unsigned 无符号 没有负数了 只能放在数值类型的后面
zerofill 零填充 例如int(6) zerofill
mysql> select * from t2;
+--------+
| num |
+--------+
| 000025 |
+--------+
1 row in set (0.00 sec)
not null 非空
auto_increment 自增,某一个自增id被删除,将不会再使用
primary key 主键
unique 唯一
default 默认值


==========================
11.添加列
alter table 表名 add 列名 类型 约束; (add 后面的部份,与建表语句一样)

12.删除列
alter table 表名 drop 列名;

13.修改列信息
alter table 表名 change 原列名 新列名 类型 约束 (后面部份与建表语句一样)
14.设整列顺序
alter table 表名 change 原列名 新列名 类型 约束 after 列名;
alter table stu change address address varchar(255) not null after name;
after first
15.如何改表名称
alter table 表名 rename as 新表名;

16.如何改表引擎
常用引擎:MyISAM InnoDB(支持事务)
alter table 表名 engine 新的引擎;

----------------------------------
以上15条表结构相关指令,全背,默写
----------------------------------

如果存在stu表,则删除
DROP TABLE IF EXISTS stu;

注释:
-- 注释内容
/*多行*/
#脚本风格注释

没有stu表,则创建
CREATE TABLE IF NOT EXISTS stu(
id INT AUTO_INCREMENT PRIMARY KEY, -- 编号
name VARCHAR(50) NOT NULL UNIQUE, -- 姓名
sex INT NOT NULL DEFAULT 0, -- 性别
age INT NOT NULL DEFAULT 0, -- 年龄
email VARCHAR(255) NOT NULL DEFAULT '', -- 邮箱
grade_id INT NOT NULL -- 班级编号
)ENGINE=MyISAM DEFAULT CHARSET=UTF8;

/*测试数据*/
INSERT INTO stu (name,sex,age,email,grade_id)
VALUES
('张三',1,18,'aaa@bb.com',1),
('李四',0,20,'bbb@bb.com',1),
('王五',1,16,'ccc@bb.com',1),
('赵六',1,22,'ddd@bb.com',1),
('田七',0,20,'ddd@bb.com',1),
('王八',1,21,'ddd@bb.com',1);




-----------------------------
插入数据
insert into 表名 (字段1,字段2,...) values ('值1','值2',...);
如何一次插入多条记录?
insert into 表名 (字段1,字段2,...) values ('值1','值2',...),('值3','值4',...);

不写列名时,按顺序对应,数量样一样多
insert into 表名 values ('值1','值2');


查询数据
select 列名 from 表名 where 条件 排序 限制返回数量

查所有信息
select * from stu; *号表示所有的列(字段)
只想显示id和name
select id,name from stu;
条件
select * from stu where id>3;
select * from stu where age=20;
select * from stu where age between 18 and 21;
select * from stu where age>=18 and age<=21;
select * from stu where name like '王%';
select * from stu where age=18 or age=21;
排序
select * from stu order by age;
默认是 asc 升序
倒序排
select * from stu order by age desc;
所有男生从大到小排
select * from stu where sex=1 order by age desc;
限制返回数量
select * from stu limit 3;
通常要结合排序使用:
select * from stu order by id limit 3; -- 前3条数据
等同于 limit 0,3
跳过2条,返回3条:
select * from stu order by id limit 2,3;

编号大于1,大于16岁,男生排前面,只返回3条数据,只显示姓名、性别、年龄
select name,sex,age from stu where id>1 and age>16 order by sex desc limit 0,3;

删除
delete from 表名 where 条件;
注意不要成为王八蛋

更新
update 表名 set 列名=值 where 条件;
也要写上条件
creat

========================================
数据的备份 全部在操作系统命令行中
C:\Users\User>mysqldump -uroot -p s01>c:\stu_201304016.sql

导入
C:\Users\User>mysqladmin -uroot -p create s01 创建数据库
C:\Users\User>mysql -uroot -p s01<c:\stu_201304016.sql

 

-------------------------------------------
如何复制数据到另一个表
insert into stu2 select * from stu; 新表stu2必须存在

create table stu3 select * from stu; 新表不存在时,创建(没有约束)


create table stu3 select * from stu where 1<>1; 只在表结构

create table stu3 select id,name from stu ; 只要id和name列

create table stu6 select id,name,'20130407' time from stu; 添加一个time 列

 

更新数据

update stu set age=age+1; 没有php的$i++;
在更新用记积分、余额时,通常这么使用


快速删除
truncate table stu;
自增id 会重置

 

在MySQL数据库中,

字段或列的注释是用属性comment来添加。

创建新表的脚本中,
可在字段定义脚本中添加comment属性来添加注释。

示例代码如下:
create table test(
id int not null default 0 comment '用户id'
)

如果是已经建好的表,
也可以用修改字段的命令,然后加上comment属性定义,就可以添加上注释了。

示例代码如下:
alter table test
change column id id int not null default 0 comment '测试表id' 

给表的字段或列添加注释已经知道了,
那么如何来查看已有表的所有字段的注释呢?
可以用命令:show full columns from table 来查看,
示例如下:
show full columns from test;


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

PHP操作MySQL

1.PHP操作数据常用的3种方式
mysql函数 纯过程化
mysqli
PDO 纯面向对象

2.mysql函数

mysql_connect(主机,用户名,密码)
mysql_select_db(数据库名称 [,连接 ])
mysql_set_charset('utf8' [,连接 ])
mysql_query(SQL语句 [,连接 ])
mysql_affected_rows(连接) 受影响行数
mysql_error(连接)
mysql_errno(连接)
mysql_close(连接)

两种排错方式 action_bak.php


mysql_insert_id(连接)


//在增删改的情况下,函数需要传入资源的情况下,都是传入连接($link)

 

posted @ 2015-03-09 10:27  午时的海  阅读(182)  评论(0编辑  收藏  举报