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,‘[email protected]‘,1),
(‘李四‘,0,20,‘[email protected]‘,1),
(‘王五‘,1,16,‘[email protected]‘,1),
(‘赵六‘,1,22,‘[email protected]‘,1),
(‘田七‘,0,20,‘[email protected]‘,1),
(‘王八‘,1,21,‘[email protected]‘,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 会重置
----------------------------------------------------------------
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)
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。