文章目录
  1. 1. MySQL
    1. 1.1. 以上15条表结构相关指令,全背,默写

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&lt;&gt;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)

 

文章目录
  1. 1. MySQL
    1. 1.1. 以上15条表结构相关指令,全背,默写