初识MYSQL2

mysql的配置

MySql默认的端口号是3306

默认字符集的设置

在mysql的安装目录,会看到my.ini文件!

my.ini文件介绍

01.default-character-set=utf8

设置客户端的字符集

02.character-set-server=utf8      设置服务器端的字符集

character-set-client=utf8      客户端发送的语句字符集

character-set-connection=utf8  设置服务器接收客户端语句的字符集

character-set-results=utf8     服务器将结果转换成对应字符集之后响应给客户端

同时设置字符集 client connection results

set  names  utf-8;

03.port

mysql的默认端口号是3306

04.basedir

数据库的安装位置

05.datadir

数据存放的位置

06.default-storage-engine

mysql的默认存储引擎

ps  如果修改了配置文件,需要重启mysql服务才会生效!

Utf-8是一种针对unicode的可变长度字符编码,又称为万国码。它是一种用于解决国际上字符不统一的一种编码格式,对英文使用8位(1字节),中文24位(3字节)来编码。包含了世界上所有国家需要的字符,是国际编码,通用性强!

配置mysql环境变量

01.复制mysql安装位置的bin目录

02.右键我的电脑===》属性===》高级系统设置===》环境变量===》把刚才复制的bin路径放入path变量中即可!

命令行连接MySql

ps  在windows操作系统中,命令不区分大小写!

01.win+R 输入 services.msc

02.找到mysql服务 右键点击开启

03.win+R 输入 cmd

04.进入命令窗口之后输入net start mysql 开启服务

05.net stop mysql 停止服务

连接mysql数据库

01.连接命令

Mysql  -h 服务器主机地址 -u 用户名 -p密码

02.如果是本机操作,可以省略-h

03.-p之后也可以不写,密码!回车之后再输入密码

如果-p之后书写密码,则不需要有空格

Root用户连接mysql数据库

Mysql  -u root  -p密码

ps  -p和密码之间不能有空格

查询mysql数据库的版本号以及当前登陆的用户

select version (),user();

MySql中数据库类型

1.用户数据库

用户根据需求自己创建的数据库!是我们研究的重点!

2.系统数据库

安装完mysql之后,默认附带的数据库

01.information_schema:存储了数据库对象的信息。如用户表信息,字段信息,权限信息,字符集信息和分区信息等。

02.performance_schema:存储了数据库服务器性能参数信息。

03.mysql:存储了系统的用户权限信息

04.test:数据库管理系统自动创建的测试数据库,任何用户都可以使用

SQL简介

什么是SQL

SQL的全称是(Structred Query Language)结构化查询语句。

01.1974年被提出,1980年改名为SQL

02.关系型数据库的标准语言

03.数据库脚本文件的扩展名

SQL的组成

01.DDL(Data Definition Language)数据定义语言。

用来创建数据库中的各种对象。如表,视图,索引,同义词等。

create      drop    truncate    alter

02.DQL(Data Query Language)数据查询语言。

select   where  group by  having  order by

03.DML(Data Manipulation Language)数据操作语言。

Insert  update  delete

04.DCL(Data Control Language)数据控制语言。

grant   revoke  rollback  commit

SQL中的运算符

01.算术运算符

+   加法

-   减法

*   乘法

/   除法

%   取余

02.赋值运算符

=   把=右边的值赋值给左边

03.比较运算符

>  大于

<  小于

<=  小于等于

>=  大于等于

<>  不等于

!=   不等于(不符合sql-92标准)

04.逻辑运算符

And  当两个表达式都为true,返回true

Or   当两个表达式有一个为true,返回true

Not  对表达式取反操作,优先级最高

使用DDL语句操作数据库

创建数据库

create database 数据库名称;

Query ok : 表示sql语句执行成功

1 row affected :表示影响的行数

0.00sec :表示执行时间

查询数据库列表

show  databases;

选择数据库

use 数据库名称;

删除数据库

drop  database 数据库名称;

创建用户

01.创建用户   只允许 本机 访问

create user `afei`@`%`identified by `afei`;

02.给用户授权

grant all privileges on*.*to ``afei@`localhost` ;

03.让权限立即生效

flush privileges;

使用DDL语句操作数据表

数据类型

01. 数值类型

tinyint(M)          1字节

smallint(M)         2字节

mediumint(M)      3字节

int(M,D)           4字节

float (M,D)         4字节

double (M,D)       8 字节

Decimal (M,D)      M+2字节

M:总位数,取值范围是1-65,默认值10.

D:小数位,取值范围是0-30,不能超过M的值!

Tinyint,smallint,mediumint,int都是整数类型!

Float,double 都是浮点类型!

Decimal 是精度最高的数值类型!

薪水存储一般都是用decimal来存储,因为精确性高!

如果定义了一个字段的类型是decimal(3,1)

那么这个字段的取值返回是 -99.9 到 99.9

02. 字符串类型

Char(M)   M字节  固定长度的字符串,M的取值返回是0-255

如果插入的数据字节数不够,空格补全!

如果插入的数据字节数超过了M,自动截取多余的字节!

Varchar(M) 可变长度 M的取值返回是0-65535

如果插入的数据字节数不够不需要补全!

如果插入的数据字节数超过了M,自动截取多余的字节!

Tinttext: 取值返回是0-255  微型文本串

Text   :取值返回是0-65535  文本串

03. 日期类型

Date           YYYY-MM-DD        current_date这个函数可以获取当前系统的年月日

Datetime       YY-MM-DD hh:mm:ss

Timestamp      YY-MM-DD hh:mm:ss   CURRENT_TIMESTAMP这个函数也是设置系统默认时间

Time           hh:mm:ss

Year            YYYY  得到年份

ps  

如果一个字段是日期类型,那么任何符号都可以作为日期的分隔符

比如

2017-02-01

2017+02+01

2017/02/01

2017.02.01

等 都是可以正确给日期类型的字段赋值成功!

CURRENT_DATE         这个函数获取当前系统的年月日

CURRENT_TIMESTAMP   这个函数获取系统 年月日 时分秒

CURRENT_TIME         这个函数获取系统 时分秒

有需求是创建一个字段来记录某条信息的最近修改时间,

那么我们可以在创建表的时候,就定义为

字段名称 timestamp  NOT NULL  default  CURRENT_TIMESTAMP  on update CURRENT_TIMESTAMP

意思是说,只要有人修改这条信息的时候,这条信息的这个日期字段就会自动更新!

  

Enum类型

# 创建一个student表

CREATE  TABLE  IF NOT EXISTS student(

id INT(4) NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '学生编号',

`name` VARCHAR(10) NOT NULL UNIQUE KEY COMMENT '学生姓名',

sex   ENUM('男','女') DEFAULT '男' COMMENT '学生性别'

)ENGINE='InnoDB' DEFAULT CHARSET='utf8' COMMENT '学生表';

创建表

语法

Create  table [if not exists] 表名(

字段名称  数据类型 [字段属性|约束 ] [索引] [注释],

字段名称  数据类型 [字段属性|约束 ] [索引] [注释]

)[表类型][表字符集][注释];

ps

01.如果创建的表名,字段等与数据库中的保留字冲突,建议使用 反引号(`)括起来!

Mysql自动生成的代码中,数据库,表名和字段都会使用 反引号(`)括起来!

02.DDL语句创建表的时候,多个字段之间使用逗号(,)隔开!最后一个字段无需逗号(,)

03.   单行注释 #

多行注释 /**/

04.表中的字段我们也称之为列

有符号类型  和  无符号类型

有符号类型 :可以取负值

无符号类型:默认是0! 0--类型的长度

 ps

ZEROFILL属性:如果位数不够,前面用零补齐!

若某数值字段指定了ZEROFILL属性,

将自动添加UNSIGNED属性!

ZEROFILL属性:如果位数不够,前面用零补齐!

若某数值字段指定了ZEROFILL属性,

将自动添加UNSIGNED属性!

#创建一个student表
CREATE  TABLE  IF NOT EXISTS student(
 id INT(4) NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '学生编号',
 `name` VARCHAR(10) NOT NULL UNIQUE KEY COMMENT '学生姓名',
 sex  VARCHAR(2) NOT NULL DEFAULT '男' COMMENT '学生性别'
)ENGINE='InnoDB' DEFAULT CHARSET='utf8' COMMENT '学生表';

# 新增字段
INSERT  INTO student(id,`name`,sex) VALUES(10,'小白',DEFAULT);
INSERT  INTO student(`name`,sex) VALUES('小黑',DEFAULT);
INSERT  INTO student(`name`,sex) VALUES('小黑2',DEFAULT);
#  如果我们手动的更改了自动增长的列,那么下次自动增长的起点就变了

#增加一条数据

INSERT  INTO student(`name`,sex) VALUES('小黑1',DEFAULT);

#增加多条数据

INSERT INTO student(`name`,sex)VALUES('小黑',DEFAULT),

('小黑2',DEFAULT),('小黑3',DEFAULT),('小黑4',DEFAULT);

查询表的定义
 DESCRIBE student;

字段的约束

为了保证数据的完整性,mysql中提供了约束机制!

常用的属性约束:

1.非空约束   not null

字段不允许为空!

2.默认约束   default

给字段设置默认值

3.唯一约束   unique key(UK)

设置字段的值是唯一。的允许有空值,但只能有一个!

4.主键约束   primary key(PK)

设置表中记录的唯一标识!一个表中不允许重复!

5.外键约束   foreign key(FK)

用于两个表之间建立关联关系!

注意点:

01.InnoDB引擎支持外键,MYISAM引擎不支持!

02.外键只能建立在从表中!

6.自动增长   auto_increment

01.一般用于主键,默认自增1

02.是整数类型

03.可设置初始值和步长

表和字段的注释

Create table  表名(

字段1  类型 comment 注释内容,

字段2 类型 comment 注释内容

)comment=’表的注释内容’

表的引擎

Create table  表名(

字段1  类型 comment 注释内容,

字段2 类型 comment 注释内容

)engine=’表的引擎’

表的编码

Create table  表名(

字段1  类型 comment 注释内容,

字段2 类型 comment 注释内容

)charset=’表的编码格式’

查询表

show tables; describe 表名;

修改表

01.修改表名

Alter table 旧表名 rename [to] 新表名;

02.给表中添加字段

Alter table 表名 add 字段名  数据类型[属性];

03.修改表中的字段

Alter table 表名 change  原字段名  新字段名 数据类型[属性];

04.删除字段

Alter table 表名 drop 字段名;

05.添加主键约束

Alter table 表名 add  constraint 主键名 primary key  表名(字段名);

复合主键

将多列设置成主键!

-- 给成绩表设置复合主键

ALTER TABLE result  ADD PRIMARY KEY  pk_result (studentno,subjectno,examdate);

06.添加外键约束

Alter table 表名 add  constraint 外键名 foreign key (外键字段名) references  关联表名(关联字段);

如果 现在有 两个表 ,比如说  一个是 teacher  一个是 Student

两表存在主外键关系!那么 不能直接删除teacher表!哪怕删除teacher表中的数据

也要考虑student表中是否有和老师对应的数据!

删除表

Drop table  [if exists]表名;

MySql系统帮助

Help  查询内容;

上一篇:Tarjan 详解


下一篇:zend studio报错