数据库MySQL技术-基础知识

数据库技术: SQL,关系数据库标准

注意: 环境编码:  cmd客户端是固定的gbk编码  而php网页中,是该网页文件的编码(现在主流都是utf8)。 mysql> set names gbk;

命令行启动停止数据库:net start/stop mysql

登录方式:mysql -hlocalhost -uroot -p -P端口号  -h服务器地址  -u登录名 退出:quit或exit

显示数据库: show databases;

创建数据库:create database db1 charset utf8;

数据库的备份:mysqldump -h服务器名 -u登录名 -p数据库名 > 文件名 数据库的恢复:mysql -h服务器名 -u登录名 -p数据库名 < 文件名      // 没有登录数据库系统 备份:mysqldump -hlocalhost -uroot -p nunu > c:/nunu.sql

基础语法规定  注释: 1、#注释内容   2、-- 注释内容(--后有空格)   3、/*注释内容*/  语句行 :   默认情况下,以一个英文分号作为一条语句的结束1   mysql 可以人为设定语句结束符   delimiter 新的结束符

大小写:  mysql  本身不区分大小写  根据系统是否区分大小写

 

创建数据库: create database 数据库名 【charset  字符编码名称】 【collate 排序规则】

删除数据库:drop database 【if exists】数据库名; 其中:if exists是用于一种安全运行的考虑,如果数据库不存在不会报错。

修改数据库: alter database 数据库名  charset  新的编码  collate  新的排序名;

显示字符编码:show charset; 显示排序规则:show collation; 显示一个数据库的创建语句:show create database 数据库名;

进入数据库:use 数据库名;

PHP使用MySQL函数: //sql_php

$link=mysql_connect("数据库服务器地址","用户名","密码"); //连接数据库 mysql_query("set names 网页编码名");    //设定“连接编码”;    //也可以这样做,mysql_set_charset("网页文件编码名");

mysql_query("use 数据库名");     //选定要使用的数据库    // = mysql_select_db("数据库名");

$result = mysql_query("select / delect /updata /insert / desc /show tables /drop....");

desc  显示表的结构

select * from tab_xiaoshu;

数据的打印: $result = mysql_query("select * from tab_int2;"); while ($res = mysql_fetch_array($result)) { }

$result = mysql_query("select * from tab_int2;"); fatch函数的三种形式 mysql_fetch_assoc($result);  array('id'=>1,'name'=>'user1','age'=>18); mysql_fetch_row($result);  array('1'=>1,'2'=>'user1','3'=>18); mysql_fetch_array($result);  array('id'=>1,'name'=>'user1','age'=>18,'id'=>1,'name'=>'user1','age'=>18);

create table tab_temp1(id int,name varchar(10),age tinyint); insert into tab_temp1 values(1,'user1',18);

扩展php中操作mysql数据的几个函数: $n1 = mysql_num_rows($result); //获得该结果集的数据行数 $n2 = mysql_num_fields($result); //获得该结果集的数据列数 $name = mysql_field_name($result,$i); //获得该结果集的第i个字段的名字 i从0开始算起

字段类型

字符类型:

主要有  varchar类型  理论值。65535;  char   定长字符串:   比如:手机号,中国邮政编码   不够会补齐。

create table tab_char_varchar(  postcode char(6), /*邮政编码*/  name varchar(10) /*姓名*/ );

 enum类型   单选项字符串数据类型。他非常适合于存储表单界面中的“单选项值”   enum("选项1","选项2",...);   实际内部:这些选项值对应的是如下数字值  set类型   单选项字符串数据类型。他非常适合于存储表单界面中的“多选项值”   set("选项1","选项2",...);   对应的数字是1,2,4,8,16

#演示enum,set的使用: create table enum_set(  id int auto_increment primary key,  sex enum('男','女'),  fav set('篮球','足球','中国足球','台球') );

#插如数据演示 insert into enum_set(id,sex,fav) values(null,'男','篮球'); insert into enum_set(id,sex,fav) values(null,1,1);

#多选项 insert into enum_set(id,sex,fav) values(null,'男','篮球,足球,台球'); insert into enum_set(id,sex,fav) values(null,'女',11);

 text类型:     他成为“长文本”字符类型。通常,其中存储的数据不占表格中的数据限制。   其最长存储是65535字符。smalltext  longtext

其他  binary 类型 定长二进制字符串  varbinary 类型 变长二进制字符串  blob 类型 二进制数据类型,但是用于存储“图片”

 

时间类型:  datetime类型:   时间日期

 date类型:   日期

 time类型:   时间

 year类型:   年份    timestamp:   时间戳类型:类似js中的GetTime(),或php中的Time(),他们都得到的是一个“整数数字”。 在应用中,时间日期类型,在我们自己给定的数据情况下,需要使用“单引号”引起来。

 

################################################### #示例代码 create table tab_time(  dt datetime,  d2 date,  t2 time,  y year,  ts timestamp );

##插入数据 insert into tab_time(dt,d2,t2,y)  values('2016/4/1 15:50:00','2016/4/1','15:50:00','2017');

insert into tab_time(dt,d2,t2,y)  values(now(),now(),now(),now());

 

基本语法形式: create table 【if not exists】 表明(字段名【,索引或约束列表】) 【表选项列表】; create table 【if not exists】 表明(字段1,字段2,....字段名【,索引1,索引2,...】) 【表选项1,表选项2,...】;

字段设定形式: 字段名 类型 【字段属性1 字段属性2 ....】

primary key:用于设定该字段为主键,此时该字段的值就可以“唯一确定”一行数据; unique key:设定该字段是“唯一的”,也就是不可重复的 not null: 用于设定该字段不能为空(null) 如果没有设定,则默认是可以为空的 default xx值:用于设定该字段的默认值。

#演示字段属性的使用 create table tab_shuxing(  id int auto_increment primary key,  user_name varchar(20) not null unique key,  password varchar(48) not null,  age tinyint default 18,  email varchar(50) comment '电子邮箱' );

#插入数据 insert into tab_shuxing (id ,user_name,password,age,email)values (1,'nunu1','123456',20,'nunu1@qq.com'); insert into tab_shuxing (id ,user_name,password,age,email)values (null,'nunu2',md5('123456'),null,'nunu2@qq.com'); insert into tab_shuxing (user_name,password,email)values ('nunu3',md5('654321'),'nunu3@qq.com');

select * from tab_shuxing;

 

索引:  指定一个表的某个或某些字段作为“索引数据字段”  形式为: 索引类型(要建立索引的字段名)  索引类型有: key(字段名);  #普通索引    含义:就是一个索引,只能加快查找速度    unique key(字段名); #唯一索引    含义:可以设定其字段的值不能重复(唯一性)    primary key(字段名); #主键索引    含义:具有区分该表中的任何一行数据的作用     唯一性可以为空 而主键索引不能为空    fulltext (字段名); #全文索引    foreign key (字段名) references其他表中的字段名; #外键索引

 

#演示索引创建语法: create table tab_suoyin(  id int auto_increment,  user_name varchar(20) ,  email varchar(50),  //age int, /*没有索引*/

 key(email),  unique key(user_name),/*这就是唯一索引*/  primary key(id)/*这就是主键索引*/ );

 

外键: create table banji(  id int auto_increment primary key,  banjihao varchar(10) unique key comment '班级号',  banzhuren varchar(10) comment '班主任',  open_date date comment '开班日期' );

create table xuesheng(  stu_id int auto_increment primary key,  name varchar(10),  age tinyint,  banji_id int comment '班级id',  foreign key (banji_id) references banji(id) );

 

 

 

约束:

主键约束:primary key(字段名);

唯一约束:unique  key(字段名);

外键约束:foreign  key(字段名) references 其他表名;

检查约束:  create table tab1(   age tinyint,   check (age>=0 and age<100) /*这就是检查约束*/  );

 

表选项列表

charset = 要使用的字符编码 engine = 存储引擎(表类型) auto_increment = 设定当前的自增长字段的初始值 comment = 该表的一些说明文字

 

create table tab_xuanxiang(  id int auto_increment primary key,  name varchar(10),  age tinyint ) charset = gbk, engine = MyIsam, auto_increment = 1000, comment = '说明、、' ;

insert into tab_xuanxiang(id,name,age) values(null,'nnn',18);

 

修改表: 添加字段:alter table 表名 add [column] 新字段名 字段类型 [字段属性列表] 修改字段(并可改名):alter table 表名 change [column] 旧字段名 新字段名 新字段类型 [新字段属性列表] 删除字段:alter table 表名 drop [column] 字段名 添加普通索引:alter table 表名 add key [索引名] (字段名1,....) 添加唯一索引(约束):alter table 表名 add unique key [索引名] (字段名1,....) 添加主键索引(约束):alter table 表名 add primary key [索引名] (字段名1,....) 修改表名:alter table 表名 rename [to] 新表名;

#实例 alter table tab_xuanxiang add column email varchar(50); alter table tab_xuanxiang add key (age); /*添加一个普通索引*/

删除表: drop table [if exists] 表名;

从已有表复制表结构:create table 【if not exists】新表名 like 原表名;

desc tab_int;

创建视图: create view v1 as select id,age from tab_xuanxiang;

使用视图:当做一个表用就可以了

删除视图: drop view 【if exists】 视图名;

posted @ 2016-04-13 12:42  小小暮雨  阅读(842)  评论(0编辑  收藏  举报