澳门金沙vip 7

数据库MySQL技艺-基础知识

mysql列属性包括:NULL 、default、comment、primary key、unique key

–回顾

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

一、NULL
定义方式:NULL(默认)  NOT NULL

字段类型(列类型):数值型,时间日期型和字符串类型

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

空属性有2个值,mysql数据库默认字段都是为null的,但是在实际开发过程中,尽可能保证所有的数据都不应该为null,空数据没有意义,任何参与NULL运算的结果都是NULL。

数值型:整型和小数型(浮点型和定点型)

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

二、comment
列描述(comment),又可以称之为注释,实际没有什么含义,是专门用来描述字段的,会根据创建语句保存,用来给程序员(或者数据库管理员)来进行了解的。主要用于查看创建表的语法上进行查看,可用show
create table tb_name;语句查看

时间日期型:datetime,date,time,timestamp,year

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

  create table my_tab(

字符串类型:定长,变长,文本字符串(text和blob**),枚举和集合**

显示数据库: show
databases;

    str varchar(10) not null comment ‘描述信息’,

Mysql记录长度:65535 个字节,varchar达不到理论长度,null 占用一个字节,text文本不占用记录长度(但是本身占用十个字节)

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

    num int unsigned not null comment ‘描述信息’

字段属性:主键,唯一键和自增长。

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

  );

字段的属性

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

三、default
用来设置默认值。某一种数据会经常的出现某个具体值,可以在一开始指定好,在需要真实数据的时候,用户可以选择性地使用默认值。

–主键:唯一键和自增长。

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

  create table my_tab(

主键:primary key,主要的键,一张表中只能有一个字段可以使用对应的键,用来唯一的约束该字段里面的数据,不能重复,这种称之为主键,一张表只能有最多一个主键

 

    str varchar(10) not null,

增加主键:

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

    num int unsigned default 10;   #默认值为10

sql操作中有多种方式可以给表增加主键:分为三种方法

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

  );

方案1:在创建表的时候,直接在字段之后,跟primary key 关键字(主键默认不允许为空)

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

使用方法:

mysql> create table my_pri1(name
varchar(20) not null comment ‘姓名’,number char(10) primary key comment
‘学号:itcast + 0000,不能重复’) charset utf8;

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

  insert into my_tab (str) values (‘abc’);   #num会自动设为10
  insert into my_tab values (‘abc’, default); #用默认值插入num字段

澳门金沙vip 1

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

 

优点非常直接,缺点是只能使用一个字段作为主键

PHP使用MySQL函数:
//sql_php

四、primary key (主键)

方案2:在创建表的时,在所有的字段之后,使用primary key(主键字段列表)来创建主键(如果有多个字段作为主键,可以是复合主键)

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

主键约束: 主键对应的字段中的数据不允许重复,一旦重复,操作失败。

mysql> create table my_pri2(number
char(10) comment ‘学号:itcast + 0000’,course char(10) comment
‘课程代码:3901 + 0000’,score tinyint unsigned default
60 comment ‘成绩’,primary key(number,course)) charset
utf8;

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

  1. 主键特点

澳门金沙vip 2

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

  ① 唯一性,一张表只能有一个字段设为主键

方案3:当表已经创建好之后,额外追加属性:可以通过修改表字段属性,也可直接追加

desc 
显示表的结构

  ② 主键不允许为NULL

mysql> altar table [表名] add primary key(字段列表);

select * from
tab_xiaoshu;

  1. 增加主键方式,常用的有3种

mysql> create table my_pri3(course
char(10) not null comment ‘课程编号:3901 + 000’,name varchar(10) not null
comment ‘课程名字’); #创建无主键新表

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

  ① 在创建表时,在字段后面跟关键字primary key设置

澳门金沙vip 3

$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 my_tab(

mysql> alter table my_pri3 modify
course char(10) primary key comment ‘课程编号:3901 + 000’; #方法1:追加主键

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

      id int primary key, #第一种方式

mysql> alter table my_pri3 add primary
key(course); 方法2:添加主键

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

      name varchar(10)

澳门金沙vip 4

字段类型

    )charset utf8;

方法2前提:表中字段对应的数据本身是独立的(不重复)

字符类型:

  ② 在创建表时,在所有字段后使用primary key(字段列表)设置复合主键

1.1主键约束

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

    create table my_tab2(

主键对应的字段中的数据不允许重复,一旦重复数据操作失败(增和改)

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

      id int,

向pri1表中插入数据

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

      number int,

mysql> insert into my_pri1
values(‘古学星’,’itcast0001′),(‘蔡仁湾’,’itcast0002′);

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

      name varchar(10),

mysql> insert
into my_pri2
values(‘itcast0001′,’39010001’,90),(‘itcast0001′,’39010002’,85),(‘itcast0002′,’39010001’,92);

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

      primary key(id, number, …)
#第二种方式,这种方式是符合主键,比较特殊

澳门金沙vip 5

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

    )charset utf8;

接下来实验下主键冲突(重复)

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

复合主键:

mysql> insert into my_pri1
values(‘刘辉’,’itcast0022′); #不可以,主键冲突

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

     在创建表的时候,在所有的字段之后,使用primay
key(主键字段列表)来创建主键(可以有多个字段作为主键)来创建复合主键。

mysql> insert into my_pri2
values(‘itcast0001′,’39010001’,100);
#不可以,冲突

 

     语法:primary key(字段1,字段2……)

澳门金沙vip 6

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

     例子:创建一张my_primark_key2的表,为其添加number字段(int类型)和classname
字段(varchar类型),将这个2字段添加成复合主键。          

1.2更新,删除主键

 date类型:
  日期

        create table if not exists my_primary_key2(

没有办法更新主键,主键需先删除才能增加

 time类型:
  时间

          number int not null,

alter
table [表名] drop primary key;

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

          classname varchar(20) not null,

mysql> alter
table my_pri3 drop primary key;

 

          primary key(number,classname) #符合主键

澳门金沙vip 7

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

        )charset utf8;

1.3主键的分类

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

插入数据:插入数据只有两个字段(number,name)共同重复时才会插入失败,如果有1个字段重复,另一个字段不重复,那么会插入成功。

再实际创建表的过程中,很少使用真是业务操作数据作为主键字段(业务主键,如学号,课程号)大部分的时候使用逻辑性的字段(字段没有业务含义,值没有含义),通常将这种字段主键称为逻辑主键

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

 

mysql> create table my_student (id int
primary key auto_increnment comment ‘逻辑主键:自增长’,number char(10) not null comment
‘学号’,name varchar(10) not null);

 

③ 在已创建好的表中追加主键

自动增长:当对应的字段不给值,或者说给默认值或者给null的时候,会自动的被系统触发,系统会从当前字段中已有的最大值再进行+1操作,得到一个新的再不同的字段

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