数据库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】 视图名;
数据库MySQL技术-基础知识的更多相关文章
- Cisco路由技术基础知识详解
第一部分 请写出568A的线序(接触网络第一天就应该会的,只要你掐过,想都能想出来) .网卡MAC地址长度是( )个二进制位(16进制与2进制的换算关系,只是换种方式问,不用你拿笔去算) A.12 ...
- Mysql之基础知识笔记
Mysql数据库基础知识个人笔记 连接本地数据库: mysql -h localhost -u root -p 回车输入数据库密码 数据库的基础操作: 查看当前所有的数据库:show database ...
- MySQL:基础知识
基础知识 一.软件的生命周期 软件定义 软件开发 软件使用与维护 二.数据(Data) 1.定义 描述客观事物特征或性质的某种符号,经过数字化处理存储在计算机 2.数据独立性 物理独立性:指用户的应用 ...
- MySQL学习基础知识1
什么是数据库? 数据库就是存储数据的仓库. 存储方式: 变量 无法永久存储 文件处理,可以永久存储,弊端:文件只能在自己的计算机读写,无法被分享(局域网除外) 数据库分类: 1.关系型数据库 提供某种 ...
- MySQL学习基础知识2
1.基础语句 查 select(* | 字段名 | 四则运算 | 聚合函数) from 表名称; 加上as取别名 as可省略 如:select name, (math+english)/2 total ...
- php缓存技术基础知识
普遍缓存技术 数据缓存:这里所说的数据缓存是指数据库查询缓存,每次访问页面的时候,都会先检测相应的缓存数据是否存在,如果不存在,就连接数据库,得到数据,并把查询结果序列化后保存到文件中,以后同样的查询 ...
- mysql笔记--基础知识
SQL基础 SQL语句的分类: DQL: 数据库查询语句,基本的就是select查询命令,用于查询数据 DML: 数据操纵语句,用于插入,更新,删除数据,即INSERT, UPDATE,DELETE ...
- MSSQL数据库的一些基础知识
转几个关于MSSQL数据库基础的文章: sql server系统表详细说明 SQL Server中系统数据库介绍 SQL Server中的角色(服务器级别和数据库级别角色)
- 关于mysql的基础知识
一.数据库的简介 什么是数据库? 数据的仓库,如:在atm的实例中我们创建一个db目录称之为数据库 什么是 MySQL.Oracle.SQLite.Access.MS SQL Server等 ? 他们 ...
随机推荐
- Python爬虫之简单的图片获取
简单的静态网页的图片获取: import urllib import re import os url = 'http://www.toutiao.com/a6467889113046450702/' ...
- insserv: warning: script 'lampp' missing LSB tags and overrides
https://ubuntuforums.org/showthread.php?t=2327011 1.方法一,编辑rc.loacl脚本 Ubuntu开机之后会执行/etc/rc.local文件中的脚 ...
- setState 是异步的
1.解决 setState 异步问题 // 查询 handleSearch(e){ // 禁止默认行为 e.preventDefault(); // 获取 form 表单的值 this.setStat ...
- 浅谈MySQL压缩协议细节--从源码层面
压缩协议属于mysql通讯协议的一部分,要启用压缩协议传输功能,前提条件客户端和服务端都必须要支持zlib算法,那么,现在有个问题,假如服务端已经默认开启压缩功能,那原生客户端在连接的时候要如何才可启 ...
- Windows7和Ubuntu12.04无法选择系统
Windos7 旗舰版 Ubuntu12.04LTS 64位版本号 硬件挂载两个硬盘 SSD+机械 Windows7和Ubuntu12.04都装在SSD上.眼下先装好了Windows7,打算装Ubun ...
- mysql的binlog详解
什么是binlogbinlog日志用于记录所有更新了数据或者已经潜在更新了数据(例如,没有匹配任何行的一个DELETE)的所有语句.语句以“事件”的形式保存,它描述数据更改. binlog作用因为有了 ...
- Continuous integration: The answer to life, the universe, and everything?
Continuous integration is not always the right answer. Here's why. https://techbeacon.com/continuous ...
- To verify Hadoop releases using GPG
To verify Hadoop releases using GPG http://hadoop.apache.org/releases.html To verify Hadoop releases ...
- 定时任务Timer
一.Timer介绍 java.util.Timer java.util.TimerTask Timer是一个定时器类,通过该类可以为指定的定时任务进行配置.TimerTask类是一个定时任务类,该类实 ...
- JAVA反射改动常量,以及其局限
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/barryhappy/article/details/24442953 问题,以及一个解决方式 今天公 ...