数据库技术: 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】 视图名;

数据库MySQL技术-基础知识的更多相关文章

  1. Cisco路由技术基础知识详解

    第一部分 请写出568A的线序(接触网络第一天就应该会的,只要你掐过,想都能想出来) .网卡MAC地址长度是(  )个二进制位(16进制与2进制的换算关系,只是换种方式问,不用你拿笔去算) A.12  ...

  2. Mysql之基础知识笔记

    Mysql数据库基础知识个人笔记 连接本地数据库: mysql -h localhost -u root -p 回车输入数据库密码 数据库的基础操作: 查看当前所有的数据库:show database ...

  3. MySQL:基础知识

    基础知识 一.软件的生命周期 软件定义 软件开发 软件使用与维护 二.数据(Data) 1.定义 描述客观事物特征或性质的某种符号,经过数字化处理存储在计算机 2.数据独立性 物理独立性:指用户的应用 ...

  4. MySQL学习基础知识1

    什么是数据库? 数据库就是存储数据的仓库. 存储方式: 变量 无法永久存储 文件处理,可以永久存储,弊端:文件只能在自己的计算机读写,无法被分享(局域网除外) 数据库分类: 1.关系型数据库 提供某种 ...

  5. MySQL学习基础知识2

    1.基础语句 查 select(* | 字段名 | 四则运算 | 聚合函数) from 表名称; 加上as取别名 as可省略 如:select name, (math+english)/2 total ...

  6. php缓存技术基础知识

    普遍缓存技术 数据缓存:这里所说的数据缓存是指数据库查询缓存,每次访问页面的时候,都会先检测相应的缓存数据是否存在,如果不存在,就连接数据库,得到数据,并把查询结果序列化后保存到文件中,以后同样的查询 ...

  7. mysql笔记--基础知识

    SQL基础 SQL语句的分类: DQL: 数据库查询语句,基本的就是select查询命令,用于查询数据 DML: 数据操纵语句,用于插入,更新,删除数据,即INSERT, UPDATE,DELETE ...

  8. MSSQL数据库的一些基础知识

    转几个关于MSSQL数据库基础的文章: sql server系统表详细说明 SQL Server中系统数据库介绍 SQL Server中的角色(服务器级别和数据库级别角色)

  9. 关于mysql的基础知识

    一.数据库的简介 什么是数据库? 数据的仓库,如:在atm的实例中我们创建一个db目录称之为数据库 什么是 MySQL.Oracle.SQLite.Access.MS SQL Server等 ? 他们 ...

随机推荐

  1. STL algorithm算法max,max_elements(33)

    max原型: std::max C++98 C++11 C++14 default (1) template <class T> const T& max (const T& ...

  2. 教你如何在MySql中导入大小超过2M的数据库文件

    我的个人实践是:phpmyadmin 导出 utf-8 的 insert 模式的 abc.sql ftp abc.sql 到服务器 ssh 到服务器 mysql -u abc -p use KKK(数 ...

  3. ADO.NET 对数据操作 以及如何通过C# 事务批量导入数据

    ADO.NET 对数据操作 以及如何通过C# 事务批量导入数据   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ...

  4. 基于TCP应用协议/端口

  5. appium部分api

    转自:http://www.aichengxu.com/view/41510 使用的语言是java,appium的版本是1.3.4,java-client的版本是java-client-2.1.0,建 ...

  6. liberOJ#6006. 「网络流 24 题」试题库 网络流, 输出方案

    #6006. 「网络流 24 题」试题库     题目描述 假设一个试题库中有 n nn 道试题.每道试题都标明了所属类别.同一道题可能有多个类别属性.现要从题库中抽取 m mm 道题组成试卷.并要求 ...

  7. java线程阻塞(sleep,suspend,resume,yield,wait,notify)

    为了解决对共享存储区的访问冲突,Java 引入了同步机制,现在让我们来考察多个线程对共享资源的访问,显然同步机制已经不够了,因为在任意时刻所要求的资源不一定已经准备好了被访问,反过来,同一时刻准备好了 ...

  8. armel、armhf和arm64

    1 这些名词是什么的缩写 1.1 armel 是arm eabi little endian的缩写.eabi是软浮点二进制接口,这里的e是embeded,是对于嵌入式设备而言. 1.2 armhf 是 ...

  9. SAP图标- ICON

  10. 20170223 遇到自建表里面相同key值数据不唯一

     我怎么发现这个表里 key值相同数据不唯一, 这两条看起来是完全相同的, 其实排序不能能合并已经说明问题.